if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

//convention de nommage sur produit: exa2008-cor-ou-res-1-ou-5-item-part-ou-pas-site-ou-pas
var AlloTktConf={

	OID_5COR:"1",
	OID_1COR:"2",
	OID_5RES:"3",
	OID_1RES:"4",

    ID_SITE_EVENT:1,    
    ID_SITE_CAP:2,
    ID_SITE_BREVET:3,
    ID_SITE_BTS:4,
    ID_SITE_BEP:5,
    ID_SITE_ADMISEXAMEN:6,
    ID_SITE_RESULTATEXAMENEU:7,
    ID_SITE_INFORESULTATSEXAMEN:8,
    ID_SITE_RESULTATSEXAMENS2008:9,
    ID_SITE_PARTNER:10,
    ID_SITE_PARTNER_IFR:11,
    ID_SITE_BAC:12,
        
    correspMin:{ "2":"CAP", "3":"DNB", "4":"BTS", "5":"BEP", "1":"FE", "7":"EU", "9":"09", "12":"BAC" },
    
	//id des offres fe en base
	feOffers:{ "1":{"nom":"5 Corriges", "prix":"9.60"},
				"2":{"nom":"1 Corrige", "prix":"3.60"},
				"3":{"nom":"5 Résultats", "prix":"5.00"},
				"4":{"nom":"1 Résultat", "prix":"3.00" } },

	domain:"alloticket.gibmedia.fr",
		
	URL_SECURE_CB_ACTE : "https://ssl.secure-cb.com", 
    dynSiteUrl:"http://fevent.france-examen.com/",
    urlDst:"http://fevent.france-examen.com/online/validticket?",
        
    /*
    URL_SECURE_CB_ACTE : "http://ssl.localhost",
    dynSiteUrl:"http://www.examsannuel-local.fr/event/",
    urlDst:"http://www.examsannuel-local.fr/event/online/validticket?",
    */
    
	urlMin:"http://www.ulysse-service.fr/synertel/index-gi-res.php",
    urlMin2:"http://www.ulysse-service.fr/synertel/index-fe-thema.php",
    
	urlLetMin:"http://www.orange-letmin.fr/w2stat/index-gi-exa-partenaires.php",
	urlLetMin2:"http://www.orange-letmin.fr/w2stat/index-gi-exa-partenaires.php",

	gibMd5:"78f84acb6bba4daf34bdc9fe41ee0e0e",

	objPartners:{
		"af50342adac753a5035a79d60ecb0d7e":{id:"102", nom:"atsem", "minitel":"12"},
        "78f84acb6bba4daf34bdc9fe41ee0e0e":{id:"1",   nom:"gibmedia", "minitel":"1",  letmin:"1", tkt: "0899 789 002", assistance: '08 99 789 999', nomSms: 'EXAM'},
		"c3b167d90f9dd3915b3d81e12ffa93fc":{id:"3",   nom:"Audivox",  "minitel":"13", audiotel: "0 899 782 049" , assistance: '08 99 782 446', tkt: "0 899 782 410"}, //letmin:"13",
		"42cdae5a9dfaced4604eb6c5ae80945b":{id:"2",   nom:"HeliosSun",  "minitel":"27", audiotel: "0 899 784 137", assistance: '08 99 782 443', tkt: "0 899 787 197"}, //letmin:"27",
		"86dc64ddaac448bb06316d6bd237d471":{id:"7", nom:"Telemaque", "minitel":"14", audiotel: "0 899 782 265" , assistance: '08 99 782 441', tkt: "0 899 782 277"}, //letmin:"14",   
        "ebd78f12caf8f30a177b4e8af5d40118":{id:"75", nom:"Epistrophe", "minitel":"18" , assistance: '08 99 782 466', audiotel: "0 899 781 102", tkt: "0 899 782 510"},
        "a42e9a4f9e34532d162f5bfee987ebbe":{id:"85", nom:"Eknp13", "minitel":"26", audiotel: "0 899 788 113"  , assistance: '08 99 781 129', tkt: "08 99 782 467"},
        "7e75bda584b39400b28dcc6cdf0aec3c":{id:"121", nom:"ctqui", audiotel:"0 899 785 047"}

        /*
		"60875bca4546f8656052a737383ea0cf":{id:"105", nom:"free", "minitel":""},
		"19856d9d9d08b17c4b265b0d2512f789":{id:"4", nom:"Creanet", "minitel":"15" },
		"1a57bfe7be651ebc748d6885731740d9":{id:"19", nom:"studyRama", "minitel":"16" },
		"6736dd274673271c139586ba47dfaa21":{id:"69", nom:"keepschool", "minitel":"17" },		
		"798fa9d010dd98e5bbee670542dd2186":{id:"14", nom:"radioRTL", "minitel":"19" },
		"bb4b6348d18a41770ddfbcb49d32fd67":{id:"13", nom:"FunRadio", "minitel":"20" },
		"9aadebaf672282cbb744d43d26aef027":{id:"17", nom:"memopagecom", "minitel":"21" },
		"a49d1b1f7285796216651a7436e7aeda":{id:"66", nom:"bacfrancaiscom", "minitel":"22" },
		"f9893b56ebface95fb49e92d0c6864b7":{id:"56", nom:"1001examcom", "minitel":"23"},
		"115e84ad0ccf80f17e5b9cbe46e33956":{id:"72", nom:"ParV75", "minitel":"24"},
		"7570260bc3bc1a0a96057fb63a6f23fb":{id:"100", nom:"DEMPLOI", "minitel":"25"},		
        "a68dc6e65f219b819676b0fd40ffe824":{id:"70", nom:"Atoutonline", "minitel":"28"},
        "78f84acb6bba4daf34bdc9fe41ee0e0f":{id:"107", nom:"gibmediaFax", "minitel":"29"},
        */
	},

	"1":{cli_id:"Gibmedia",
		site:"bac",
		pro_id_res_1item:"202",
		pro_id_res_5item:"203",
		pro_id_cor_1item:"204",
		pro_id_cor_5item:"205",
		cb_iframe:true,
		min:"RES*1"}
};

