var moduleCacheBuster = (Math.round(Math.random()*(10000000-1))+1);
var animationValue = 10;
var animationInterval = 20;

function slidingTabsContainer(){
	this.collapseNodeID = 0;		
	this.expandNodeID = 0;
	this.moduleMaxRowHeight = 128;
	this.moduleMinRowHeight = 24;
	this.collapsedRowHeight = 34;
	this.expandedRowHeight = 118;
	this.tzImageObjbArr = new Array();		
	this.heightAdjustObjbArr = new Array();
	this.containerArr = new Array();
	this.idArr = new Array();
	this.idExpansionStatus = new Array();
	this.numIds = 0;
	this.dataUrl = '';
	this.refreshRate = 30000;
	this.objName = '';
	this.xmlHttpReq = false;
	this.iframeObj = false;
	this.domParserAX = false;
	this.parseHandler = new Function();
}
		
function slidingTabsContainer_setObjName(objName){
	this.objName = objName;
}
slidingTabsContainer.prototype.setObjName = slidingTabsContainer_setObjName;

function slidingTabsContainer_setParsingFunction(func){
	this.parseHandler = func;
}
slidingTabsContainer.prototype.setParsingFunction = slidingTabsContainer_setParsingFunction;
		
function slidingTabsContainer_refresh(){
	if (!this.xmlHttpReq && window.ActiveXObject){
		try{
			this.xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				this.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				// do nothing
			}
		}
		try{
			this.domParserAX = new ActiveXObject("Microsoft.XMLDOM");
       		xmlDoc.async = false;
		}catch(e){
			// do nothing
		}			
	}else if (!this.xmlHttpReq && window.XMLHttpRequest){
		this.xmlHttpReq = new XMLHttpRequest();
		if(this.xmlHttpReq.overrideMimeType) {
			this.xmlHttpReq.overrideMimeType("text/xml");
		}
	}
	if(this.xmlHttpReq){
		this.xmlHttpReq.open("GET", this.dataUrl+"?cacheID="+(moduleCacheBuster%30),false);
        this.xmlHttpReq.send("");
		this.handleResponse();
	}else{
		this.iframeObj=document.getElementById(this.objName+'Frame');
		window.frames[this.objName+'Frame'].location.replace(this.dataUrl+"?cacheID="+(moduleCacheBuster%30));
	}
	window.setTimeout(this.objName+'.refresh()',this.refreshRate);
	moduleCacheBuster++;
}
slidingTabsContainer.prototype.refresh = slidingTabsContainer_refresh;
		
function slidingTabsContainer_setDataUrl(url){
	this.dataUrl = url;
}
slidingTabsContainer.prototype.setDataUrl = slidingTabsContainer_setDataUrl;

function slidingTabsContainer_setRefreshRate(time){ // in seconds
	this.refreshRate = time*1000;		
}
slidingTabsContainer.prototype.setRefreshRate = slidingTabsContainer_setRefreshRate;
		
function slidingTabsContainer_addContainer(id,height){
	if (document.getElementById(id)){
		document.getElementById(id).style.height = "24px";
	}
	this.idArr[this.idArr.length] = id;
	this.containerArr[this.containerArr.length] = document.getElementById(id);
	this.heightAdjustObjbArr[this.heightAdjustObjbArr.length] = document.getElementById( id );

	this.tzImageObjbArr[this.tzImageObjbArr.length] = document.getElementById(id +'Image');			
	
	this.idExpansionStatus[this.idExpansionStatus.length] = false;
	this.numIds++;
	if (height){
		this.moduleMaxRowHeight = height;
		this.expandedRowHeight = this.moduleMaxRowHeight;				
	}
}
slidingTabsContainer.prototype.addContainer = slidingTabsContainer_addContainer;

function slidingTabsContainer_zipNode(id){
	for(var i=0;i<this.numIds;i++){

		if(id==this.idArr[i]){
			if(this.idExpansionStatus[i]){
				this.privateCollapseNode( i );
			}else{
				this.privateExpandNode( i );
			}
		}else{
			if(this.idExpansionStatus[i]){
				this.privateCollapseNode( i );
			}
		}
	}
}
slidingTabsContainer.prototype.zipNode = slidingTabsContainer_zipNode;
var slidingTabsClassValue = '';

function slidingTabsContainer_collapseNode(which){
	if (this.expandedRowHeight > this.moduleMinRowHeight ){
		document.getElementById(which.id).style.height = this.expandedRowHeight+"px";	
	}else{
		document.getElementById(which.id).style.height = this.moduleMinRowHeight+"px";			
		window.clearInterval(this.collapseNodeID);
		this.collapseNodeID = 0;
		this.expandedRowHeight = this.moduleMaxRowHeight;
		if(document.getElementById(which.id+'Image') && document.getElementById(which.id+'Image').lowsrc){
			document.getElementById(which.id+'Image').src = 'images/1.gif';
		}
	}
		this.expandedRowHeight = this.expandedRowHeight-animationValue;

}
slidingTabsContainer.prototype.collapseNode = slidingTabsContainer_collapseNode;	
			
function slidingTabsContainer_privateCollapseNode(item){
	if (this.collapseNodeID == 0){
		this.collapseNodeID = window.setInterval(this.objName+".collapseNode("+this.objName+".heightAdjustObjbArr["+item+"])",animationInterval);
		this.idExpansionStatus[item]=false;
		
		slidingTabsClassValue=eval(this.objName+".containerArr[ "+item+" ].className.replace(new RegExp(\"slidingTabExpanded\"), \"slidingTabCollapsed\")");
		slidingTabsClassValue=slidingTabsClassValue.replace(new RegExp(" slidingTabOver"), "");
		
		window.setTimeout(this.objName+".containerArr[ "+item+" ].className='"+slidingTabsClassValue+"';",500);
	}
}	
slidingTabsContainer.prototype.privateCollapseNode = slidingTabsContainer_privateCollapseNode;			

