function reloadCaptcha() {
	if ( jQuery('#capaimg').length  )
	{
		var currentSRC = jQuery('#capaimg').attr( 'src' );
		var concat = "?";
		if ( currentSRC.indexOf("?") >= 0 )
			concat = "&";
		jQuery('#capaimg').attr( 'src', jQuery('#capaimg').attr( 'src' )+concat+'r=' + Math.random() );
	}
}

function refreshWindow() {
    var sURL = unescape(window.location.pathname);
    window.location.href = sURL;
}

function changeLanguage(lang) {
    var data = {
        method: 'change_language',
        lang:   lang,
    	page:   "index.php"
    };
    callAjax(data, function(result) {
        if (result) {
            refreshWindow();
        }
    } );
}

function autoHeight(expandContainer) {
    try {
        setWrapFooter();

        if (expandContainer) {
            window.onresize = function() {
                autoHeight(expandContainer);
            }
        }
        var window_height = jQuery(window).height();
        var wrap_container_height = jQuery("#content").outerHeight() + parseInt(jQuery("#wrap-container").css("margin-top"));
        var wrap_footer_height = jQuery("#wrap-footer").outerHeight() || 0;
        var wrap_footer_bottom = parseInt(jQuery("#wrap-footer").css("margin-bottom"));
        var wrap_page_ref_height = jQuery("#wrap-page-ref").outerHeight() || 0;

        if (expandContainer) {
            if ((window_height - wrap_container_height - wrap_footer_bottom) > wrap_footer_height + wrap_page_ref_height) {
                push_height = (window_height - wrap_container_height - wrap_footer_bottom - wrap_page_ref_height);
            } else {
                push_height = (wrap_footer_height + wrap_page_ref_height);
            }
        } else {
            push_height = (wrap_footer_height);
        }
        document.getElementById('push').style.height = push_height + "px";
        document.getElementById('wrap-container').style.marginBottom = (0 - wrap_footer_height) + "px";
    }
    catch (e) {}
};

function setWrapFooter() {
    try {
        var fwrap1 = document.getElementById('fwrap1');
        var fwrap2 = document.getElementById('fwrap2');
        var fwrap3 = document.getElementById('fwrap3');

        fwrap1.style.height = fwrap2.style.height = fwrap3.style.height = jQuery("#wrap-footer").outerHeight() + "px";
    }
    catch (e) {}
}

function setStyles() {
    jQuery('input[type="button"], input[type="reset"], input[type="submit"]').addClass("input-button");
    jQuery('input[type="checkbox"]').addClass('input-checkbox');
    jQuery('input[type="radio"]').addClass('input-radio');
    jQuery('input[type="text"], input[type="password"], textarea').addClass('input-text').focus(function(){
        jQuery(this).addClass('focus');
    }).blur(function(){
        jQuery(this).removeClass('focus');
    });
    jQuery('button, input[type="button"], input[type="reset"], input[type="submit"], input[type="checkbox"]').mouseover(function(){
        jQuery(this).addClass('hover');
    }).mouseout(function() {
        jQuery(this).removeClass('hover');
    }).click(function(){
        jQuery(this).blur();
    });
}

/* Ajax
------------------------------------------------------------------------------*/
var xmlHttp;
var WindowPopUp;

function initAjax() {
    try {
		xmlHttp=new XMLHttpRequest();
	}
    catch (e) {
	    try {
		    xmlHttp=new ActiveXObject('Msxml2.XMLHTTP');
	    }
	    catch (e) {
		    try {
			    xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch (e) {
		        return false;
			}
	    }
	}
    return true;
}

function makeHttpRequest(scriptpath,urlmethod) {
    if (!initAjax()) {
	    jAlert.alert('Votre navigateur ne supporte pas AJAX!');
		return false;
	}
    strString = "";
    xmlHttp.open(urlmethod,scriptpath,true);
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) {
                strString = xmlHttp.responseText.toString();
            } else {
                strString = "Page: " + scriptpath + " - " + xmlHttp.status + ": " + xmlHttp.statusText.toString();
            }
        }
        processResult(strString, xmlHttp.readyState);
    }
    xmlHttp.send(null);
}

/* Basics
------------------------------------------------------------------------------*/
function checkEmail(txtEmail)
{
	strMail = txtEmail.replace(/ /g,"");
		regex =
/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
	if (regex.test(strMail)) {
			return true;
	}	else {
			return false;
	}
}

function isFloat(objText) {
	var floatPoint = false;
		if (objText.charAt(0) == "." || objText.charAt(0) == ",")
		return false;
		for (i=0; i < objText.length; i++) {
			if (!isDigit(objText.charAt(i))) {
			if (!floatPoint && (objText.charAt(i) == "." || objText.charAt(i) == ","))
			floatPoint = true;
			else
			return false;
			}
		}
		return true;
}