//---------------------------------------------//

var AlloTktObj = {

	isModeCorrige:false,

	nbItems:1,

    BASE_WHA_URL : AlloTktConf.dynSiteUrl+"/online/whap/?",
	BASE_CB_URL : "http://"+AlloTktConf.domain+"/cb/call_request.php?",
	BASE_TKT_URL : "http://"+AlloTktConf.domain+"/cnxpage.php?",
	BASE_SMS_URL : "http://"+AlloTktConf.domain+"/cnxpage-sms.php?",
	BASE_ALL_URL :  "http://"+AlloTktConf.domain+"/pay_opt.php?",
	URL_CHECK_CODE : "http://"+AlloTktConf.domain+"/code_check.php",

	cli_id:"Gibmedia",
	pid:"",
	pro_id:"",
	cid_cb:"",
	cid_tkt:"",
	cid_sms:"",
	wid:"",
	cb_iframe:true,

	setMd5Partner:function(md5){
		if(AlloTktConf.objPartners[md5] == undefined )
			return false;
		var nomPartner = AlloTktConf.objPartners[md5]["nom"];
		nomPartnerCliPro=nomPartner.toLowerCase();
		this.cli_id = nomPartner;

		var nomProduit = "exa09-res-"+this.nbItems+"item-"+"part";
		this.pro_id = "264";
		if( this.nbItems=="5")
			this.pro_id = "265";

		if( this.isModeCorrige){
			nomProduit = "exa09-cor-"+this.nbItems+"item-"+"part";
			this.pro_id = "266";
			if( this.nbItems=="5")
				this.pro_id = "267";
		}
		this.pid = nomProduit;
		this.cid_cb = nomProduit+"-"+nomPartnerCliPro+"-cb";
		this.cid_tkt = nomProduit+"-"+nomPartnerCliPro+"-tkt";
		this.cid_sms = nomProduit+"-"+nomPartnerCliPro+"-sms";
		this.wid = nomProduit+"-"+nomPartnerCliPro+"-wha";
		return true;
	},

	setIdClient:function(idp){
		if(AlloTktConf[idp] == undefined )
			return;
		var AlloTktConfPartner = AlloTktConf[idp];
		this.cli_id = AlloTktConfPartner.cli_id;
		this.pid = "exa08-res-"+this.nbItems+"item-"+AlloTktConfPartner.site;
		this.pro_id = AlloTktConfPartner["pro_id_res_"+this.nbItems+"item"];
		if(this.isModeCorrige){
			this.pid = "exa08-cor-"+this.nbItems+"item-"+AlloTktConfPartner.site;
			this.pro_id = AlloTktConfPartner["pro_id_cor_"+this.nbItems+"item"];
		}
		this.cid_cb = this.pid+"-cb";
		this.cid_tkt = this.pid+"-tkt";
		this.cid_sms = this.pid+"-sms";
		this.wid = this.pid+"-wha";
	},

	setFEPartner:function(idp){
		this.examParams["fep"]=idp;
	},

	examParams:{},

	appendDestUrl:function(){
		var output="";
		if(AlloTktConf.urlDst == "")
			return "";
		var str="";
		for(var k in this.examParams){
			str+="&"+k+"="+this.examParams[k];
		}
		output = escape(AlloTktConf.urlDst + str).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g, '%2F');
		return "&dst="+output;
	},

	//pour l'audiotel
	getDestUrl:function(){
		var output="";
		if(AlloTktConf.urlDst == "")
			return "";
		var str="";
		for(var k in this.examParams){
			str+="&"+k+"="+this.examParams[k];
		}
		output = AlloTktConf.urlDst + str;
		return output;
	},

	appendExamParams:function(){
		var str="";
		for(var k in this.examParams){
			str+="&"+k+"="+this.examParams[k];
		}
		return str;
	},

	getUrlTemplate:function(extraParams){
		var url = this.BASE_ALL_URL;
		url += "cli_id="+this.cli_id;
		url += "&pro_id="+this.pro_id;
		url += "&pid="+this.pid;
		url += "&wid="+this.wid;
		url += "&cid="+this.cid_tkt;
		url += "&cid2="+this.cid_cb;
		url += this.appendExamParams();
		return url;
	},

	getUrlCB:function(){
    	var url = this.BASE_CB_URL;
    	url += "cid="+this.cid_cb;
    	if(this.cb_iframe)
    		url += "&target=_self";
    	url += this.appendDestUrl();
    	url += this.appendExamParams();
    	return url;
    },

    getUrlWHA:function(){
 		var url = this.BASE_WHA_URL;
 		url += "&wid="+this.wid;
 		//url += "&pid="+this.pid;
 		//url += "&methode=popup";
 		url += this.appendExamParams();
 		//url += "&methode="+this.whaMethod;
 		//url += this.appendDestUrl();
 		return url;
    },

    getUrlTkt:function(){
    	var url = this.BASE_TKT_URL;
    	url += "cid="+this.cid_tkt;
    	url += "&integ=iframe";
    	url += this.appendDestUrl();
    	url += this.appendExamParams();
    	return url;
    },

    getUrlSMS:function(){
    	var url = this.BASE_SMS_URL;
    	url += "&cid2="+this.cid_sms;
    	url += "&cid="+this.cid_sms;
    	url += "&integ=iframe";
    	url += this.appendDestUrl();
    	url += this.appendExamParams();
    	return url;
    },

    getUrlCheckCode:function(){
    	var url = this.URL_CHECK_CODE;
    	url += "?pro_id="+this.pro_id;
    	url += "&cid="+this.cid_cb;
    	url += this.appendDestUrl();
    	return url;
    }
};

