// |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// 
// Coded by Travis Beckham
// http://www.squidfingers.com | http://www.podlob.com
// If want to use this code, feel free to do so, but please leave this message intact.
// If you do remove this, I will hunt you down :)
//
// |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// --- myapi version date: 03/29/02 ------------------------------------------------------
//
// ---------------------------------------------------------------------------------------
// Several functions added or modified by Scott Upton, Uptonic.com
// January 2005
// ---------------------------------------------------------------------------------------

Detect = function(){
	var agent = navigator.userAgent.toLowerCase(); 
	this._mac = agent.indexOf('mac') != -1;
	this._win = !this._mac;
	this._w3c = document.getElementById;
	this._iex = document.all;
	this._ns4 = document.layers;
}
Detect.prototype.getObj = function(name){
	if(this._w3c){
		return document.getElementById(name);
	}else if(this._iex){
		return document.all[name];
	}else if(this._ns4){
		return this.getObjNS4(document,name);
	}
}
Detect.prototype.getObjNS4 = function(obj, name){
	var d = obj.layers;
	var result,temp;
	for(var i=0; i<d.length; i++){
		if(d[i].id == name){
		 	result = d[i];
		}else if(d[i].layers.length){
			var temp = this.getObjNS4(d[i],name);
		}
		if(temp){
			result = temp;
		}
	}
	return result;
}
Detect.prototype.getStyle = function(obj){
	return (this._ns4) ? obj : obj.style;
}
Detect.prototype.getWindowWidth = function(){ // width of the window
	return this._iex ? document.body.clientWidth : window.innerWidth;
}
Detect.prototype.getWindowHeight = function(){ // height of the window
	return this._iex ? document.body.clientHeight : window.innerHeight;
}
Detect.prototype.getScrollTop = function(){ // top scroll position of the window
	return this._iex ? document.body.scrollTop : window.pageYOffset;
}
Detect.prototype.getScrollLeft = function(){ // left scroll position of the window
	return this._iex ? document.body.scrollLeft : window.pageXOffset;
}
Detect.prototype.setScrollTop = function(n){ // set the vertical scroll position of the window
	window.scrollTo(this.getScrollLeft(),n);
}
Detect.prototype.setScrollLeft = function(n){ // set the horizontal scroll position of the window
	window.scrollTo(n,this.getScrollTop());
}
Detect.prototype.setScroll = function(x,y){ // set the x,y scroll position of the window
	window.scrollTo(x,y);
}

// :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

// HTMLobj Constructor

HTMLobj = function(name){
	if(name){
		this._inherit = Detect; this._inherit(name);
		this._id  = name;
		this._el  = this.getObj(this._id);
		this._css = this.getStyle(this._el);
		this._obj = name+'Object'; eval(this._obj+'=this');	
		this._timer = null;
		this._glideRunning = false;
		this._tweenRunning = false;
		this._fadeRunning = true;	// Added by SU, Couloir
		this._randNum = null;		// Added by SU, Couloir
		this._startFade = true;	// Added by SU, Couloir
		return this;
	}
}
HTMLobj.prototype = new Detect();

