var TO_LOAD_INDEX=0;
var TO_LOAD=new Array;
var MARKITUP=false;
var UNBIND=false;
var GOTOAFTERSUBMIT='';
var GOTOAFTERSUBMITTARGET='_self';
var timeDiff  =  {
    setStartTime:function (){
        d = new Date();
        time  = d.getTime();
    },

    getDiff:function (){
        d = new Date();
        return (d.getTime()-time);
    }
}


$(function(){
	load_jquery();
});
function load_jquery(){
	// Unbind de tous les évenements
	if(UNBIND){
		if(MARKITUP){
			$("*").not(".markItUpButton").unbind();
		}else{
			$("*").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_CUBE+'/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();
   		var urlForm;
		if($(this).attr('action').substr(0,1)=='/' || $(this).attr('action').indexOf('http')==0){
			urlForm=$(this).attr('action');
		}else{
			urlForm=SITE_PATH+'ajax/'+$(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();
		$.ajax({
			url		:	SITE_PATH+'ajax/'+href+'?var='+name,
			success	:	function(data){MyAjax(data);}
		});

		return false;
	});


	// Gestion des faux popups
	$("a.closePopup").click(function(){
		closePopup($(this),true);
		return false;
	});

	$("a.closePopupNotConfirm").click(function(){
		closePopup($(this),false);
		return false;
	});

	$("a.popup").click(clickPopup);

	$("a.changepopup").click(function(){
		display_loader();
		$.ajax({
			url		:	SITE_PATH+'ajax/'+$(this).attr('rel'),
			dataType:	'responseText',
			success	:	function(data){
				changepopup(data);
				load_jquery();
			}
		});
		remove_loader();
		return false;
	});

	// Target _blank

	$("a.blank").click(function(){
		$(this).attr('target','_blank');
		return true;
	});

	$("a.nothing").click(function(){
		return false;
	});

	$(".pemail").each(function(){
		var protected;
		var adresse;
		if($(this).attr('rel')==''){
			protected=$(this).text();
			adresse=rot13(protected);

			$(this).text(adresse);
		}else{
			protected=$(this).attr('rel');
			adresse=rot13(protected);
		}

		$(this).attr('href','mailto:'+adresse);
		$(this).removeClass('pemail');
	});


	// 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+'ajax/'+$(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 clickPopup(){
	display_loader();
	$.ajax({
		url		:	SITE_PATH+'ajax/'+$(this).attr('rel'),
		dataType:	'responseText',
		success	:	function(data){
			createPopup(data);
		}
	});
	remove_loader();
	return false;

}

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 createPopup(data){
	POPUP_COUNTER=parseInt(POPUP_COUNTER);
	$("body").append('<div id="pl_'+POPUP_COUNTER+'" class="popupLayer"><div class="popupOverlay" id="po_'+POPUP_COUNTER+'" style="z-index:'+(1000+POPUP_COUNTER*2)+';"></div><div id="pw_'+POPUP_COUNTER+'" class="popupWindow" style="z-index:'+(1001+POPUP_COUNTER*2)+';"></div></div>');

	$("#po_"+POPUP_COUNTER).css('opacity',0.65);
	$("#po_"+POPUP_COUNTER).css('display','block');
	$("#pw_"+POPUP_COUNTER).html(data);
	$("#pw_"+POPUP_COUNTER).show();
	popup_dimensions(POPUP_COUNTER);
	load_jquery();
	POPUP_COUNTER+=1;
}

function closePopup(object,confirm){
	if(object==undefined || object==null){
		var i=$(".popupLayer").length-1;
		var elements=$(".popupLayer").get();
		var e=elements[i];

		var changes=false;
		$(this).find("form").each(function(){
			if($(this).attr("change")==1){
				changes=true;
			}
		});

		if(confirm==false || (changes==true && window.confirm(CONFIRM_CLOSE)) || changes==false){
			$(e).remove();
			POPUP_COUNTER-=1;
			popup_dimensions();
		}
	} else {
		$(object).parents(".popupLayer").each(function(){
			var changes=false;
			$(this).find("form").each(function(){
				if($(this).attr("change")==1){
					changes=true;
				}
			});

			if(confirm==false || (changes==true && window.confirm(CONFIRM_CLOSE)) || changes==false){
				$(this).remove();
				POPUP_COUNTER-=1;
				popup_dimensions();
			}
		});
	}
}

function popup_dimensions(i){
	if(i==undefined){
		i=POPUP_COUNTER-1;
	}
	if(i<0){
		return;
	}

	var margin=60;
	var mh=$(window).height()-(margin*2);

	if(!$.browser.msie){
		$("#pw_"+i).css("opacity",0);
	}

	$("#pw_"+i+" .c>div").css("overflow-y",'auto');
	$("#pw_"+i+" .c>div").css("overflow-x",'visible');

	$("#pw_"+i+" .c>div").css("max-height",mh);
	$("#pw_"+i).css("left", ($(window).width()-$("#pw_"+i).width())/2);
	if($("#pw_"+i+" .c>div").attr('top')){
		$("#pw_"+i).css("top",parseInt($("#pw_"+i+" .c>div").attr('top')));
	}else{
		var top=(mh-$("#pw_"+i).height())/2+margin;
		$("#pw_"+i).css("top",top);
	}
	if(!$.browser.msie){
		$("#pw_"+i).css("opacity",1);
	}
}

function changepopup(data){
	var pc=POPUP_COUNTER-1;
	$("#pw_"+pc).html(data);
	popup_dimensions(pc);
}

function checkUpload(){

	if($.browser.msie){
		var iframe=uploadIframe.document;
	}else{
		var uploadIframe=document.getElementById('uploadIframe');
		var iframe=uploadIframe.contentDocument;
	}



	if(iframe.getElementById('status')!=undefined && iframe.contentDocument.getElementById('status').innerHTML!=undefined){
		clearInterval(INTERVAL);
		$.ajax({
			url : UPDATE,
			success : function(data){MyAjax(data);}
		});

		if(iframe.getElementById('status').innerHTML!='ok'){
			window.alert(ERREUR_FICHIER+' : \n'+iframe.getElementById('status').innerHTML);
		}

		if(POPUP_COUNTER>0){
			closePopup(null,false);
		}
		$("#uploadIframe").remove();
	}
}

function isSet(i){
	return (i==null || i=='null' || i=='' || i=='undefined');
}

function callAjaxSwf(urlLink){
	$.ajax({
		url : urlLink,
		success : function(data){MyAjax(data);}
	});
}

function swfAjax(data){
	MyAjax(strToXML(data));
}

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);
				}
				if(POPUP_COUNTER-1>=0){
					popup_dimensions(POPUP_COUNTER-1);
				}
			});
		} 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);
				}
				if(POPUP_COUNTER-1>=0){
					popup_dimensions(POPUP_COUNTER-1);
				}
			});
		} 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);
				}
				if(POPUP_COUNTER-1>=0){
					popup_dimensions(POPUP_COUNTER-1);
				}
			}
		} 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=='closepopup'){
			var closes=$(e).children().get();
			for(var cp=0;cp<closes.length;cp++){
				closePopup(null,false);
			}
		} else if(name=='openpopup'){
			var opens=$(e).children().get();
			for(var op=0;op<opens.length;op++){
				var cont=opens[op];
				createPopup($(cont).text());
			}
		} else if(name=='changepopup'){
			var changes=$(e).children().get();
			for(var cp=0;cp<changes.length;cp++){
				var cont=changes[cp];
				changepopup($(cont).text());
			}
		}
		else if(name=='popupdimensions'){
			popup_dimensions();
		}
		else if(name=='truepopup'){
			var trues=$(e).children().get();
			for(var tp=0;tp<trues.length;tp++){
				var cont=trues[tp];
				truePopup($(cont).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(confirmation!=''){
		$("#confirmation").html(confirmation);
		$("#confirmation").animate({height:26,opacity:1},2000,function(){
			$("#confirmation").fadeTo(10000,1,function(){
				$("#confirmation").animate({height:0,opacity:0},2000);
				$("#confirmation").empty();
			});
		});
	}
	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 truePopup(url){
	var rand=Math.round(Math.random()*200);
	window.open(url,'Popup'+rand,'width='+window.width+',height='+window.height);
}

/*function _fixPNG() {
	var png;
	var images = $('img[src*="png"]:not([fixed="fixed"])');
	images.each(
		function() {
			png = $(this).attr('src');
			$(this).attr('src',IMG_CUBE+'/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 htmlEditorGetText(id){
	var text=document.getElementById(id).value;
	return '<TEXTFORMAT LEADING="2"><P ALIGN="LEFT">'+text+'</P></TEXTFORMAT>';
}

function htmlEditorPutText(id,text){
	document.getElementById(id).value=text;
}

function display_loader(){
	if(LOADER_AJAX=='') {
		// Rien
	}else{
		$("body").append('<div id="loader"><img src="'+LOADER_AJAX+'" /></div>');
	}
}

function remove_loader(){
	if(LOADER_AJAX==''){
		// Rien
	}else{
		$("#loader").remove();
	}
}

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;
  	}
}