//---------------------------------------------//

var Helpers = {

	createHtmlSelect:function(id, objKeyVal, initObj, isArray, bCreateList){

		if(isArray == undefined)
			isArray=false;
			
		if( bCreateList==undefined)
			 bCreateList = true;
			
		var selectNode = false;
		
		if( bCreateList )
		{
			selectNode = document.createElement("select");
			selectNode.setAttribute("id", id);
			selectNode.setAttribute("name", id);
		}
		else
		{
			selectNode = document.getElementById(id);
			this.clearSelect(id);
		}
		
		if(!selectNode)
			return;
		
		if( initObj != undefined && initObj["addSelect"] != undefined ){
			var optionNode = document.createElement("option");
			optionNode.setAttribute("value", "0");
			var txt = "Faites votre selection";
			if( initObj["txtSelect"] != undefined )
				txt = initObj["txtSelect"];
			optionNode.appendChild(document.createTextNode(txt));
			selectNode.appendChild(optionNode);
		}

		if(isArray){
			for(var i=0, len=objKeyVal.length; i < len; ++i){
				var optionNode = document.createElement("option");
				optionNode.setAttribute("value", objKeyVal[i][0]);
				optionNode.className = (i%2)?'fetr_even' : 'fetr_odd';
				optionNode.appendChild(document.createTextNode(objKeyVal[i][1]));
				selectNode.appendChild(optionNode);
			}
		}
		else{
			var i=0;
			for(var key in objKeyVal){
				var optionNode = document.createElement("option");
				optionNode.setAttribute("value", key);
				optionNode.className = (i++%2)?'fetr_even' : 'fetr_odd';
				optionNode.appendChild(document.createTextNode(objKeyVal[key]));
				selectNode.appendChild(optionNode);
			}
		}
		return selectNode;
	},

	createGroupedHtmlSelect:function(id, data, initObj, isArray){

		if(isArray == undefined)
			isArray=false;

		var groupedObjKeyVal = {};
		var groupedObjKeyValTemp = {};

		if(isArray){
			for(var i=0, len=data.length; i < len; ++i){
				var premLettre = data[i][1].charAt(0);
				if( groupedObjKeyValTemp[premLettre] == undefined )
					groupedObjKeyValTemp[premLettre] = [];
				groupedObjKeyValTemp[premLettre][groupedObjKeyValTemp[premLettre].length] = {"key":data[i][0], "value":data[i][1]};
			}
		}
		else{
			for(var key in data){
				var premLettre = data[key].charAt(0);
				if( groupedObjKeyValTemp[premLettre] == undefined )
					groupedObjKeyValTemp[premLettre] = [];
				groupedObjKeyValTemp[premLettre][groupedObjKeyValTemp[premLettre].length] = {"key":key, "value":data[key]};
			}
		}
		var lettres = [];
		for(var lettre in groupedObjKeyValTemp){
			lettres[lettres.length]=lettre;
		}

		lettres=lettres.sort();
		for(var i=0,len=lettres.length; i < len; ++i){
			groupedObjKeyVal[lettres[i]] = groupedObjKeyValTemp[lettres[i]];
		}

		var selectNode = document.createElement("select");
		selectNode.setAttribute("id", id);
		selectNode.setAttribute("name", id);
		
		if( initObj != undefined && initObj["addSelect"] != undefined ){
			var optionNode = document.createElement("option");
			optionNode.setAttribute("value", "0");
			var txt = "Faites votre selection";
			if( initObj["txtSelect"] != undefined )
				txt = initObj["txtSelect"];
			optionNode.appendChild(document.createTextNode(txt));
			selectNode.appendChild(optionNode);
		}

		for(var lettre in groupedObjKeyVal){
			var optionGroupNode = document.createElement("optgroup");
			optionGroupNode.setAttribute("label", lettre);
			var arrObjKeyVal = groupedObjKeyVal[lettre];
			for(var k = 0, len = arrObjKeyVal.length; k <len; ++k){
				var optionNode = document.createElement("option");
				optionNode.setAttribute("value", arrObjKeyVal[k]["key"]);
				optionNode.appendChild(document.createTextNode(arrObjKeyVal[k]["value"]));
				optionGroupNode.appendChild(optionNode);
			}
			selectNode.appendChild(optionGroupNode);
		}
		return selectNode;
	},

    pop:function(url, w, h){
    	w = w || 500;
    	h=h || 500;
		window.open(url, '_blank', 'width='+w+',height='+h+',top='+((screen.height-h)/2)+',left='+((screen.width-w)/2)+',scrollbars=0,location=0,status=0,resizable=0');
	},

	popWha:function(){
        var opts='scrollbars=0,location=0,status=0,resizable=0';
	    var fromIframe = false;
	    if(typeof(arguments[1]) != 'undefined'){
	        if(arguments[1]){
	            fromIframe = true;
                opts='scrollbars=1,location=0,status=1,resizable=1';
	        }
	    }
	    var url = arguments[0];

		var win=window.open(url, '_blank', 'width=500,height=500,top='+((screen.height-500)/2)+',left='+((screen.width-500)/2)+','+opts);
		if(fromIframe){
		    win.opener=null;
		}
    },

    popAideMin:function(url){
		window.open(url, '_blank', 'width=550,height=600,top='+((screen.height-500)/2)+',left='+((screen.width-500)/2)+',scrollbars=1,location=0,status=0,resizable=0');
	},

    aidewha:function(telAssistance, baseUrl){
    	baseUrl = baseUrl || "";
        var url = baseUrl+'images/online/aide-wha-partenaires.gif';
        // C'est moche, mais c'est trop tard pour faire beau
        if(telAssistance != '0899 783 011'){
            url = baseUrl+'images/online/aide-wha.gif';
        }
		window.open(url,'_blank', 'width=590,height=270,top='+((screen.height-270)/2)+',left='+((screen.width-590)/2)+',scrollbars=0,location=0,status=0,resizable=0');
	},

	aidecb:function(telAssistance){
        var url = 'aide-cb.html';
        // C'est moche, mais c'est trop tard pour faire beau
        if(telAssistance != '0899 783 011'){
            url = 'aide-cb.html';
        }
		window.open(url+'?telAssistance='+telAssistance,'_blank', 'width=590,height=350,top='+((screen.height-350)/2)+',left='+((screen.width-590)/2)+',scrollbars=0,location=0,status=0,resizable=0');
	},
	
	createHtmlTable:function(id, parentId, structureTab, data){
        var theTable=document.createElement("table"); 
        document.getElementById(parentId).appendChild(theTable);
        theTable.setAttribute("id", id);
        
        var thead=document.createElement("thead");
        var trH=document.createElement("tr");
        trH.setAttribute("class", "tbHeaderRow");
        trH.setAttribute("className", "tbHeaderRow");
        for(var i=0; i < structureTab.length; ++i){
            var th=document.createElement("th");
            th.setAttribute("class", "tbHeaderCell");
            th.setAttribute("className", "tbHeaderCell");
            th.innerHTML=structureTab[i]["title"];
            trH.appendChild(th);
        }        
        thead.appendChild(trH);
        theTable.appendChild(thead);
        var tbody=document.createElement("tbody");
        theTable.appendChild(tbody); 
        for(var i=0; i < data.length; ++i){
            var tr=document.createElement("tr");
            if(i%2==0){
                tr.setAttribute("class", "tbRowOdd");
                tr.setAttribute("className", "tbRowOdd");
            }
            else{
                tr.setAttribute("class", "tbRowEven");
                tr.setAttribute("className", "tbRowEven");
            }
            for(var j=0; j < structureTab.length; j++){ 
             	var td=document.createElement("td");
                td.setAttribute("class", "tbCell");
                td.setAttribute("className", "tbCell"); 
                var field = structureTab[j]["field"];     
                //td.appendChild(document.createTextNode( data[i][field]) );
                td.innerHTML = data[i][field];
                tr.appendChild(td);
            }
            tbody.appendChild(tr);
        }
        return tbody;
    },
    
    clearSelect:function(idElem){
   		var _select = document.getElementById(idElem);
  		if (!_select || _select.tagName.toLowerCase() !== 'select') {
    		return;
  		}
		while (_select.firstChild) {
			_select.removeChild(_select.firstChild);
		}
    },
    
    addSelectOption:function(idElem, val, lb){
    	var _select = document.getElementById(idElem);
  		if (!_select || _select.tagName.toLowerCase() !== 'select') {
    		return;
  		}
    	var optionNode = document.createElement("option");
		optionNode.setAttribute("value", val);		
		optionNode.appendChild(document.createTextNode(lb));
		_select.appendChild(optionNode);    	
    }
};



