var TO_LOAD_INDEX=0;
var TO_LOAD=new Array;
var UNBIND=false;
var GOTOAFTERSUBMIT='';
var GOTOAFTERSUBMITTARGET='_self';
$(function(){
	load_jquery();
});

function display_loader(parentElement){
	if(LOADING_IMG=='') {
		// Rien
	}else{
		parentElement.prepend('<div id="xmlreq_loader"><img src="'+LOADING_IMG+'" /></div>');
	}
}

function remove_loader(){
	if(LOADING_IMG==''){
		// Rien
	}else{
		$("#xmlreq_loader").remove();

	}
}

function load_jquery(){
	// Unbind de tous les évenements
	if(UNBIND){
		$("*").unbind();

	}
	UNBIND=true;

	// Emulation d'un bouton submit
	$("a.submit").click(function(){
		$(this).parents("form").submit();

		if($(this).attr('href')!='#'){
			GOTOAFTERSUBMIT=$(this).attr('href');
			if($(this).attr('target')){
				GOTOAFTERSUBMITTARGET=$(this).attr('target');
			}
		}
		return false;
	});

	$("a.submitOnce").click(function(){
		$(this).parents("form").submit();
		$(this).unbind('click');
		return false;
	});

	$("a.submitWait").click(function(){
		$(this).parents("form").after('<p class="center">'+$(this).attr('title')+'<br /><br /><img src="'+IMG_PATH+'/loader.gif" /></p>');
		$(this).parents("form").submit();
		$(this).parents("form").hide();
		return false;
	});

	$("form").submit(function(){
		$(this).attr('change','0');
		return true;
	});

	$("form.blank").each(function() {
		$(this).attr('target','_blank');
		$(this).removeClass('_blank');
	});


	// Formulaires en ajax a part ceux ayant pour classe .notajax
	$("form").not(".notajax").submit(function(){
	   	display_loader($(this));
   		var urlForm;
		if($(this).attr('action').substr(0,1)=='/'){
			urlForm=$(this).attr('action');
		}else{
			urlForm=SITE_PATH+'httpxmlrequest/'+$(this).attr('action');
		}
		$(this).ajaxSubmit({

		   url		:	urlForm,
		   dataType	:	'xml',
		   success	:	function(data){
		   		MyAjax(data);
				if(GOTOAFTERSUBMIT!=''){
					if(GOTOAFTERSUBMITTARGET=='_self'){
						window.location=GOTOAFTERSUBMIT;
					}else{
						window.open(GOTOAFTERSUBMIT);
					}

					GOTOAFTERSUBMIT='';
					GOTOAFTERSUBMITTARGET='_self';
				}
			}
		});
		return false;
	});

	$(".notajax form").unbind();

	// Formulaire qui se soumet à chaque modification
	$("form.submitonchange :input").each(function(){
		$(this).one('change',function(){
			$(this).parents("form").submit();
		});
	});

	// Changement dans un formulaire
	$(":input").change(function(){
		$(this).parents("form").attr("change",1);
	});

	// Lien qui mene vers une fonction ajax
	$(".ajax").click(function(){
		return processAjaxLink(this,false);
	});

	// Lien qui mene vers une fonction ajax en doublecliquant
	$(".dajax").dblclick(function(){
		return processAjaxLink(this,false);
	});

	$(".ajaxh").click(function(){
		return processAjaxLink(this,true);
	});

	// Prompt
	$("a.prompt").click(function(){
		var href=$(this).attr('rel');

		var defaut=$(this).attr('rev');

		var name=window.prompt($(this).attr('title'),defaut);
		if(name==null || name=='null' || name==''){
			return false;
		}
		display_loader($(this));
		$.ajax({
			url		:	SITE_PATH+'httpxmlrequest/'+href+'?var='+name,
			success	:	function(data){MyAjax(data);}
		});

		return false;
	});


	// Target _blank

	$("a.blank").click(function(){
		$(this).attr('target','_blank');
		return true;
	});

	$("a.nothing").click(function(){
		return false;
	});


	// Autres functions à exécuter
	var len=TO_LOAD.length;
	for(var i=0;i<len;i++){
		eval(TO_LOAD[i]);
	}

	__fixPNG();

	if($("#jquery_time").length>0 && $("#jquery_time").text()==''){
		var E=new Date();
		var m=(parseInt(E-S)/1000).toString().replace('.',',');
		$("#jquery_time").text(m);
	}
}