HTMLobj.prototype.getLeft = function(){ // left position of the element
	return parseInt(this._css.left || 0);
}
HTMLobj.prototype.getTop = function(){ // top position of the element
	return parseInt(this._css.top || 0);
}		
HTMLobj.prototype.getWidth = function(){ // width of the element
	if(this._ns4){
		 return this._el.document.width;
	}else{
		return this._el.offsetWidth;
	}
}
HTMLobj.prototype.getHeight = function(){ // height of the element
	if(this._ns4){
		 return this._el.document.height;
	}else{
		return this._el.offsetHeight;
	}
}
HTMLobj.prototype.getClipWidth = function(){ // clip width of the element
	if(this._ns4){
		 return this._el.clip.width;
	}else{
		return this._el.offsetWidth;
	}
}
HTMLobj.prototype.getClipHeight = function(){ // clip height of the element
	if(this._ns4){
		 return this._el.clip.height;
	}else{
		return this._el.offsetHeight;
	}
}
HTMLobj.prototype.setStyle = function(prop, val){ // change the value of any css property
	if(!this._ns4){
		this._el.style[prop] = val;
		if(this._iex && this._mac){
			this._el.innerHTML = this._el.innerHTML;
		}
	}
}
HTMLobj.prototype.show = function(){ // show the visibility of the element
	this._css.visibility = 'visible';
}
HTMLobj.prototype.hide = function(){ // hide the visibility of the element
	this._css.visibility = 'hidden';
}
HTMLobj.prototype.showhide = function(){ // toggle the visibility of the element
	if(this._css.visibility == 'hidden' || this._css.visibility == 'hide'){
		this._css.visibility = 'visible';
	}else{
		this._css.visibility = 'hidden';
	}
}
HTMLobj.prototype.setInner = function(html){ // change the contents of the element
	if(this._ns4){
		this._el.document.open();
		this._el.document.write(html);
		this._el.document.close();
	}else{
		this._el.innerHTML = html;
	}
}
HTMLobj.prototype.moveTo = function(x,y){ // move the element to a new position
	if(this._ns4){
		this._el.moveTo(x,y);
	}else{
		this._css.left = x;
		this._css.top  = y;
	}
}
HTMLobj.prototype.moveBy = function(x,y){ // move the element to a new position relative to it's current position
	if(this._ns4) {
		this._el.moveBy(x,y);
	}else{
		this._css.left = this.getLeft()+x;
		this._css.top  = this.getTop()+y;
	}
}
HTMLobj.prototype.sizeTo = function(w,h){ // set the size of the element
	if(!this._ns4){
		this._css.width = w+'px';
		this._css.height = h+'px';
	}
}



// -------------------------------------------
// Added by SU, Uptonic.com
// December 2004 - January 2005
// -------------------------------------------
HTMLobj.prototype.setOpacity = function(opacity){ // set opacity of the element
	// Fix for math error in some browsers
	opacity = (opacity == 100)?99.999:opacity;
	// IE/Windows
	this._css.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+opacity+")";
	// Safari < 1.2, Konqueror
	this._css.KHTMLOpacity = opacity/100;	
	// Older Mozilla and Firefox
	this._css.MozOpacity = opacity/100;
	// Safari 1.2, newer Firefox and Mozilla, CSS3
	this._css.opacity = opacity/100;
}
HTMLobj.prototype.fadeInj = function(opacity, change, speed, fadeoutobj){ // gradually increase the opacity of the element
// opacity: starting opacity of element
// change: the size of the increments between steps
// speed: the rate of the animation	
// fadeoutobj: the object that loses opacity as this gains.
	
	if (opacity <= 100){
		this.show();
		this._fadeRunning = true;
		this.setOpacity(opacity);
		fadeoutobj.setOpacity(100-opacity);
		opacity += change;
		setTimeout(this._obj+'.fadeInj('+opacity+','+change+','+speed+',API.PhotoContainerNew)', speed);
	} else {
		this._fadeRunning = false;
		this.setOpacity(100);
		fadeoutobj.setOpacity(0);
		fadeoutobj.hide();
	}
}
HTMLobj.prototype.displayShow = function(){ // display the element as 'block'
	this._css.display = 'block';
}
HTMLobj.prototype.displayHide = function(){ // do not display the element
	this._css.display = 'none';
}
HTMLobj.prototype.setSrc = function(target){ // set the element's source to target
	this._el.src = target;
}
HTMLobj.prototype.setHref = function(target){ // set the element's link to target
	this._el.href = target;
}
HTMLobj.prototype.setInnerHtml = function(content){ // set the element's inner HTML to content
	this._el.innerHTML = content;
}