/************************************************************************************************************
Ajax dynamic content
Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com


************************************************************************************************************/

var enableCache = true;
var jsCache = new Array();

var dynamicContent_ajaxObjects = new Array();

function ajax_showContent(divId,ajaxIndex,url,callbackOnComplete)
{
	var targetObj = document.getElementById(divId);
	targetObj.innerHTML = dynamicContent_ajaxObjects[ajaxIndex].response;
	if(enableCache){
		jsCache[url] = 	dynamicContent_ajaxObjects[ajaxIndex].response;
	}
	dynamicContent_ajaxObjects[ajaxIndex] = false;

	ajax_parseJs(targetObj);

	if(callbackOnComplete) {
		executeCallback(callbackOnComplete);
	}
}

function executeCallback(callbackString) {
	if(callbackString.indexOf('(')==-1) {
		callbackString = callbackString + '()';
	}
	try{
		eval(callbackString);
	}catch(e){

	}


}

function ajax_loadContent(divId,url,jour,date,periode,reseau,num_ligne,num_arret,callbackOnComplete)
{
	if (jour==0) {
		jour=document.getElementById('jour').value
	}
	if (periode==0) {
		if (document.getElementById('hiver').checked==true) {
			periode=document.getElementById('hiver').value;
		}else{
			if (document.getElementById('ete').checked==true) {
				periode=document.getElementById('ete').value;
			}else{
				if (document.getElementById('vacances').checked==true) {
					periode=document.getElementById('vacances').value;
				}
			}
		}
	}
	if (reseau==0) {
		if (document.getElementById('urbain').checked==true) {
			reseau=document.getElementById('urbain').value;
			num_ligne=document.getElementById('num_ligne_urbain').value;
		}
		if (document.getElementById('scolaire').checked==true) {
			reseau=document.getElementById('scolaire').value;
			num_ligne=document.getElementById('num_ligne_scolaire').value;
		}
		if (document.getElementById('tybus').checked==true) {
			reseau=document.getElementById('tybus').value;
			num_ligne=document.getElementById('num_ligne_tybus').value;
		}
		if (document.getElementById('ter').checked==true) {
			reseau=document.getElementById('ter').value;
			num_ligne=document.getElementById('num_ligne_ter').value;
		}
	}



	var url="arrets.php?jour="+jour+"&periode="+periode+"&reseau="+reseau+"&num_ligne="+num_ligne+"&num_arret="+num_arret;


	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}

	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = '<img src="vsl/ajax-loader.gif" /> Cr&eacute;ation de la carte. Patientez...';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}




	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();


	ajax_loadContent2('news2','horaires.php',jour,date,periode,reseau,num_ligne,num_arret,callbackOnComplete);
}


function ajax_loadContent2(divId,url,jour,date,periode,reseau,num_ligne,num_arret,callbackOnComplete)
{

	if (jour==0) {
		jour=document.getElementById('jour').value
	}
	if (periode==0) {
		if (document.getElementById('hiver').checked==true) {
			periode=document.getElementById('hiver').value;
		}else{
			if (document.getElementById('ete').checked==true) {
				periode=document.getElementById('ete').value;
			}else{
				if (document.getElementById('vacances').checked==true) {
					periode=document.getElementById('vacances').value;
				}
			}
		}
	}
	if (reseau==0) {
		if (document.getElementById('urbain').checked==true) {
			reseau=document.getElementById('urbain').value;
			num_ligne=document.getElementById('num_ligne_urbain').value;
		}
		if (document.getElementById('scolaire').checked==true) {
			reseau=document.getElementById('scolaire').value;
			num_ligne=document.getElementById('num_ligne_scolaire').value;
		}
		if (document.getElementById('tybus').checked==true) {
			reseau=document.getElementById('tybus').value;
			num_ligne=document.getElementById('num_ligne_tybus').value;
		}
	}

	var url="horaires.php?jour="+jour+"&periode="+periode+"&reseau="+reseau+"&num_ligne="+num_ligne+"&num_arret="+num_arret+"&date="+date;

	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}

	var ajaxIndex = dynamicContent_ajaxObjects.length;
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}


	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

}


function ajax_loadContent_horaire_depart(divId,url,arret_depart,arret_arrivee,sens,table,idjour,code_arret,id_arret_depart,id_arret_arrivee,num_ligne,callbackOnComplete)
{
	//alert(idjour);

	if (arret_depart==0) {
		arret_depart=document.getElementById('depart').value;
	}else{
		document.getElementById('depart').value=arret_depart;
		if (id_arret_depart!=0) {
			document.getElementById('liste_arret_depart').selectedIndex=id_arret_depart;
		}
	}
	if (arret_arrivee==0) {
		arret_arrivee=document.getElementById('arrivee').value;
	}else{
		document.getElementById('arrivee').value=arret_arrivee;
		if (id_arret_arrivee!=0) {
			document.getElementById('liste_arret_arrivee').selectedIndex=id_arret_arrivee;
		}
	}

	var url=url+"?arretdepart="+arret_depart+"&arretarrivee="+arret_arrivee+"&sens="+sens+"&table="+table+"&idjour="+idjour+"&num_ligne="+num_ligne;

	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}

	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = '<img src="vsl/ajax-loader.gif" /> Calcul en cours. Patientez...';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}

	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function
}