function checkFirstLetter(strString) {
		letter = strString.charAt(0);
		switch (letter) {
				case "e":
				case "a":
				case "i":
				case "o":
				case "u":
				case "é":
					return true;
				break;
				default:
					return false;
				break;
		}
}

function RenameURL( url )
{
	url = url.replace( / /g, "-" );
	url = url.replace( /\&#039/g, "-" );
	url = url.replace( /\&amp;/g, "et" );
	url = url.replace( /\&/g, "et" );
	url = url.replace( /\.,/g, "-" );
	url = url.replace( /[éêëè]/g, "e" );
	url = url.replace( /[ÈÉÊË]/g, "E" );
	url = url.replace( /[äãåâáà]/g, "a" );
	url = url.replace( /[óòöô]/g, "o" );
	url = url.replace( /[úùûü]/g, "u" );
	url = url.replace( /[~;\/':%\+\^\$\*€-]/g, "-" );
	url = url.replace( /[^a-z0-9A-Z+]/ig, "-" );
	while ( url != url.replace( /--/ig, "-" ) )
			url = url.replace( /--/ig, "-" );
			
	return url;
}
function isDigit (c) {
	return ((c >= "0") && (c <= "9"));
}

function doResetById(formId) {
	form = document.getElementById(formId);
	form.reset();
}

function isNumber(param) {
	strLocalString = param.replace(/ /g, "");
	for (t = 0; t < strLocalString.length; t++) {
		if (!isDigit(strLocalString.charAt(t))) {
			return false;
		}
	}
	return true;
}

function doFormSubmit(objForm, strFormTarget, strFormAction) {
/*
attributes will be read fron id value
your id should be of the form id="x/y/z", if not then the corresponding element won't be checked

where:
  x = "mandatory"(if the lement is mandatory ) or any other string if you do not want that element to be mandatory(try to use "notmandatory"..estetics)
  y = the element type  = email, checkbox, text, number, select, password
  z = an error message to be displayed if the validation process for that field has failed

copy/paste this code into a "button" tag to use for submitting a form:
 -=  onClick="doFormSubmit(this.form)"  =-
*/

	arrValidation = Array();
  	arrRejected = Array();
    var arrVisited = new Array();
	txtErr = "";
	strTmp = "";
	arrElements = objForm.elements;
	for(var i=0;i<arrElements.length;i++) {
	  obj = arrElements[i];
	  if(jQuery.inArray(obj.name, arrVisited) != -1) continue;

	  arrVisited.push(obj.name);

      arrObjOptions = obj.id.split("---");
      if ((arrObjOptions.length == 3)) {

        if (arrObjOptions[0] == "mandatory")
          strTmp = validateObjectByType(obj, arrObjOptions[1], arrObjOptions[2].replace(/_/g," "), false);
        else
          strTmp = validateObjectByType(obj, arrObjOptions[1], arrObjOptions[2].replace(/_/g," "), true);

    	if(strTmp != "") {
    	    txtErr += strTmp;
    	    arrRejected[arrRejected.length] = obj;
        }
      }
  }

   if((objForm.elements["capa"] != null && (document.getElementById("capa").value.replace(/ /g,"") == ""))){
				txtErr += ( txtError_CompleteSecurityCode + "\r\n" );

             arrRejected[arrRejected.length] = objForm.elements["capa"];
	}
	if(txtErr != "") {

		parent.jAlert( txtErr, txtErrors );
//	 	arrRejected[0].focus();
	} else {
        if(strFormTarget.replace(/ /g,"") != "")
				objForm.setAttribute("target",strFormTarget.replace(/ /g,""));
		if(strFormAction.replace(/ /g,"") != "")
				objForm.setAttribute("action",strFormAction.replace(/ /g,""));
		objForm.submit();
	}


}

function validateObjectByType(obj, strType, strIdent, bTypeOnly) {
		bErr = false;
		errType = -1;
		strErrorMsg = "";

    		if(!bTypeOnly) {
    			objVal = obj.value;
    			if(objVal.replace(/ /g,"") == "") {
    					bErr = true;
    					errType = 0;
    			}
		    }

			if(strType == "email") {
					objVal = obj.value.replace(/ /g,"");
					if( !bTypeOnly || objVal != "") {
             if(objVal == "") {
              errType = 0;
             } else if(!checkEmail(objVal)) {
									errType = 1;
							}
					}
			} else if(strType == "text")  {
					objVal = obj.value;

					if(objVal.replace(/ /g,"") == "") {
					  if (!bTypeOnly)
							errType = 0;
					}
			} else if(strType == "checkbox" || strType == "radio") {
				   //	if(!obj.checked) {

                   if(!bTypeOnly) {
				   	if(typeof($("input[name='"+obj.name+"']:"+strType+":checked").val()) == 'undefined') {
							errType = 0;
					}
                   }
			} else if(strType == "select")  {
					objVal = obj.value;
					if(objVal.replace(/ /g,"") == "" || parseInt(objVal.replace(/ /g,"")) == 0) {
							errType = 1;
					}
			} else if(strType == "number") {
					objVal = obj.value;
          if(!bTypeOnly) {
             if(objVal == "") {
              errType = 0;
             } else 	if(!isNumber(objVal)) {
   						errType = 1;
   					}
					}

          if(bTypeOnly) {
   					if(!isNumber(objVal)) {
   						errType = 1;
   					}
          }
			} else if(strType == "password")  {
					objVal = obj.value;
					objID = obj.getAttribute("id") + "2";
					if(!document.getElementById(objID)) {
							errType = 3;
					} else if((objVal.replace(/ /g,"") == "") || (document.getElementById(objID).value.replace(/ /g,"") == "") ){
							errType = 0;
					} else if (document.getElementById(objID).value.replace(/ /g,"") != objVal.replace(/ /g,"")) {
							errType = 2;
					}
			}



		if(errType != -1) {
			switch(errType) {
					case 0:
							strErrorMsg = sprintf(txtError_CompleteField, strIdent) + "\r\n";
					break;
					case 1:
			                strErrorMsg = sprintf(txtError_CompleteValidForX, strIdent) + "\r\n";
					break;
					case 2:
								strErrorMsg = "Les mots de passe introduits ne correspondent pas\r\n";
					break;
					case 3:
								strErrorMsg = "Le formulaire est invalide\r\n";
					break;

			}
			return strErrorMsg;
		}  else {
			return "";
		}
}

function parseFloatCustom(strVal,nDecimals) {
		divider = Math.pow(10,nDecimals);
		subject = parseFloat(strVal.replace(/,/g,"."));
		if(!isNaN(subject)) {
			result = Math.round(subject * divider)/divider;
			return result;
		} else {
			return subject;
		}
}

		function sprintf()
		{
			if (!arguments || arguments.length < 1 || !RegExp)
			{
				return;
			}
			var str = arguments[0];
			var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
			var a = b = [], numSubstitutions = 0, numMatches = 0;
			while (a = re.exec(str))
			{
				var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
				var pPrecision = a[5], pType = a[6], rightPart = a[7];

				//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

				numMatches++;
				if (pType == '%')
				{
					subst = '%';
				}
				else
				{
					numSubstitutions++;
					if (numSubstitutions >= arguments.length)
					{
						alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
					}
					var param = arguments[numSubstitutions];
					var pad = '';
					       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
					  else if (pPad) pad = pPad;
					var justifyRight = true;
					       if (pJustify && pJustify === "-") justifyRight = false;
					var minLength = -1;
					       if (pMinLength) minLength = parseInt(pMinLength);
					var precision = -1;
					       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
					var subst = param;
					       if (pType == 'b') subst = parseInt(param).toString(2);
					  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
					  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
					  else if (pType == 'u') subst = Math.abs(param);
					  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
					  else if (pType == 'o') subst = parseInt(param).toString(8);
					  else if (pType == 's') subst = param;
					  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
					  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
				}
				str = leftpart + subst + rightPart;
			}
			return str;
		}

function showPopup(file, h, w) {
    if((typeof WindowPopUp != "undefined") && (WindowPopUp != null))
        WindowPopUp.close();

    WindowPopUp = window.open(file, "popup", "left="+parseInt((screen.width-w)/2) + ", top="+parseInt((screen.height-h)/2)+", width="+w+", height="+h);

    if(WindowPopUp != null)
        WindowPopUp.focus();
}
function callAjax( data, callback, bShowLoading )
{
	if ( typeof bShowLoading == "undefined" )
		bShowLoading = true;
	jQuery.ajax({
                type: "POST",
                cache: false,
                timeout: 30000,
                url: "./ajax.php",
                data: data,
                processData: true,
                dataType: "json",
                beforeSend: function(){
					if ( bShowLoading ) startLoading();
                },
                success: callback,
                complete: function(request, status){
                    if ( bShowLoading ) endLoading();
                }
            });
}

function startLoading()
{
	jQuery("#loading").css({
        'opacity'   : '0.6'
	}).fadeIn("slow");
}

function endLoading()
{
	jQuery("#loading").delay(200).fadeOut("slow");
}

function AjaxExecutePost(strFunction, strArgs, strReturnFunction){
    jQuery.post("ajax2.php", {strFunction: strFunction, strArgs: unescape(strArgs)}, function(data){
        data = jQuery.trim(data);
	    eval(strReturnFunction + "(data);");
	});
}

