/* everything */
var page = {
	Reduce:function(r) {
		var objarray = document.getElementsByTagName("IMG");
		var len = objarray.length;
  	for (var i = 0; i < len; i++) {
  		var obj = objarray[i];
		  var regex = /[a-z]Close/;
		  var regex2 = /[a-z]Pic/;
		  if (obj.id == "Loading" || obj.id == "ps" || obj.id == "jg"
		  	 || regex.test(obj.id) || regex2.test(obj.id)) { continue; }
		  //
		  var cw = obj.getAttribute("width");
		  var ch = obj.getAttribute("height");
		  //
		  var nw = Math.floor(cw * r);
			var nh = Math.floor(ch * r);
			//
			obj.setAttribute("width", nw);
		  obj.setAttribute("height", nh);
  	}
	var objarray = document.getElementsByTagName("DIV");
	var len = objarray.length;
  	for (var i = 0; i < len; i++) {
  		var obj = objarray[i];
  		if (obj.id != "") {
  			var ntop = Math.floor(cssNoValue(getStyle(obj.id, "top")) * r) + 'px';
				var nleft = Math.floor(cssNoValue(getStyle(obj.id, "left")) * r) + 'px';
				//
				if (ntop != "NaNpx") {
					obj.style.top = ntop;
					obj.style.left =  nleft;
				}
  		}
  	}
	}
}
/* .Shell */
var shell = {
	id:"Shell",
	ocolor:"#100f0d",
	init:function(r) {
		//
		var _id = this.id;
		var cssw = getStyle(_id, 'width');
		var cssh = getStyle(_id, 'height');
		//
		var cw = cssNoValue(cssw);
		var ch = cssNoValue(cssh);
		//
		var nw = Math.floor(cw * r) + "px";
		var nh = Math.floor(ch * r) + "px";
		//
		var obj = document.getElementById(_id);
		obj.style.width = nw;
		obj.style.height = nh;
		//
	},
	Center:function(diff) {
		var _s = document.getElementById(this.id);
		if (diff > 0) { _s.style.top =  diff/2 + "px"; }
	},
	Color:function(_c) {
		$("Body").setStyle({background:_c});
	},
	UnColor:function() {
		$("Body").setStyle({background:this.ocolor});
	}
}
/* ALL THINGS .chip RELATED */
var chip = {
	opened:"",
	isInit:false,
	chipIDs:[],
	multiply:1,
	lineheight:0,
	fontsize:0,
	init:function(r,f,l) {
		this.multiply = r;
		this.fontsize = f;
		this.lineheight = l;
		this.populateIDs();
		this.Reduce();
		this.isInit = true;
	},
	populateIDs:function() {
		var shell = document.getElementById('Shell');
		var len = shell.childNodes.length;
		for (var i = 0; i < len; i++) {
			if (shell.childNodes[i].nodeType == 1) {
				var regex = /chip/;
				if (regex.test(shell.childNodes[i].className)) {
	        this.chipIDs.push(shell.childNodes[i].id);
				}
			}
		}
	},
	Reduce:function() {
  	var len = this.chipIDs.length;
  	for (var i = 0; i < len; i++) {
  		var _id = this.chipIDs[i];
  		var obj = document.getElementById(_id);
  		
			//	resize
			var nwidth = Math.floor(cssNoValue(getStyle(_id, "width")) * this.multiply) + 'px';
			var nheight = Math.floor(cssNoValue(getStyle(_id, "height")) * this.multiply) + 'px'
			//
			obj.style.width = nwidth;
			obj.style.height =  nheight;
  	}
	},
	Remove:function(_id) {
		var len = this.picIDs.length;
		var d = document.getElementById('Shell');
		var d_nested = document.getElementById(_id);
		var throwaway_node = d.removeChild(d_nested); 
	},
	Expand:function(divobj,_w,_h) {
		if (this.opened == divobj.id) { return; }
		if (this.opened != "") { return; this.Close(this.opened); }
		_w = _w * this.multiply;
		_h = _h * this.multiply;
		var cw = divobj.style.width; var ch = divobj.style.height;
		for (var i = 0; i < divobj.childNodes.length; i++) {
			if (divobj.childNodes[i].nodeType == 1) {
				var regex = /chiptitle/;
				if (regex.test(divobj.childNodes[i].className)) {
	        cw = divobj.childNodes[i].firstChild.getAttribute("width");
	        ch = divobj.childNodes[i].firstChild.getAttribute("height");
	        continue;
				}
			}
		}
		EaseTo(divobj.id,cw,_w,"width", "chip.Show('"+divobj.id+"')"); 
		EaseTo(divobj.id,ch,_h,"height");
		this.opened = divobj.id;
		divobj.style.cursor = "auto";
	},
	Close:function(divid) {
		this.Hide(divid);
		var obj = document.getElementById(divid);
		var __w = obj.style.width;
		var __h = obj.style.height;

		var cw = __w.substr(0,__w.length-2);
		var ch = __h.substr(0,__h.length-2);

		var _w;
		var _h;
		for (var i = 0; i < obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeType == 1) {
				var regex = /chiptitle/;
				if (regex.test(obj.childNodes[i].className)) {
	        _w = obj.childNodes[i].firstChild.getAttribute("width");
	        _h = obj.childNodes[i].firstChild.getAttribute("height");
	        break;
				}
			}
		}
		EaseTo(divid,cw,_w,"width");
		EaseTo(divid,ch,_h,"height");
	},
	SingleClose:function(divid) {
		this.Hide(divid);
		var obj = document.getElementById(divid);
		
		var __w = obj.style.width;
		var __h = obj.style.height;

		var cw = __w.substr(0,__w.length-2);
		var ch = __h.substr(0,__h.length-2);

		var _w;
		var _h;
		for (var i = 0; i < obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeType == 1) {
				var regex = /chiptitle/;
				if (regex.test(obj.childNodes[i].className)) {
	        _w = obj.childNodes[i].firstChild.getAttribute("width");
	        _h = obj.childNodes[i].firstChild.getAttribute("height");
	        break;
				}
			}
		}
		EaseTo(divid,cw,_w,"width", "chip.Enable('')");
		EaseTo(divid,ch,_h,"height", "pic.EnableAll()");
	},
	MOver:function(divobj) {
		if (this.opened != "") { return; }
		if (this.opened == divobj.id) { divobj.style.cursor = "auto"; return; }
    divobj.style.cursor = "pointer";
    return;
		var len = this.picIDs.length;
    for (var i = 0; i < len; i++) {
    	var _id = this.picIDs[i];
    	if (_id == divobj.id) { continue; }
    	document.getElementById(_id).style.opacity = 0.3;
    	document.getElementById(_id).style.filter = 'alpha(opacity=30)';	
    }
	},
	MOut:function(divobj) {	
		if (this.opened != "") { return; }
		if (this.opened == divobj.id) { divobj.style.cursor = "pointer"; return; }
    divobj.style.cursor = "auto";
    return;
    var len = this.picIDs.length;
    for (var i = 0; i < len; i++) {
    	var _id = this.picIDs[i];
    	if (_id == divobj.id) { continue; }
    	document.getElementById(_id).style.opacity = 1.0;
    	document.getElementById(_id).style.filter = 'alpha(opacity=100)';	
    }
	},
	Enable:function(divid) {
		this.opened = divid;
	},
	Show:function(divid) {
    var obj = document.getElementById(divid);
    for (var i = 0; i < obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeType == 1) {
				var regex = /Hidden/;
				if (regex.test(obj.childNodes[i].className)) {
    			obj.childNodes[i].style.display = "block";
    			obj.childNodes[i].style.visibility = "visible";
    			break;
    		}
			}
	  }
	},
	Hide:function(divid) {
		var obj = document.getElementById(divid);
    for (var i = 0; i < obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeType == 1) {
				var regex = /Hidden/;
				if (regex.test(obj.childNodes[i].className)) {
    			obj.childNodes[i].style.display = "none";
    			obj.childNodes[i].style.visibility = "hidden";
    			break;
    		}
			}
	  }
	}
};
/*
				ALL THING .pic RELATED 
*/
var pic = {
	opened:"",
	isInit:false,
	picIDs:[],
	multiply:1,
	owidth:0,
	oheight:0,
	color:undefined,
	pic:undefined,
	id:undefined,
	init:function(r) {
		this.multiply = r;
		this.populateIDs();
		this.isInit = true;
	},
	populateIDs:function() {
		var shell = document.getElementById('Shell');
		var len = shell.childNodes.length;
		for (var i = 0; i < len; i++) {
			if (shell.childNodes[i].nodeType == 1) {
				var regex = /pic/;
				if (regex.test(shell.childNodes[i].className)) {
	        			this.picIDs.push(shell.childNodes[i].id);
				}
			}
		}
	},
	Show:function(divid,pic,color) {
		document.location='photo.php?'+'container='+divid+'&pic='+pic+((color!=undefined)?'&color='+color:'');
	},
	Close:function(divid,pic) {
		history.back();
	},
	EnableAll:function() {
		var len = this.picIDs.length;
    for (var i = 0; i < len; i++) {
    	var _id = this.picIDs[i];
    	document.getElementById(_id).style.opacity = 1.0;
    	document.getElementById(_id).style.filter = 'alpha(opacity=100)';	
    }
	}
}