/**
 *
 * @access public
 * @return void
 **/
function processAjaxLink(link,useHref){
	var title=$(link).attr('title');
	var url;
	var continueAfterAjax=$(link).hasClass('continue');
	if(useHref){
		url=$(link).attr('href');
	}else{
		url=SITE_PATH+'httpxmlrequest/'+$(link).attr('rel');
	}
	if(title!='' && title!=undefined && title.search(/\?/)>-1) {
		if(!window.confirm(title)){
			return false;
		}
	}

	if($(link).hasClass('wait')){
		wait();
	}

	/*display_loader();*/
	$.ajax({
		asycn	:	continueAfterAjax,
		url		:	url,
		success	:	function(data){MyAjax(data);}
	});
	return continueAfterAjax;
}
function randval(min,max){
	var diff=max-min;
	return Math.round(Math.random()*diff)+diff;
}

function rot(t, u, v) {
	return String . fromCharCode(((t - u + v) % (v * 2)) + u);
}

function rot13(s) {
	var b = [], c, i = s . length, a = 'a' . charCodeAt(), z = a + 26, A = 'A' . charCodeAt(), Z = A + 26;
	while (i--) {
		c = s . charCodeAt(i);
		if (c >= a && c < z) {
			b[i] = rot(c, a, 13);
		} else if (c >= A && c < Z) {
			b[i] = rot(c, A, 13);
		} else {
			b[i] = s . charAt(i);
		}
	}
	return b . join('');
}

function isSet(i){
	return (i==null || i=='null' || i=='' || i=='undefined');
}


function MyAjax(data,reload){

	var error=new Array();
	var confirmation='';
	var ok=true;

	var t=$(data).children('rsp').children().get();


	for(var i=0;i<t.length;i++) {
		var e=t[i];
		var name=e.nodeName;
		if(name=='confirmation') {
			var contentconfirm=$(e).text();
			confirmation+="<p>"+contentconfirm+"</p>";
		} else if(name=='error') {
			var errors=$(e).children().get();
			for(var j=0;j<errors.length;j++) {
				var err=errors[j];
				var ename=err.nodeName;
				var econtent=$(err).text();
				$("#"+ename).addClass('error');
				$("#"+ename).val('');
				error.push(econtent);
				ok=false;
			}
		} else if(name=='content') {
			$(e).children().each(function(){
				var cname=$(this).attr('selector');
				var ccontent=$(this).text();
				if(ccontent=='') {
					$(getSelector(cname)).html(ccontent);
				} else {
					$(getSelector(cname)).html(ccontent);
				}
			});
		} else if(name=='replace') {
			$(e).children().each(function(){
				var cname=$(this).attr('selector');
				var ccontent=$(this).text();
				if(ccontent=='') {
					$(getSelector(cname)).replaceWith(ccontent);
				} else {
					$(getSelector(cname)).replaceWith(ccontent);
				}
			});

		} else if(name=='append') {
			var contents=$(e).children().get();
			for(var k=0;k<contents.length;k++) {
				var content=contents[k];
				var cname=content.nodeName;
				var ccontent=$(content).text();
				if(ccontent=='') {
					$(getSelector(cname)).append(ccontent);
				} else {
					$(getSelector(cname)).append(ccontent);
				}
			}
		} else if(name=='param'){
			var ids=$(e).children().get();
			for(var p=0;p<ids.length;p++) {
				var id=ids[p];
				var idname=id.nodeName;
				var params=$(id).children().get();
				var o={};
				for(var q=0;q<params.length;q++){
					var param=params[q];
					var paramname=param.nodeName;
					var paramcontent=$(param).text();
					o[paramname]=paramcontent;
				}
				$("#"+idname).attr(o);
				$("#"+idname).parents("form").unbind('submit');
			}
		} else if(name=='alert'){
			var alerts=$(e).children().get();
			for(var r=0;r<alerts.length;r++) {
				var alert=alerts[r];
				var acontent=$(alert).text();
				window.alert(acontent);
			}
		} else if(name=='ok') {
			var oks=$(e).children().get();
			for(var l=0;l<oks.length;l++) {
				var ok=oks[l];
				var oname=ok.nodeName.toLowerCase();
				$("#"+oname).removeClass('error');
			}
		} else if(name=='redirection') {
			var url=$(e).text();
			window.location=url;
		} else if(name=='show'){
			var oks=$(e).children().get();
			for(var l=0;l<oks.length;l++) {
				var ok=oks[l];
				var oname=ok.nodeName;
				$("#"+oname).show('fast');
			}
		} else if(name=='debug'){
			// Do nothing
		} else if(name=='eval'){
			var codes=$(e).children().get();
			for(var r=0;r<codes.length;r++){
				var code=codes[r];
				eval($(code).text());
			}
		} else if(name=='timer'){
			var time=parseInt($(e).text());
			var t=setTimeout("doNothing()",time);
		} else if(name=='value'){
			var values=$(e).children().get();
			for (var v=0;v<values.length;v++){
				var node=values[v];
				var oname=node.nodeName;
				var val=$("#"+oname).val($(node).text());
			}
		}
	}

	if(error.length>0){
		$("#message").html(error.join('<br />'));
	}else{
		$("#message").html('');
	}

	if(reload==true || reload==undefined){
		load_jquery();
	}
	remove_loader();
	return ok;
}

