var xmlRequest = {

	 buildQuery : function (query) {
		 var data="";
		 var first="?";
		 for (i in query) {
			 data+=first+encodeURIComponent(i)+"="+encodeURIComponent(query[i]);
			 first="&";
		 }
		 return data;
	 },
		 
	 init: function(url, method, params, processFunc) {
	 
			 xmlRequest.requestWrapper(url, method, params, processFunc);
	 },
	 
	 requestWrapper: function(url, method, params, processFunc) {
		 requestObject = makeRequestObject();
		 if(method == 'POST')
		 {
		 	data = xmlRequest.buildQuery(params).substr(1);
		 	requestObject.open("POST", url, true);
		 
		 	//Send the proper header information along with the request for POST
		 	requestObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		 	requestObject.setRequestHeader("Content-length", params.length);
		 	requestObject.setRequestHeader("Connection", "close");
			 if(processFunc)requestObject.onreadystatechange = processFunc;
			 else requestObject.onreadystatechange = processRequest;
			 requestObject.send(data);

		 }
		 else
		 {
			 if(processFunc)requestObject.onreadystatechange = processFunc;
			 else requestObject.onreadystatechange = processRequest;
			 requestObject.open("GET", url, true);
			 requestObject.send(null);
		 
		 }
			 function makeRequestObject() {
			 //This function forks for IE and returns the XMLHttpRequest object.
					 if (window.XMLHttpRequest) {
							 return new XMLHttpRequest();
					 } else if (window.ActiveXObject) {
							 return new ActiveXObject("Microsoft.XMLHTTP");
					 }
					 return false;
			 };
			 
			 function processRequest() {
						 if (requestObject.readyState == 4) {
							 if (requestObject.status == 200) {
								 //processStat.updateStatus(requestObject.responseText)
							 }
					 }
			 
			 };
	 }
	 
			 
}

//SlideShow functions
var SlideShow = {
	pos:-1,
	init: function(elem, array){
		var aImage = document.createElement('img');
		var bImage = document.createElement('img');
		
		elem.appendChild(aImage);
		elem.appendChild(bImage);
		Element.setOpacity(aImage,0)
		Element.setOpacity(bImage,0)
		SlideShow.next(aImage, bImage, array, 10000)
		
	},
	next: function(aImage, bImage, array, delay){

		arrayVal = array;
		imageIn = aImage;
		imageOut = bImage;
		SlideShow.pos==(array.length-1) ? SlideShow.pos=0:SlideShow.pos++;
		imageIn.onload = function(){
			Element.setZ(imageIn,10);
			Element.setZ(imageOut,5);
			Effect.fadeIn(imageIn,100,0);
			var nextTime = window.setTimeout('SlideShow.next(imageOut,imageIn,arrayVal,'+delay+')',delay);
		}
		imageIn.src = array[SlideShow.pos];	

	}


}

var Element = {
	setOpacity : function(elem,opacity){
		opacity = (opacity == 100)?99.999:opacity;
		elem.style.filter = "alpha(opacity:"+opacity+")"; 	// IE/Win
		elem.style.KHTMLOpacity = opacity/100; 	// Safari<1.2, Konqueror
		elem.style.MozOpacity = opacity/100; // Older Mozilla and Firefox
		elem.style.opacity = opacity/100;	// Safari 1.2, newer Firefox and Mozilla, CSS3

	},

	setZ : function(elem,val){
		elem.style.zIndex = val;

	}
}


//Effects
var Effect = {
	time: 0,
	duration:20,
	colors: null,
	current:0,
	fadeIn: function(image, oMax, opacity){
		imaged = image;
		if(opacity++ < oMax)
		{
			Element.setOpacity(imaged,opacity++);
			var fadeTime = window.setTimeout('Effect.fadeIn(imaged,'+oMax+','+opacity+')', 50);
		}
	},
	slideInit:function(){
		navi = document.getElementById('nav');
		if(navi)
		{
		navi= navi.firstChild;
		navBack = navi.lastChild;
		Element.setOpacity(navBack,0);
		Effect._return();
		for(i=0;i<(navi.childNodes.length-1);i++){
			navi.childNodes[i].onmouseover = navi.childNodes[i].firstChild.onfocus = function(e) {
			Effect.time = 0;
			var pos = 0;
			var elem = this.nodeName == "LI" ? this : this.parentNode;
			while(elem.previousSibling) {
				elem = elem.previousSibling;
				if(elem.tagName && elem.tagName == "LI"){
					pos++;
				}
			}
			Element.setOpacity(navBack,80);
			Effect._move(navBack,pos);
		}
		}
		}
	},
	_move:function(elem, pos){

		dest = document.getElementById('nav').firstChild.childNodes[pos];
		
		if(Effect.time++ < Effect.duration){ 
			var x = Effect.ease(Effect.time,elem.offsetLeft+2,dest.offsetLeft-elem.offsetLeft,Effect.duration);
			var w = Effect.ease(Effect.time,elem.offsetWidth-5,dest.offsetWidth-elem.offsetWidth,Effect.duration);
			elem.style.left = parseInt(x)+"px";
			elem.style.width = parseInt(w)+"px";
			if(Effect.colors)elem.style.background = Effect.colors[pos];
			thisElem = elem;
			thisPos = pos;
			if(thisElem){
			setTimeout('Effect._move(thisElem, thisPos)', 30);
			}
		}else{
			elem.style.left = (dest.offsetLeft+2)+"px";
			elem.style.width =(dest.offsetWidth-5)+"px";
			elem.style.backgroundPosition = '-'+dest.offsetLeft+'px 0px';			
		}
	
	},
	_return:function(){
		Effect.time = 0;
		navBack = document.getElementById('nav').firstChild.lastChild;
		Effect._move(navBack,Effect.current)
	},
	ease: function(t,b,c,d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	}
}