// Java Script
var sledgeState=0;
var sledgeSrcArray = new Array('content01','content02','searchResults','shopPanel','feature01');
var sledgeDesArray = new Array('content01b','content02b','searchResultsb','shopPanelb','feature01b');
function setSledge() {
	/*
<sledge2>
content01b
content02b
searchResultsb
shopPanelb
feature01b
	*/
	/*
	for (var i=0; i<sledgeSrcArray.length; i++) {
		var obj1 = document.getElementById(sledgeSrcArray[i]);
		var obj2 = document.getElementById(sledgeDesArray[i]);
		if (obj1 != null && obj2 !=null) {
			obj2.innerHTML = obj1.innerHTML;
			//obj2.style = obj1.style;
			obj1.innerHTML='';
		}
	}
	*/
}
function createXMLHttpObject() {
	if (sledgeState==0) {
		sledgeState=1;
	} else {
		sledgeState=0;
	}
	if( window.XMLHttpRequest ) {
		xmlhttp = new XMLHttpRequest();
		return true;
	} else {
		return false;
	}
}
function createXMLHttpNewsTickerObject() {
	if( window.XMLHttpRequest ) {
		xmlhttpNewsTicker = new XMLHttpRequest();
		return true;
	} else {
		return false;
	}
}
function loading(s,n) {
//	trace('loading: '+s);
	var obj=document.getElementById('xhrReportImage');
	if (obj!=null) {
		switch(s) {
			case '1':
				obj.src=xhrActiveGraphic;
			break;
			case '0':
				obj.src=xhrStoppedGraphic;
			break;
		}
	} else {
		alert("L'xhrReport n'existe pas!");
	}
}
function getInterface(path,d) {
	if (!path) {
		path=defaultGetInterfacePath;
	}
	if (path.substr(0,1) != "/") {
	path = "/" + path;
	}
	loading('1','Loading');
	div=d;
	pathForTheRecord=path;
	xmlhttp = false;
	createXMLHttpObject();
	if (debugResponse) {
		alert(path+"\n"+d);
		debugResponse=false;
	}
	xmlhttp.open("GET", path,true);
	xmlhttp.onreadystatechange = setAnyInnerHtml;// NOTE: No Brackets on the end or it will NOT work.
	xmlhttp.initialise;
	xmlhttp.send(null);
}
function postInterface(path,params,d) {
	if (!path) {
		path=defaultGetInterfacePath;
	}
	if (path.substr(0,1) != "/") {
	path = "/" + path;
	}
	loading('1','Loading');
	div=d;
	pathForTheRecord=path;
	xmlhttp = false;
	createXMLHttpObject();
	//debugResponse=true;
	if (debugResponse) {
		alert(path+"\n"+d+"\n"+params);
		debugResponse=false;
	}
	xmlhttp.open("POST", path, true);
	xmlhttp.onreadystatechange = evaluateServerResponse;// NOTE: No Brackets on the end or it will NOT work.
	xmlhttp.initialise;
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	xmlhttp.send(params);
}
//getData('shows/index.php')
function getData(ariaFilePath,type,params) {
	if (dataSourcePath) {
		if (!ariaFilePath) {
			ariaFilePath=defaultGetDataPath;
			type='page';
		} 
		if (params && params.substr(0,1)!='&') {
			params="&"+params;
		}
		HistoryAriaFilePath = ariaFilePath;
		HistoryParams = params;
		loading('1','Loading');
		div='evaluate';
		pathForTheRecord=ariaFilePath;
		xmlhttp = false;
		createXMLHttpObject();
		var str = dataSourcePath+"?path="+ariaFilePath+"&sledgeState="+sledgeState+"&type="+type+params;
		setSledge();
	//	alert(str);
	//	trace('getData: '+str);
		xmlhttp.open("GET", str,true);
		xmlhttp.onreadystatechange = setAnyInnerHtml;// NOTE: No Brackets on the end or it will NOT work.
		xmlhttp.initialise;
		xmlhttp.send(null);
	} else {
		trace('no dataSourcePath');	
	}
}
var delayedPath='';
var delayedType='';
var delayedParams='';
var getDataTimeout=null;
function getDataDelayed(ariaFilePath,type,params) {
	//alert('get data delayed: '+ariaFilePath);
	delayedPath=ariaFilePath;
	delayedType=type;
	delayedParams=params;
	getDataTimeout = window.setTimeout('getDataAfterDelay()',1000);
}
function getDataAfterDelay() {
	window.clearTimeout(getDataTimeout);
	getData(delayedPath,delayedType,delayedParams);
}