/**
 *
 * @access public
 * @return void
 **/
function getSelector(name){
	if(name.substr(0,1)=='#' || name.substr(0,1)=='.'){
		return name;
	}else{
		return "#"+name;
	}
}


function _fixPNG() {
	var png;
	var images = $('img[src*="png"]:not([fixed="fixed"])');
	images.each(
		function() {
			png = $(this).attr('src');
			$(this).attr('src',IMG_PATH+'/spacer.gif');
			$(this).css('filter',"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')");
			$(this).attr('fixed','fixed');
		}
	);
}

function __fixPNG(){
	if($.browser.msie && parseInt(navigator.userAgent.match(/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/)[1])<=6){
		_fixPNG();
	}
}

function getWindowHeight() {
    var windowHeight=0;
    if (typeof(window.innerHeight)=='number') {
        windowHeight=window.innerHeight;
    }
    else {
     if (document.documentElement&&
       document.documentElement.clientHeight) {
         windowHeight = document.documentElement.clientHeight;
    }
    else {
     if (document.body&&document.body.clientHeight) {
         windowHeight=document.body.clientHeight;
      }
     }
    }
    return windowHeight;
}

function getWindowWidth() {
    var myWidth = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
    }
    else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
    }
    else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )  {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
    }

    return myWidth;
}
function doNothing(){

}



function URLEncode(clearString){
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

function strToXML(str){
	var contentType='application/xml';
	if(typeof(DOMParser) != 'undefined'){
		return (new DOMParser()).parseFromString(str.substr(0,4095),contentType);
	} else if(typeof(ActiveXObject) != 'undefined') {
		 var xmldata = new ActiveXObject('MSXML.DomDocument');
         xmldata.async = false;
         xmldata.loadXML(str);
         return xmldata;
    }else if(typeof(XMLHttpRequest) != 'undefined') {
		var xmldata = new XMLHttpRequest;
		if(!contentType) {
    		contentType = 'application/xml';
		}
		xmldata.open('GET', 'data:' + contentType + ';charset=utf-8,' + encodeURIComponent(str), false);
   		if(xmldata.overrideMimeType) {
			xmldata.overrideMimeType(contentType);
   		}
		xmldata.send(null);
		return xmldata.responseXML;
  	}
}