//---------------------------------------------//

var Utils={
	whaOK : function(prov){
		var providers = ['ORANGE', 'AOL', 'CEGETEL', 'ALICE', 'CLUBINTERNET', '9TELECOM' ];
		return providers.indexOf(prov) != -1;
	},

    skipMinitel:function(){
		var skip=false;
		skip = ( navigator.appVersion.indexOf("Mac")!=-1 ||
				navigator.appVersion.indexOf("X11")!=-1 ||
				navigator.appVersion.indexOf("Linux")!=-1 );
		return skip;
	},

	partnerOk:function(idp){
		
		for(var p in AlloTktConf.objPartners){
			if(p == idp){
				return AlloTktConf.objPartners[p]["id"];
			}
		}
		return false;
	},

	getNumMinitel:function(md5){
		if(!AlloTktConf.objPartners[md5])
			return false;
		return AlloTktConf.objPartners[md5]["minitel"];
	},

    getUrlMin:function(md5){
		if(!AlloTktConf.objPartners[md5])
			return false;
		var codeMin = AlloTktConf.objPartners[md5]["minitel"];
		var urlMinitel=AlloTktConf.urlMin;
		urlMinitel+="?p="+codeMin;
		return urlMinitel;
	},
	
	getUrlMin2:function(idClient){		
		idClient = AlloTktConf.correspMin[ idClient ] || idClient;	
		var urlMinitel=AlloTktConf.urlMin2;
		urlMinitel+="?p="+idClient;
		return urlMinitel;
	},

    getUrlLetMin:function(md5){
		if(!AlloTktConf.objPartners[md5])
			return false;
		var codeLetMin = AlloTktConf.objPartners[md5].letmin;
		var urlLetMin=AlloTktConf.urlLetMin;
		urlLetMin+="?code="+codeLetMin;
		return urlLetMin;
	},
	
	getUrlLetMin2:function( idp ){		
		var urlLetMin=AlloTktConf.urlLetMin2;
		urlLetMin+="?p="+idp;
		return urlLetMin;
	},

    getUrlMinNav:function(md5, isIE){
		if(!AlloTktConf.objPartners[md5])
			return false;
		var codeMin = AlloTktConf.objPartners[md5]["minitel"];
		var urlMinitel="http://www.ulysse-service.fr/synertel/";
		if(isIE)
			urlMinitel+="res_ie.php?";
		else
			urlMinitel+="res_ff.php?";
		urlMinitel+="p="+codeMin;
		urlMinitel+="&idp="+md5;
		return urlMinitel;
	},

	dateBd:function(d){
		var arrD = d.split(/-/);
		if(arrD.length==3)
			return arrD[2]+"/"+arrD[1]+"/"+arrD[0];
		return false;
	},

	parseQueryString : function(query){
		var arrRes = [];
		var parms = query.split('&');
		for (var i=0; i < parms.length; i++) {
			var q = parms[i];
			var pos = q.indexOf('=');
			if (pos > 0) {
				var key = q.substring(0, pos);
				var val = q.substring(pos+1);
				arrRes[key]=val;
			}
		}
		return arrRes;
	},

	getImageWha:function(provider){
		var fileName="whadefaut.gif";
		if(provider=="ORANGE")
			fileName="whaorange.gif";
		else if(provider=="9TELECOM")
			fileName="whaneuf.gif";
		else if(provider=="CEGETEL")
			fileName="whacegetel.gif";
		else if(provider=="AOL")
			fileName="whaaoll.gif";
		else if(provider=="ALICE")
			fileName="whaalice.gif";
		else if(provider=="CLUBINTERNET")
			fileName="wha-ci.gif";
		return fileName;
	},

    getLogoWha:function(provider){
		var fileName="";
		if(provider=="ORANGE")
			fileName="logo_orange.gif";
		else if(provider=="9TELECOM")
			fileName="logo_9.gif";
		else if(provider=="CEGETEL")
			fileName="logo_cegetel.gif";
		else if(provider=="AOL")
			fileName="logo_aol.gif";
		else if(provider=="ALICE")
			fileName="logo_alice.gif";
		else if(provider=="CLUBINTERNET")
			fileName="logo_ci.gif";
		return fileName;
	},

	getIntituleExam:function(codeExam){
		return Constantes.arrCodesExams[codeExam] || "";
	},

	dumpObj:function(obj){
		var str="";
		for(var i in obj)
			str+=i+" "+obj[i]+",";

		alert(str);
	},

	getHTTPObject:function(){
        var xmlhttp;
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) {
            var aVersions = [ "MSXML2.XMLHttp.5.0",
                "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0",
                "MSXML2.XMLHttp.2.0" ];

            for ( i = 0 ; i < aVersions.length ; i++ ) {
                try {
                    xmlhttp = new ActiveXObject(aVersions[i]);
                    return xmlhttp;
                }
                catch (oError) {
                }
            }
        }
        else {
            return false;
        }
        return xmlhttp;
    },

    codeResultatsDispo:function(code){
    	return code == "TERMINE" || code == "EN COURS";
    },

    getDisplayName:function(str){
        var premLettre = str.charAt(0).toLowerCase();
        if(premLettre=="a" || premLettre=="h" || premLettre=="e"){
            return "d'"+str;
        }
        return "de "+str;
    },

    fetchOnlineCalendar:function(idExam, idZone, iso){
        
        if(iso==undefined)
            iso=false;
        
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.src = AlloTktConf.dynSiteUrl+"export/calendjson/ex/"+idExam+"/z/"+idZone;
        if(iso)
            newScript.src += "/iso/1";
        
        document.getElementsByTagName("head").item(0).appendChild(newScript);
    },

    removeDynScriptTag:function(){
        document.getElementsByTagName("head").item(0).removeChild(document.getElementsByTagName("head").item(0).getElementsByTagName("script").item(0));
    },
    
    include:function(url){
    	var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.src = url;
        document.getElementsByTagName("head").item(0).appendChild(newScript);
        return true;
    },
    
    urlDecode:function(encodedString){
        var output = encodedString;
        var binVal, thisString;
        var myregexp = /(%[^%]{2})/;
        while ((match = myregexp.exec(output)) != null && match.length > 1 && match[1] != '') {
            binVal = parseInt(match[1].substr(1),16);
            thisString = String.fromCharCode(binVal);
            output = output.replace(match[1], thisString);
        }
        return output;
    },
    
    checkMail:function(str) {
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) return false
		if (str.indexOf(at,(lat+1))!=-1) return false
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false
		if (str.indexOf(dot,(lat+2))==-1) return false
		if (str.indexOf(" ")!=-1) return false
		tld = str.substr(str.lastIndexOf(dot) + 1)
		if(tld != 'com'
		    && tld != 'net'
		    && tld != 'org'
			&& tld != 'fr'
			&& tld != 'info'
			&& tld != 'int'
			&& tld != 'name'
			&& tld != 'be'
			&& tld != 'it'
		) return false
		return true
	}
}
//------------------------------------------------------------//