function postData(ariaFilePath,type,params) {
	if (ariaFilePath) {
	   
	//  alert("Post to: "+ariaFilePath+", type: "+type+", params: "+params);
	    loading('1','Loading');
		div='evaluate';
//		if (ariaFilePath.indexOf("members")!=-1) {
//			var lastChar=ariaFilePath.substr(ariaFilePath.length -1);
//			switch(lastChar) {
//				case "p": ariaFilePath +="?"; break;
//				case "&": ariaFilePath += ''; break;
//				default: ariaFilePath += "&"; break;
//			}
//		}
		pathForTheRecord=ariaFilePath;
		xmlhttp = false;
		createXMLHttpObject();
//		if ((ariaFilePath.indexOf("members")!=-1) || (ariaFilePath.indexOf("app/dataSource")!=-1) ) {
//			if (ariaFilePath.indexOf("conf/app/dataSource")!=-1) {
//				if (ariaFilePath.substr(0,1) != "/") ariaFilePath = "/" + ariaFilePath;
//			}
//			trace("xmlhttp.open(\"POST\","+ariaFilePath+"type="+type+",true);")
//			xmlhttp.open("POST",ariaFilePath,true);
//		} else {
//			trace("xmlhttp.open(\"POST\",\""+dataSourcePath+"?path="+ariaFilePath+"&type="+type+",true);");
//			alert(dataSourcePath+"?path="+ariaFilePath+"&type="+type);
        	xmlhttp.open("POST",dataSourcePath+"?path="+ariaFilePath+"&type="+type,true);
 //       }
        xmlhttp.onreadystatechange = setAnyInnerHtml;// NOTE: No Brackets on the end or it will NOT work.
        xmlhttp.initialise;
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		//debugResponse=true;
        xmlhttp.send(params);
	} else {
		alert("Cannot retrieve interface data. No path!");
	}
}
function postDataToDiv(ariaFilePath,params,targetDiv) {
	if (ariaFilePath) {
	  	div = targetDiv;
		// trace("Post to: "+ariaFilePath+", params: "+params);
	    loading('1','Loading');
		if (ariaFilePath.indexOf("members")!=-1) {
			var lastChar=ariaFilePath.substr(ariaFilePath.length -1);
			switch(lastChar) {
				case "p": /* ariaFilePath +="?"; */ break;
				case "&": ariaFilePath += ''; break;
				default: ariaFilePath += "&"; break;
			}
		}
		pathForTheRecord=ariaFilePath;
		xmlhttp = false;
		createXMLHttpObject();
//		if ((ariaFilePath.indexOf("members")!=-1) || (ariaFilePath.indexOf("app/dataSource")!=-1) ) {
//			if (ariaFilePath.indexOf("conf/app/dataSource")!=-1) {
//				if (ariaFilePath.substr(0,1) != "/") ariaFilePath = "/" + ariaFilePath;
//			}
//			trace("xmlhttp.open(\"POST\","+ariaFilePath+"type="+type+",true);")
//			xmlhttp.open("POST",ariaFilePath,true);
//		} else {
//			trace("xmlhttp.open(\"POST\",\""+dataSourcePath+"?path="+ariaFilePath+"); params: "+params);
        	xmlhttp.open("POST",dataSourcePath+"?path="+ariaFilePath,true);
 //       }
        xmlhttp.onreadystatechange = setAnyInnerHtml;// NOTE: No Brackets on the end or it will NOT work.
        xmlhttp.initialise;
        xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		//debugResponse=true;
        xmlhttp.send(params);
	} else {
		alert("Cannot retrieve interface data. No path!");
	}
}
/*
myString = new String("Go to DevGuru today!")
rExp = /devguru/gi;
newString = new String ("http://www.devguru.com")
results = myString.replace(rExp, newString.link("http://www.devguru.com"))
document.write(results)
*/

// revision after dev at eNbb - Feb 2009
function sendToServer(uri) {
	// Create an XMLHttpRequest and open it.
	// send the request with it's parameter string 
	// the response will be in the form of a string of javascript function calls
	// the response is then evaluated using eval(string)
	if (uri) {
		xmlhttp = null;
		createXMLHttpObject();
		pathForTheRecord="/"+uri;
		uri = "/"+uri;
	//	trace('send to server: '+uri);
		xmlhttp.open("GET", uri, true);
		xmlhttp.onreadystatechange = evaluateServerResponse; // NOTE: No Brackets on the end or it will NOT work.
		xmlhttp.initialise;
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		loading('1','Loading');
		xmlhttp.send(null);
	}
}

function postToServer(params) {
	xmlhttp = null;
	createXMLHttpObject();
	xmlhttp.open("POST", dataSourcePath, true);
	xmlhttp.onreadystatechange = evaluateServerResponse; // note the absence of brackets!
	xmlhttp.initialise;
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	loading('1','Loading');
	xmlhttp.send(params);
}