function slidingTabsContainer_expandNode(which){
	if (this.collapsedRowHeight <= this.moduleMaxRowHeight){
		document.getElementById(which.id).style.height = this.collapsedRowHeight+"px";
	} else {
		document.getElementById(which.id).style.height = this.moduleMaxRowHeight+"px";
		window.clearInterval(this.expandNodeID);
		this.expandNodeID = 0;
		this.collapsedRowHeight = this.moduleMinRowHeight;
	}

	this.collapsedRowHeight = this.collapsedRowHeight+animationValue;
}
slidingTabsContainer.prototype.expandNode = slidingTabsContainer_expandNode;

function slidingTabsContainer_privateExpandNode(item){
	var realId = this.idArr[item]+'Image';
	if(document.getElementById(realId))
	{
		if (document.getElementById(realId).lowsrc){
			document.getElementById(realId).src = document.getElementById(realId).lowsrc;
		}
	}
	if (this.expandNodeID == 0){
		this.expandNodeID = window.setInterval(this.objName+".expandNode("+this.objName+".heightAdjustObjbArr["+item+"])",animationInterval);
		this.idExpansionStatus[item] = true;
	
		this.containerArr[ item ].className =  this.containerArr[ item ].className.replace(new RegExp(" slidingTabOver"), "");
		this.containerArr[ item ].className =  this.containerArr[ item ].className.replace(new RegExp("slidingTabCollapsed"), "slidingTabExpanded");
	}
}	
slidingTabsContainer.prototype.privateExpandNode = slidingTabsContainer_privateExpandNode;			

function slidingTabsContainer_handleResponse(node){
	if((this.xmlHttpReq && this.xmlHttpReq.readyState==4) || (this.iframeObj && this.iframeObj.readyState && this.iframeObj.readyState=='complete')|| (this.iframeObj)){
		var docObj= '';
		if(this.iframeObj){
			if(this.iframeObj.contentDocument){
				docObj = this.iframeObj.contentDocument;
			}else{
				docObj = document.frames(this.iframeObj.name).document;
			}
		}else{
			if(this.domParserAX ){
				this.domParserAX.async = false;
        		this.domParserAX.loadXML(this.xmlHttpReq.responseText);
        		docObj = this.domParserAX.documentElement;			
			}else{
				docObj = this.xmlHttpReq.responseXML.documentElement;
			}
		}
		var valueNLs = docObj.getElementsByTagName("value");
		var callObjs = new Array();
		for(var i=0;i<valueNLs.length;i++){
			var callObj = new Object();
			var valueNode = valueNLs.item(i);
			callObj.key = valueNode.getAttribute('key');
			callObj.action = valueNode.getAttribute('type');
			callObj.data = valueNode.getAttribute('contents');
			callObjs[callObjs.length] = callObj;
		}
		this.parseHandler(callObjs,this);
	}
}
slidingTabsContainer.prototype.handleResponse = slidingTabsContainer_handleResponse;

function updateContents(objects, objPtr){
	for(var i=0;i<objects.length;i++){
		var dataObj = objects[i];
		//First the non-dom items.
		if(dataObj.key=='refreshRate'){
			objPtr.setRefreshRate(dataObj.data);
		}else{
			var domObj = document.getElementById(dataObj.key);
			if(domObj){
				if(dataObj.action=='html'){ 
					domObj.innerHTML = dataObj.data;
				}
				if(dataObj.action=='image'){
					if (dataObj.data != ""){
						if(document.getElementById(dataObj.key).src!='images/1.gif')
						{
							document.getElementById(dataObj.key).src = dataObj.data+"?cacheID="+moduleCacheBuster;
							document.getElementById(dataObj.key).style.display = "block";
						}
						if (document.getElementById(dataObj.key).lowsrc){
							document.getElementById(dataObj.key).lowsrc = dataObj.data+"?cacheID="+moduleCacheBuster;
						}
					}else{
						document.getElementById(dataObj.key).style.display = "none";
					}
				}
				if(dataObj.action=='style'){ 
					domObj.className = (domObj.className.indexOf('slidingTabExpanded') > -1) ? "slidingTabExpanded "+dataObj.data : "slidingTabCollapsed "+dataObj.data;
				}
				if(dataObj.action=='link'){
					if(dataObj.data == "" || dataObj.data == "#"){
						domObj.innerHTML = "";
					}else{
						domObj.href = dataObj.data;
					}
				}
			}
		}
	}
}

function changeBackground(which, val){
	switch (val){
		case 1:
			which.className += " slidingTabOver";
			break;
		case 0:
			which.className=which.className.replace(new RegExp(" slidingTabOver\\b"), "");
			break;
	}
}
		
function initSlidingTabs(){
	var slidingTabsContainers = document.getElementById("slidingTabsModule").getElementsByTagName("div");
	for (var i=0; i<slidingTabsContainers.length; i++){
		var slidingTabsContainer = slidingTabsContainers[i];
		
		if(slidingTabsContainer.id.substr(0,15) == "slidingTabsCntr"){
			slidingTabsContainer.onmouseover = function (){changeBackground(this,1); return false;}
			slidingTabsContainer.onmouseout = function (){changeBackground(this,0); return false;}	
		}
		
		if(slidingTabsContainer.id.substr(0,22) == "slidingTabsHeadlineBar"){
			slidingTabsContainer.id = slidingTabsContainer.id.replace(new RegExp("slidingTabsHeadlineBar"), "");
			slidingTabsContainer.onclick = function (){slidingTabsCntr.zipNode("slidingTabsCntr"+this.id); return false;}
		}	
	}
}