var lookinghard = {
	Show:function(divid) {
		if (chip.opened != "") { return; }
		pic.EnableAll();
		chip.opened = divid;
		overlay.ShowOverlay();
		Display(divid);
		var obj = document.getElementById(divid);
		obj.style.zIndex = 1000;
	},
	Hide:function(divid) {
		overlay.HideOverlay();
		chip.opened = "";
		None(divid);
	}
}

var overlay = {
	id:"Overlay",
	jg:"Joel_Grey",
	alpha:0,
	states:[100,95,0],
	opacityTween:undefined,
	Reduce:function(r) { 
		var obj = document.getElementById(this.jg);
		//
		var nleft = Math.floor(cssNoValue(getStyle(this.jg, "left")) * r) + 'px';
		var ntop = Math.floor(cssNoValue(getStyle(this.jg, "top")) * r) + 'px';
		//
		obj.style.left = nleft;
		obj.style.top = ntop;
	},
	ShowOverlay:function() {
		var obj = document.getElementById(this.id);
		obj.style.display = "block";
	},
	HideOverlay:function() {
		var obj = document.getElementById(this.id);
		obj.style.display = "none";
	},
	Show:function() {
		this.opacityTween = new OpacityTween($(this.id),Tween.regularEaseIn, this.states[0], this.states[1], 1);
		//this.opacityTween.onMotionFinished = function(){alert( 'onMotionFinished' )};
		this.opacityTween.onMotionFinished = function(){
			var ot = new OpacityTween($(overlay.jg),Tween.regularEaseOut, overlay.states[1], overlay.states[0], 1.0);
			ot.start();
			//$(overlay.jg).setStyle({display:'block'});
		}
		this.opacityTween.start();
    	//
    	
	},
	Close:function(pic) {
		//new OpacityTween($(this.id),Tween.backEaseOut,100,0,2);
		this.opacityTween = new OpacityTween($(overlay.id),Tween.regularEaseIn, this.states[1], this.states[2], 1.0);
		this.opacityTween.start();
		
		var ot = new OpacityTween($(overlay.jg),Tween.regularEaseIn, overlay.states[0], overlay.states[2], 0.5);
		ot.onMotionFinished = function(){
			$(overlay.jg).setStyle({display:'none'});
			$(overlay.id).setStyle({display:'none'});
			var to = new OpacityTween($(overlay.id),Tween.regularEaseIn, overlay.states[2], overlay.states[1], 1.0);
			to.start();
		}
		ot.start();
		$(overlay.jg).setStyle({cursor:''});
	}
}