function ajax_loadContent_note_aller(arret,table,idjour,code_arret,url_note,divId_note,callbackOnComplete)
{
	var url=url_note+"?arret="+arret+"&table="+table+"&idjour="+idjour+"&code_arret="+code_arret;

	divId=divId_note;

	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}
	var ajaxIndex = dynamicContent_ajaxObjects.length;
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();
	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}
	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

}

function ajax_loadContent_note_retour(arret,table,idjour,code_arret,url_note,divId_note,callbackOnComplete)
{
	var url=url_note+"?arret="+arret+"&table="+table+"&idjour="+idjour+"&code_arret="+code_arret;

	divId=divId_note;

	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}
	var ajaxIndex = dynamicContent_ajaxObjects.length;
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();
	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}
	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

}

function ajax_loadContentTous(divId,url,jour,date,periode,reseau,num_ligne,num_arret,nblignebus,nblignetybus,nbligneter,callbackOnComplete)
{

	num_ligne="";

	if (document.getElementById('urbain').checked==true) {
		reseau=document.getElementById('urbain').value;
		i=0;
		while(i!=nblignebus){
			if (document.getElementById('ligneurbain'+i).checked==true) {
				num_ligne+=document.getElementById('ligneurbain'+i).value+"-";
			}
			i++;
		}
	}
	if (document.getElementById('tybus').checked==true) {

		reseau=document.getElementById('tybus').value;
		i=0;
		while(i!=nblignetybus){
			if (document.getElementById('lignetybus'+i).checked==true) {
				num_ligne+=document.getElementById('lignetybus'+i).value+"-";
			}
			i++;
		}
	}
	if (document.getElementById('ter').checked==true) {
		reseau=document.getElementById('ter').value;
		i=0;
		while(i!=nbligneter){
			if (document.getElementById('ligneter'+i).checked==true) {
				num_ligne+=document.getElementById('ligneter'+i).value+"-";
			}
			i++;
		}
	}

	url="arrets_tous.php?nosplans=afficher&jour="+jour+"&periode="+periode+"&reseau="+reseau+"&num_ligne="+num_ligne+"&num_arret="+num_arret;

	//alert(url);

	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}

	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = '<img src="vsl/ajax-loader.gif" /> Cr&eacute;ation de la carte. Patientez...';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}

	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function

}

function ajax_loadContentMdpOubli(divId,url,callbackOnComplete)
{
	//url += "?action="+action;
	alert(divId);
	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url];
		ajax_parseJs(document.getElementById(divId))
		evaluateCss(document.getElementById(divId))
		if(callbackOnComplete) {
			executeCallback(callbackOnComplete);
		}
		return;
	}

	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = '<img src="vsl/ajax-loader.gif" /> Chargement de la page. Patientez...';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	if(url.indexOf('?')>=0){
		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
		var string = url.substring(url.indexOf('?'));
		url = url.replace(string,'');
		string = string.replace('?','');
		var items = string.split(/&/g);
		for(var no=0;no<items.length;no++){
			var tokens = items[no].split('=');
			if(tokens.length==2){
				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
			}
		}
		url = url.replace(string,'');
	}


	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url,callbackOnComplete); };
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();
}

function ajax_parseJs(obj)
{
	var scriptTags = obj.getElementsByTagName('SCRIPT');
	var string = '';
	var jsCode = '';
	for(var no=0;no<scriptTags.length;no++){
		if(scriptTags[no].src){
	        var head = document.getElementsByTagName("head")[0];
	        var scriptObj = document.createElement("script");

	        scriptObj.setAttribute("type", "text/javascript");
	        scriptObj.setAttribute("src", scriptTags[no].src);
		}else{
			if(navigator.userAgent.toLowerCase().indexOf('opera')>=0){
				jsCode = jsCode + scriptTags[no].text + '\n';
			}
			else
				jsCode = jsCode + scriptTags[no].innerHTML;
		}

	}

	if(jsCode)ajax_installScript(jsCode);
}


function ajax_installScript(script)
{
    if (!script) {
        return;
	}
    if (window.execScript){
		window.execScript(script);
    }else if(window.jQuery && jQuery.browser.safari){
        window.setTimeout(script,0);
    }else{
        window.setTimeout( script, 0 );
    }
}


function evaluateCss(obj)
{
	var cssTags = obj.getElementsByTagName('STYLE');
	var head = document.getElementsByTagName('HEAD')[0];
	for(var no=0;no<cssTags.length;no++){
		head.appendChild(cssTags[no]);
	}
}