function evaluateServerResponse() {
	if (xmlhttp.readyState == 4) {
			
			if (xmlhttp.status == 200) {
				
				var xhrString = xmlhttp.responseText;
	
				xhrString = xhrString.replace("\n",'');
				
				if (xhrString.indexOf('<b>Warning</b>:')!=-1 || xhrString.indexOf('<!DOCTYPE HTML PUBLIC')!=-1) {
					note('Server-side error! - header received');
					
					trace(xhrString);
					xhrString="";
	
				}
				if (xhrString.indexOf('<b>Parse error</b>:')!=-1) {
					note('Server-side error! - parse error');
					
					trace(xhrString);
					xhrString="";
				}
				if (xhrString.indexOf('<b>Fatal error</b>:')!=-1) {
					note('Server-side error! - Fatal error');
					
					trace(xhrString);
					xhrString="";
				}
				if (xhrString.indexOf('<b>Notice</b>:')!=-1) {
					note('Server-side Notice');
					
					trace(xhrString);
					xhrString="";
				}
				if (xhrString) {
					
					try {
						eval(xhrString);
					}
					catch(err) {
						note(err);
						trace(xhrString);
					}
					
					loading('0','Complete');
				}
			
		} else {
			if (xmlhttp.status==0) {
			} else {
			alert("Error!\n The server returned the following error code: "+xmlhttp.status+"\nRequested path: "+pathForTheRecord);
			}
		} // end state 200
	} else {
		if (xmlhttp.readyState == 3) {
//			alert("code: "+xmlhttp.readyState+"\nRequested path: "+pathForTheRecord);
		}	
		
//		alert("code: "+xmlhttp.readyState+"\nRequested path: "+pathForTheRecord);
	} // end ready state 4
	loading('0','Complete');
}


// Process xhr responses...

