/*-
ac-08-06-2010 Ajoute @tn
-*/
/* initialisation du PATH_HTTP_XML pour pouvoir travailler en local
sinon problème de cross domain */
var url = window.location.hostname;
if(url == "arkiane7" || url == "arkiane9"){
	PATH_HTTP_XML	= "http://"+url+"/_resaarkianecom/";
} else {
	PATH_HTTP_XML	= "http://"+url+"/";
}


 var jXML = { //méthode pour compter des noeuds dans un fichier xml (récupérer sur le web)
 	getCount: function(xml,nodes) {
 		var response = {};
 		for (var node in nodes) {
 			//alert($(nodes[node],xml).size());
 			response[node] = $(nodes[node],xml).size();
 		}
 		return response;
 	}
 };

var arkDebug = false;
/**
| Fonction	: callxml(qry,select,boolean,img)
| Objet		: Appel un flux xml.
| Arguments	:
|	- qry (string) : Nom de la procédure à invoquer.
|	- select (Object) : Objet select à remplir.
|	- boolean : True = appel flux avec paramètres à null SAUF date arrivée.
|	- img (Object) : image à afficher pendant chargement du flux.
|	- lg (string) : Langue FR/GB.
*/
function callxml(qry,select,boolean,img,lg) {
	if(boolean && qry=="wpersc"){ //on bloque le btn dispo le temps du chgt
		$("#b_next").attr("disabled","disabled");
	}
	if(img!=""){img.show();}
	//on récupère la date d'arrivée
	var dd = $("#jsCDate1").val();
	//on ajoute des slash à cette date
	var dateslash = new Date(dd);// dd.substring(2,4)+"/"+dd.substring(0,2)+"/"+dd.substring(4,10);
	//on convertit la date en objet Date
	//dateslash = new Date(dd.substring(4,10),dd.substring(0,2)-1,dd.substring(2,4));
	//on ajoute le nombre de jour souhaité pour avoir la date de départ
	var duree = "";
	var days ="";
	if($("#cs").val()=="N"){
		duree = $("#opti_fin").val();
		switch(duree){
			case '1': days = 7;break;
			case '2': days = 14;break;
			case '3': days = 21;break;
			case '4': days = 28;break;
			default: days = 7;
		}
	} else {
		days = $("#jsCDate1 option:selected").attr("title");
		$("#opti_fin option:selected").val(days);
	}

	var df = dateadd("d", days, dateslash);
	//on récupère jour/mois/année de l'objet
	day   = Cadrage_droite( df.getDate()  + "" , 2);
	month = Cadrage_droite( df.getMonth()+1 + "" , 2);
	year  = df.getFullYear();
	//on construit la date de départ sous la forme mois/jour/année
	df = month + day + year;
	dd = dd.replace(/\//g,"");
	//reste des paramètres du flux
	var pe = $("#pers").val();		//personne
	var bm = $("#budget_max").val();//budget
	var cr = $("#lieu").val();		//crit1
	var tl = $("#tlot").val();		//tlot
	var ct = "";					//crit txt
	if(pe == null){pe="";}
	if(bm == null){bm="";}
	if(cr == null){cr="";}
	if(tl == null){tl="";}
	if(ct == null){ct="";}
	//changement de date d'arrivée on remet tous les paramètres à null
	if(boolean){
		pe="";
		bm="";
		cr="";
		tl="";
		ct="";
	}
	if(days<7){
		ct = "COURSEJ";
	}
	//on garde en mémoire la valeur sur laquelle était le select
	var selectedval = "";
	switch(qry){
		case "wpersc": selectedval=pe; break;
		case "wbudgc": selectedval=bm; break;
		case "wtlotc": selectedval=tl; break;
		case "wcritc": selectedval=cr; break;
		case "wctxtc": selectedval=ct; break;
	}

	//alert(PATH_HTTP_XML+"xml/xml_v0_header.asp?app=LS&clt=85&top=0&qry="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'");


	$.get(
		//flux xml à appeler avec ses paramètres
		PATH_HTTP_XML+"xml/xml_v0_header.asp?CLT=85&TOP=0&QRY="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'",
		function(xml){
			if ( arkDebug ) {
				$("#arkDebug").css("display", "block");
				$("#arkDebugInfo").append("<br /> "+PATH_HTTP_XML+"xml/xml_v0_header.asp?CLT=85&TOP=0&QRY="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'");
			}
			//alert(PATH_HTTP_XML+"xml/xml_v0_header.asp?app=LS&clt=85&top=0&qry="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'");
			//on vide le select
			select.html('');
			//on compte le nombre d'occurence qui ont des noeuds parents
			var count = jXML.getCount(xml,{"line":"*:parent"});
			//on divise par 4 cette valeur pour avoir le nombre final d'<option/> à insérer
			count["line"] = count["line"]/4;
			count["line"] = Math.round(count["line"],0);
			var i=0;
			var crit_val;
			var crit_lib;
			var crit_nb;
			var selected;
			var br = "";
			for(i=1;i<=count["line"];i++){
				//pour chaque "line1,line2..." on récupère valeur/libellé/nombre et on insère l <option/> dans le select
				$(xml).find('LINE'+i).each(function(){
					selected = "";
					crit_val = $(this).find('crit_val').text();
					crit_lib = $(this).find('crit_lib').text();
					crit_nb = $(this).find('crit_nb').text();
					if(crit_nb=="null"){crit_nb = 0}
					if(qry=="wctxtc"){/**SPEC CRITERE TXT**/
						if(i!=count["line"]){br="<br />";}
						if(crit_val==selectedval){selected="checked"}
						select.append("<input name=\"crit_txt\"	id=\"crit_"+i+"\" class=\"aa\" type=\"checkbox\" value=\""+crit_val+" "+selected+"\">&nbsp;"+crit_lib+" ("+crit_nb+")"+br);
						select.append("<input type=\"hidden\" name=\"val_crit_txt\" value=\""+crit_val+"\">");
						select.append("<input type=\"hidden\" name=\"lib_crit_txt\" value=\""+crit_lib+"\">");
					} else {
						if(crit_val==selectedval){selected="selected";}
						select.append("<option value="+crit_val+" "+selected+">"+crit_lib+" ("+crit_nb+")</option>");
					}
				});
			}
			if(img!=""){img.hide();}
			if(boolean && qry=="wtlotc"){ //on bloque le btn dispo le temps du chgt
				$("#b_next").removeAttr("disabled");
			}
		},
		//type de données qu'on traite
		"xml"
	);
}
/**
| Fonction	: callxmlReturn(qry,select,dd,value,img)
| Objet		: Appel un flux xml quand on vient de ls_b_dispo pour remettre le flux sur sa valeur(value).
| Arguments	:
|	- qry (string) : Nom de la procédure à invoquer.
|	- select (Object) : Objet select à remplir.
|	- dd (string) : date début.
|	- pe (string) : personne.
|	- cr (string) : lieu.
|	- tl (string) : tlot.
|	- bm (string) : budget.
|	- value (string) : Valeur en "selected".
|	- img (Object) : image à afficher pendant chargement du flux.
|	- lg (string) : Langue FR/GB.
*/
function callxmlReturn(qry,select,dd,pe,cr,tl,bm,value,img,lg) {
	if(qry=="wpersc"){ //on bloque le btn dispo le temps du chgt
		$("#b_next").attr("disabled","disabled");
	}
	if(img!=""){img.show();}
	//on ajoute des slash à cette date
	var dateslash = dd.substring(2,4)+"/"+dd.substring(0,2)+"/"+dd.substring(4,10);
	//on convertit la date en objet Date
	dateslash = new Date(dd.substring(4,10),dd.substring(0,2)-1,dd.substring(2,4));
	//on ajoute le nombre de jour souhaité pour avoir la date de départ
	var duree = "";
	var days ="";
	if($("#cs").val()=="N"){
		duree = $("#opti_fin").val();
		switch(duree){
			case '1': days = 7;break;
			case '2': days = 14;break;
			case '3': days = 21;break;
			case '4': days = 28;break;
			default: days = 7;
		}
	} else {
		days = $("#jsCDate1 option:selected").attr("title");
		$("#opti_fin option:selected").val(days);
	}
	var ct="";
	if(days<7){
		ct = "COURSEJ";
	}
	var df = dateadd("d", days, dateslash);
	//on récupère jour/mois/année de l objet
	day   = Cadrage_droite( df.getDate()  + "" , 2);
	month = Cadrage_droite( df.getMonth()+1 + "" , 2);
	year  = df.getFullYear();
	//on construit la date de départ sous la forme mois/jour/année
	df = month + day + year;

	//alert(PATH_HTTP_XML+"xml/xml_v0_header.asp?CLT=85&TOP=0&QRY="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'");

	$.get(
		//flux xml à appeler avec ses paramètres
		PATH_HTTP_XML+"xml/xml_v0_header.asp?CLT=85&TOP=0&QRY="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'",
		function(xml){
			if ( arkDebug ) {
				$("#arkDebug").css("display", "block");
				$("#arkDebugInfo").append("<br /> "+PATH_HTTP_XML+"xml/xml_v0_header.asp?CLT=85&TOP=0&QRY="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'");
			}
			//alert(PATH_HTTP_XML+"xml/xml_v0_header.asp?CLT=85&TOP=0&QRY="+qry+"@tn='"+_tn+"',@dd='"+dd+"',@df='"+df+"',@pe='"+pe+"',@cr='"+cr+"',@tl='"+tl+"',@bm='"+bm+"',@ct='"+ct+"',@top_id='2HPLU',@lg='"+lg+"'");
			//on vide le select
			select.html('');
			//on compte le nombre d'occurence qui ont des noeuds parents
			var count = jXML.getCount(xml,{"line":"*:parent"});
			//on divise par 4 cette valeur pour avoir le nombre final d'<option/> à insérer
			count["line"] = count["line"]/4;
			count["line"] = Math.round(count["line"],0);
			var i=0;
			var selected;
			var crit_val;
			var crit_lib;
			var crit_nb;
			for(i=1;i<=count["line"];i++){
				//pour chaque "line1,line2..." on récupère valeur/libellé/nombre et on insère l'<option/> dans le select
				$(xml).find('LINE'+i).each(function(){
					selected = "";
					crit_val = $(this).find('crit_val').text();
					crit_lib = $(this).find('crit_lib').text();
					crit_nb = $(this).find('crit_nb').text();
					if(crit_nb=="null"){crit_nb = 0}
					if(crit_val==value){selected="selected"}
					select.append("<option value="+crit_val+" "+selected+">"+crit_lib+" ("+crit_nb+")</option>");
				});
			}
			if(img!=""){img.hide();}
			if(qry=="wtlotc"){ //on débloque le btn dispo le temps du chgt
				$("#b_next").removeAttr("disabled");

				$("tr.advanced").fadeIn("def"); // -- affiche tous les tr de classe "advanced"
				callxml("wcritc",$("#lieu"),false,$("#loadingLieu"),lg);
				callxml("wctxtc",$("#ctxt"),false,"",lg);
			}
		},
		//type de données qu'on traite
		"xml"
	);
}
/**
| Fonction	: dateadd(unite,jour,date)
| Objet		: Ajoute une valeur à une date.
| Arguments	:
|	- unite (string) : Unité à ajouter.
|	- jour (int) : Nombre de jour à ajouter.
|	- date (Date) : Date à laquelle on ajoute les jours.
*/
function dateadd(unite,jour,date) {
	var d = Date.DateAdd(unite, jour, date);
	//alert(d);
	return d;
}

/**
| Fonction	: callxmlDate(qry,select,img,cs,lg)
| Objet		: Appel un flux xml date.
| Arguments	:
|	- qry (string) : Nom de la procédure à invoquer.
|	- select (Object) : Objet select à remplir.
|	- img (Object) : image à afficher pendant chargement du flux.
|	- cs (string) : Court séjour O/N.
|	- lg (string) : Langue FR/GB.
| Retour	:
|	- tabRetour Array("Key"=>"Value") : Paramètres nécessaires à la création du calendar.
*/
function callxmlDate(qry,select,img,cs,lg) {
	//alert('3');
	var tabRetour = new Array();
	var textStatus; //retour du flux success ou vide
	if(img!=""){img.show();}

	//alert(PATH_HTTP_XML+"xml/xml_v0_header.asp?app=LS&clt=85&top=0&qry="+qry+"@top_id='',@cs='"+cs+"',@lg='"+lg+"'");

	$.ajax({
		type: "GET",// -- ac-09-09-09
		//data: {}, // -- POST
		url: PATH_HTTP_XML+"xml/xml_v0_header.asp?app=LS&clt=85&top=0&qry="+qry+"@top_id='',@cs='"+cs+"',@lg='"+lg+"'",
  		async: false,
		success: function(xml){
			//alert(PATH_HTTP_XML+"xml/xml_v0_header.asp?app=LS&clt=85&top=0&qry="+qry+"@top_id='',@cs='"+cs+"',@lg='"+lg+"'");
			//on vide le select
			select.html('');
			//on compte le nombre d'occurence qui ont des noeuds parents
			var count = jXML.getCount(xml,{"line":"*:parent"});
			if(cs=="N"){
				//on divise par 6 cette valeur pour avoir le nombre final d'<option/> à insérer
				count["line"] = count["line"]/6;
				count["line"] = Math.round(count["line"],0);
				var i=0;
				var as_min="";
				var dateDeb;
				var dateFin;
				var dateDebLong;
				var dateFinLong;
				var today;
				for(i=1;i<=count["line"];i++){
					//pour chaque "line1,line2..." on récupère dateDeb/dateFin/dateDebLong/dateFinLong/today et on insère l'<option/> dans le select
					$(xml).find('LINE'+i).each(function(){
						dateDeb = $(this).find('dateDeb').text();
						dateFin = $(this).find('dateFin').text();
						dateDebLong = $(this).find('dateDebLong').text();
						dateFinLong = $(this).find('dateFinLong').text();
						today = $(this).find('today').text();
						if(i==1){as_min = dateDeb;}
						select.append("<option value="+dateDeb+">"+dateDebLong+"</option>");
					});
				}
				var as_max = "";
				as_max = dateDeb;
				if(img!=""){img.hide();}
			} else {
				//on divise par 5 cette valeur pour avoir le nombre final d'<option/> à insérer
				count["line"] = count["line"]/5;
				count["line"] = Math.round(count["line"],0);
				var i=0;
				var date_court;
				var date_long;
				var dureecs;
				var today;
				var as_min="";;
				for(i=1;i<=count["line"];i++){
					//pour chaque "line1,line2..." on récupère valeur/libellé/nombre et on insère l'<option/> dans le select
					$(xml).find('LINE'+i).each(function(){
						date_court = $(this).find('date_court').text();
						date_long = $(this).find('date_long').text();
						dureecs = $(this).find('opti_fin').text();
						today = $(this).find('today').text();
						if(i==1){as_min = date_court;}
						select.append("<option value="+date_court+" title="+dureecs+">"+date_long+"</option>");
					});
				}
				var as_max = date_court;
				if(img!=""){img.hide();}
			}
			tabRetour["as_today"] = today;
			tabRetour["as_min"] = as_min;
			tabRetour["as_max"] = as_max;

		}
	});
	return tabRetour;
}

/**
| Fonction	: showCalendar(lg)
| Objet		: Affiche le calendar correspondant au type de séjour.
| Arguments	:
|	- lg (string) : Langue FR/GB.
*/
function showCalendar(lg){
	var tabParam = new Array(); //tableau associatif qui va récupérer les valeurs de retour du callxmlDate
	var as_modele;
	var as_first;
	if($("#cs").val()=="O"){
		tabParam = callxmlDate("init_date_cal",$("#jsCDate1"),$("#loadingDate"),"O",lg); //on remplit le select des dates
		as_modele	= ",1,,,,5,";
		as_first	= "1";
	} else {
		tabParam = callxmlDate("init_date_cal",$("#jsCDate1"),$("#loadingDate"),"N",lg); //on remplit le select des dates
		as_modele	= ",,,,,,6";
		as_first	= "6";
	}
	/****************************************************************
	| //!\\ SPEC jsCalendar !!!!
	****************************************************************/
	// -- Arguments
	// -- makeCalendar(as_modele, as_name, as_first, as_today, as_min, as_max, as_trigger, as_input, as_position)

	// -- Nom des inputs pour affichage de la date
	// -- Au moins UN est requis. Modèle de nom : "jsCDateX" où X est un numéro unique 1, 2...
	var as_input1 = "jsCDate1";
	//as_input2 = "jsCDate2";

	// -- Nom des triggers
	// -- Au moins UN est requis. Modèle de nom : "jsCTrigX" où X est un numéro unique 1, 2...
	var as_trigger1 = "jsCTrig1";
	//as_trigger2 = "jsCTrig2";
	/***************************************************************/

	// -- Paramètres calendrier ( voir http://arkiane9/wiki/ow.asp?SitesWEB%5FJsCalendar )
	var as_name		= "Deb";
	var as_today	= tabParam["as_today"];
	var as_min		= tabParam["as_min"];
	var as_max		= tabParam["as_max"];
	var as_position = "Bl";
	var as_handler	= "$(\"#jsCDate1\").trigger('change');";
	//on construit le calendar
	$("#scriptCal").html(makeCalendar(as_modele, as_name, as_first, as_today, as_min, as_max, as_trigger1, as_input1, as_position, as_handler, lg));
}