ExamXmlParser = function(){ this.data = new Object();};

ExamXmlParser.prototype = {

	xmlDoc : undefined,
	data : undefined,
	listeners : undefined,

	create:function(){
		return true;
	},

    initFromString:function(str){
        try{ //Internet Explorer
            xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async="false";
            xmlDoc.loadXML(str);
        }
        catch(e){
            try {//Firefox, Mozilla, Opera, etc.
                parser=new DOMParser();
                xmlDoc=parser.parseFromString(str,"text/xml");
            }
            catch(e) {return false;}
        }
        this.xmlDoc=xmlDoc;
    },

	load:function(file){
        var xmlHttp = Utils.getHTTPObject();
        if(xmlHttp){
            xmlHttp.open("GET", file, false);
            xmlHttp.send(null);
            if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
            	this.xmlDoc=xmlHttp.responseXML;
            	if(!this.xmlDoc)
            		return false;
            	this.loaded();
            	return true;
			}
			return false;
        }
        return false;
	},

	loaded:function(){
		var res = false;
		var calNodes = this.xmlDoc.getElementsByTagName("Calend");
		if(calNodes && calNodes.length == 1){
			var root = calNodes[0];
			var n = root.getElementsByTagName("Exam")[0];
			this.data["nomExam"] = n.firstChild.nodeValue;
			n = root.getElementsByTagName("Loc")[0];
			this.data["zone"] = n.firstChild.nodeValue;
			n = root.getElementsByTagName("Cod")[0];
			this.data["codeFichier"] = n.firstChild.nodeValue;
			n = root.getElementsByTagName("CExam")[0];
            if(n && n.firstChild)
			this.data["codeExam"] = n.firstChild.nodeValue;
            else
                this.data["codeExam"]="";
			n = root.getElementsByTagName("CLoc")[0];
			this.data["codeZone"] = n.firstChild.nodeValue;
			n = root.getElementsByTagName("Pex")[0];
			this.data["pDispo"] = n.firstChild.nodeValue;
			n = root.getElementsByTagName("ERes")[0];
            if(n && n.firstChild)
			this.data["codeTransfert"] = n.firstChild.nodeValue;
            else
                this.data["codeTransfert"] = 0;
			n = root.getElementsByTagName("DEC")[0];
			if(n.firstChild)
				this.data["dateT"] = n.firstChild.nodeValue;
			else
				this.data["dateT"] = "";
			n = root.getElementsByTagName("HEC")[0];
			if(n.firstChild)
				this.data["heureT"] = n.firstChild.nodeValue;
			else
				this.data["heureT"] = "";
			n =  root.getElementsByTagName("TD")[0];
            if(n && n.firstChild)
			this.data["nbCA"] = n.firstChild.nodeValue;
            else
                this.data["nbCA"]  = "";
			n = root.getElementsByTagName("Series")[0];
			var arrSNodes = n.getElementsByTagName("S");
			var arrSeries = [];

			for(var i = 0, len = arrSNodes.length; i < len; ++i){
				var objSerie = new Object();
				var sNode = arrSNodes[i];
				var ns = sNode.getElementsByTagName("LS")[0];
				objSerie["nom"] = ns.firstChild.nodeValue;
				ns = sNode.getElementsByTagName("CS")[0];
				objSerie["code"] = ns.firstChild.nodeValue;
				ns = sNode.getElementsByTagName("DS")[0];
				if(ns.firstChild)
					objSerie["dateT"] = ns.firstChild.nodeValue;
				else
					objSerie["dateT"] = "";
				ns = sNode.getElementsByTagName("HS")[0];
				if(ns.firstChild)
					objSerie["heureT"] = ns.firstChild.nodeValue;
				else
					objSerie["heureT"] = "";
				ns = sNode.getElementsByTagName("CE")[0];
				objSerie["codeTransfert"] = ns.firstChild.nodeValue;
				arrSeries[i] = objSerie;
			}
			this.data["series"] = arrSeries;
			res = true;
		}
		this.data["fileOk"] = res;
		this.fireLoaded();

		return res;
	},

	addListener:function(listener){
		if( this.listeners == undefined )
			this.listeners = [];
		this.listeners[this.listeners.length] = listener;
	},

	fireLoaded:function(){
		if( this.listeners != undefined && this.listeners.length ){
			for(var i=0, len = this.listeners.length; i < len; ++i ){
				if( this.listeners[i].onLoaded ){
					this.listeners[i].onLoaded(this.data);
				}
			}
		}
	}
};
//-------------------------------------------------------------//