function setAnyInnerHtml() {
	//	alert(xmlhttp.responseText);
		if (xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				if (debugResponse) {
					if (xmlhttp.responseText) {
						alert(xmlhttp.responseText);
						//prompt("Debug",xmlhttp.responseText);
						//populate('content01',xmlhttp.responseText);
					}
					// debugResponse=false;
				}
				loading('0',' ');
				if (div != 'evaluate') { 
					try {populate(div,xmlhttp.responseText);}
					catch(err) {loading('0',' ');}
//					populate('errorReport','');
				} else {
					var xhrString = xmlhttp.responseText;
					var aarghString = '<input type="hidden" name="PHPSESSID" value="';
					var eeerghString = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"';
					var fixedArghString = '<input type=\\"hidden\\" name=\\"PHPSESSID\\" value=\\"';
					if (xhrString.indexOf(aarghString) != -1) {
					//	alert(" aargh string found! ");
						var startPos = -1;
						startPos = xhrString.indexOf(aarghString);
						startPos += aarghString.length;
						//alert('startPos: '+startPos);
						if (startPos>-1) {
							var phpSessionStringLength = 32;
							var addSlashAt = startPos + phpSessionStringLength;
							var a = xhrString.substr(0,addSlashAt);
							var b = xhrString.substr(addSlashAt);
							xhrString = a + "\\" + b;
							xhrString = xhrString.replace(aarghString, fixedArghString);
						}
					}
					if (xhrString.indexOf(eeerghString) != -1) {
						//populate('errorReport','An error was reported by the Server - sorry!');
						populate('errorReport','An error was reported by the Server - sorry!');
					}
					xhrString = xhrString.replace("\n",'');
					if (xhrString.indexOf('<b>Warning</b>:')!=-1 || xhrString.indexOf('<!DOCTYPE HTML PUBLIC')!=-1) {
						note('Server-side error! - header received');
						
						trace(xhrString);
						xhrString="";
			//			alert('server-side error! \n'+xhrString);
					}
					if (xhrString.indexOf('<b>Parse error</b>:')!=-1) {
						note('Server-side error! - parse error');
						
						trace(xhrString);
						xhrString="";
					}
					if (xhrString.indexOf('<b>Fatal error</b>:')!=-1) {
						note('Server-side error! - Fatal error');
						
						trace(xhrString);
						xhrString="";
					}
					if (xhrString.indexOf('<b>Notice</b>:')!=-1) {
						note('Server-side Notice');
						
						trace(xhrString);
						xhrString="";
					}
					if (xhrString) {
						try {
							eval(xhrString);
						}
						catch(err) {
							
							var jsCommandArray = xhrString.split("); ");
							for (var i=0; i<jsCommandArray.length; i++) {
								if (jsCommandArray[i]) {
									try {
										eval(jsCommandArray[i]+"); ");
									}
									catch(err) {
										note(err);
										trace(jsCommandArray[i]+"); ");
									}
								}
							}
							
						}
						loading('0',' ');
					}
				}
			} else {
				loading('0',' ');
				if (xmlhttp.status==0) {
		//			populate('errorReport','Connection or Server Response Failure');
				} else {
				alert("Error!\n The server returned the following error code: "+xmlhttp.status+"\nRequested path: "+pathForTheRecord);
				}
			} // end state 200
		} else {
			if (xmlhttp.readyState == 3) {
			}
		} // end ready state 4
		loading('0','Complete');
}
function setNewsTickerInnerHtml() {
	//	alert(xmlhttp.responseText);
		if (xmlhttpNewsTicker.readyState == 4) {
			if (xmlhttpNewsTicker.status == 200) {
				if (debugResponse) {
					if (xmlhttpNewsTicker.responseText) {
						alert(xmlhttpNewsTicker.responseText);
						//prompt("Debug",xmlhttp.responseText);
						//populate('content01',xmlhttp.responseText);
					}
					// debugResponse=false;
				}
				loading('0',' ');
				if (div != 'evaluate') { 
					try {populate(div,xmlhttpNewsTicker.responseText);}
					catch(err) {loading('0',' ');}
//					populate('errorReport','');
				} else {
					var xhrString = xmlhttpNewsTicker.responseText;
					var aarghString = '<input type="hidden" name="PHPSESSID" value="';
					var eeerghString = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"';
					var fixedArghString = '<input type=\\"hidden\\" name=\\"PHPSESSID\\" value=\\"';
					if (xhrString.indexOf(aarghString) != -1) {
					//	alert(" aargh string found! ");
						var startPos = -1;
						startPos = xhrString.indexOf(aarghString);
						startPos += aarghString.length;
						//alert('startPos: '+startPos);
						if (startPos>-1) {
							var phpSessionStringLength = 32;
							var addSlashAt = startPos + phpSessionStringLength;
							var a = xhrString.substr(0,addSlashAt);
							var b = xhrString.substr(addSlashAt);
							xhrString = a + "\\" + b;
							xhrString = xhrString.replace(aarghString, fixedArghString);
						}
					}
					if (xhrString.indexOf(eeerghString) != -1) {
						//populate('errorReport','An error was reported by the Server - sorry!');
						populate('errorReport','An error was reported by the Server - sorry!');
					}
					xhrString = xhrString.replace("\n",'');
					if (xhrString.indexOf('<b>Warning</b>:')!=-1 || xhrString.indexOf('<!DOCTYPE HTML PUBLIC')!=-1) {
						note('Server-side error! - header received');
						
						trace(xhrString);
						xhrString="";
			//			alert('server-side error! \n'+xhrString);
					}
					if (xhrString.indexOf('<b>Parse error</b>:')!=-1) {
						note('Server-side error! - parse error');
						
						trace(xhrString);
						xhrString="";
					}
					if (xhrString.indexOf('<b>Fatal error</b>:')!=-1) {
						note('Server-side error! - Fatal error');
						
						trace(xhrString);
						xhrString="";
					}
					if (xhrString.indexOf('<b>Notice</b>:')!=-1) {
						note('Server-side Notice');
						
						trace(xhrString);
						xhrString="";
					}
		
					if (xhrString) {
						try {
							eval(xhrString);
						}
						catch(err) {
							note(err);
							trace(xhrString);
						}
						loading('0','Complete');
					}
				}
			} else {
				loading('0',' ');
				if (xmlhttpNewsTicker.status==0) {
		//			populate('errorReport','Connection or Server Response Failure');
				} else {
				alert("Error!\n The server returned the following error code: "+xmlhttpNewsTicker.status+"\nRequested path: "+pathForTheRecord);
				}
			} // end state 200
		} else {
			if (xmlhttpNewsTicker.readyState == 3) {
			}
		} // end ready state 4
		loading('0','Complete');
}
var traceCalls=0;
function trace(t) {
	var traceOutputDiv = document.getElementById('debugDiv');
	if (!traceOutputDiv) {
		var c1 = document.getElementById('content01');
		if (c1 != null) {
			var str = c1.innerHTML;
			str += "<div id=\"debugDiv\"></div>";
			c1.innerHTML = str;
			traceOutputDiv = document.getElementById('debugDiv');
			if (!traceOutputDiv) {
				alert('trace failed');
			}
		}
	}
	var traceString = traceOutputDiv.innerHTML;
	if (traceCalls>50) {
		var strArray = traceString.split('|');
		strArray.shift();
		traceString = strArray.join('|');
	}
	if (traceOutputDiv != null) {
		traceOutputDiv.innerHTML = traceString+'<br/>| '+t;
		traceCalls++;
		traceOutputDiv.style.width="98%";
		traceOutputDiv.style.height="98%";
		traceOutputDiv.style.overflow="auto";
		traceOutputDiv.style.backgroundColor="#FFFFFF";
	}
	
}
function note(t) {
	var obj=document.getElementById('breadcrumb');
	if (obj != null) {
		obj.innerHTML = t;
	}
}