//Wax Elements
//bsix creative
//author: John Gerdsen
//john@blackshirtmedia.com
//some portions copyright - Lokesh Dhakar - http://www.huddletogether.com
//Date: January 30th, 2009

//
//	Configuration
//
//  Constants

// Height Variables
var h_tweenType = Tween.backEaseInOut;
var h_tweenOverSpeed = .35
var h_tweenInSpeed = .75
var h_tweenProperty = 'height';
var h_begin = 125;
var h_finish = 135;

// Width Variables
var w_tweenType = Tween.backEaseInOut;
var w_tweenOverSpeed = .35
var w_tweenInSpeed = .75
var w_tweenProperty = 'width';
var w_begin = 250;
var w_finish = 270;

// -----------------------------------------------------------------------------------
//
//	Global Variables
//
var imageArray = new Array;
var h_tweenArray = new Array;
var w_tweenArray = new Array;
var idCounter = 1000;

// -----------------------------------------------------------------------------------
//
//	Additional methods for Element added by SU, Couloir
//	- further additions by Lokesh Dhakar (huddletogether.com)
//
Object.extend(Element, {
	getWidth: function(element) {
	   	element = $(element);
	   	return element.offsetWidth; 
	},
	setWidth: function(element,w) {
	   	element = $(element);
    	element.style.width = w +"px";
	},
	setHeight: function(element,h) {
   		element = $(element);
    	element.style.height = h +"px";
	},
	setTop: function(element,t) {
	   	element = $(element);
    	element.style.top = t +"px";
	},
	setLeft: function(element,l) {
	   	element = $(element);
    	element.style.left = l +"px";
	},
	setSrc: function(element,src) {
    	element = $(element);
    	element.src = src; 
	},
	setHref: function(element,href) {
    	element = $(element);
    	element.href = href; 
	},
	setInnerHTML: function(element,content) {
		element = $(element);
		element.innerHTML = content;
	}
});

// -----------------------------------------------------------------------------------

//
//	Extending built-in Array object
//	- array.removeDuplicates()
//	- array.empty()
//
Array.prototype.removeDuplicates = function () {
    for(i = 0; i < this.length; i++){
        for(j = this.length-1; j>i; j--){        
            if(this[i][0] == this[j][0]){
                this.splice(j,1);
            }
        }
    }
}

// -----------------------------------------------------------------------------------

Array.prototype.empty = function () {
	for(i = 0; i <= this.length; i++){
		this.shift();
	}
}


var Wax = Class.create();
Wax.prototype = {
	//Constructor
	initialize: function() {	
		this.updateImageList();
		var objBody = document.getElementsByTagName("body").item(0);
	},
	
	//
	// updateImageList()
	// Loops through anchor tags looking for 'wax' references and applies onclick
	// events to appropriate links. You can rerun after dynamically adding images w/ajax.
	//
	updateImageList: function() {	
		if (!document.getElementsByTagName){ return; }
		var imgs = document.getElementsByTagName('img');
		// loop through all img tags
		for (var i=0; i<imgs.length; i++){
			var img = imgs[i];			
			var relAttribute = String(img.getAttribute('rel'));
			// use the string.match() method to catch 'lightbox' references in the rel attribute
			if (relAttribute.toLowerCase().match('wax')){
				img.setAttribute("id", idCounter);
				h_tweenArray[idCounter] = new Tween(document.getElementById(idCounter).style, h_tweenProperty, h_tweenType, h_begin, h_finish, h_tweenOverSpeed, 'px');
				h_tweenArray[idCounter].stop();
				w_tweenArray[idCounter] = new Tween(document.getElementById(idCounter).style, w_tweenProperty, w_tweenType, w_begin, w_finish, w_tweenOverSpeed, 'px');
				w_tweenArray[idCounter].stop();
				//Apply event handlers for wax relations.
				img.onmouseover = function() {doWax.tweenOver(this.id); return false;}
				img.onmouseout = function() {doWax.tweenOut(this.id); return false;}
				idCounter++;
			}
		}
	},
	tweenOver: function(id){
		h_tweenArray[id].continueTo(h_finish, h_tweenOverSpeed);
		w_tweenArray[id].continueTo(w_finish, w_tweenOverSpeed);
	},
	tweenOut: function(id){
		h_tweenArray[id].continueTo(h_begin, h_tweenInSpeed);
		w_tweenArray[id].continueTo(w_begin, w_tweenInSpeed);
	}
}

function initWax() { doWax = new Wax(); }
Event.observe(window, 'load', initWax, false);