var MOver = function(lObj) {
	lObj.style.cursor = "pointer";
};

var MOut = function(lObj) {
	lObj.style.cursor = "auto";
};

var Display = function(divid) {
	var obj = document.getElementById(divid);
    obj.style.display = "block";
    obj.style.visibility = "visible";
};

var None = function(divid) {
	var obj = document.getElementById(divid);
  obj.style.display = "none";
  obj.style.visibility = "hidden";
};

var EaseTo = function(divid,cur,pos,prop,callback) {
	var cRate = 2;
	var current = cur;
	var obj = document.getElementById(divid);
	var diff = current - pos;
	var newValue = Math.round((current-(diff/cRate)));
	if (Math.abs(newValue-pos) <= 1) {
		obj.style[prop] = pos+"px";
		if (callback != undefined) {
			eval(callback)();
		}
	} else {
		obj.style[prop] = newValue+"px";
		setTimeout("EaseTo('"+divid+"',"+newValue+","+pos+",'"+prop+"',"+callback+")",100); 
	}
};

var cssNoValue = function(val) {
	return val.substr(0,val.length-2);
}

var getStyle = function(el,_s) {
	var obj = document.getElementById(el);
	var _r;
	if (window.getComputedStyle || document.defaultView) {
		_r = document.defaultView.getComputedStyle(obj, null).getPropertyValue(_s);
	} else if (obj.currentStyle) {
		_r = obj.currentStyle[_s];
	}
	return _r;
}

