// fonction javascript

// correction pour la fonction getelemby id (je crois)
if(!document.getElementById && document.all)
	document.getElementById = function(id) {return document.all[id];};
else if(!document.getElementById && !document.all)
	document.getElementById = function(id) {return { style: {} };};

// test format mail


function G_bSyntaxeEmail(sMail){
	var re=/^[a-z\d]+((\'|\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
	return (sMail.match(re)==sMail)&&(sMail.substr(sMail.lastIndexOf("@")).length<=256);
}

function G_bDomainTLD(sMail){
	var re=/^(ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cat|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw|aero|arpa|biz|com|coop|edu|eu|gov|info|int|mil|museum|name|net|org|pro|jobs|travel|mobi)$/gi;
	return sMail.substr(sMail.lastIndexOf(".") + 1).match(re)!=null;
}

function G_testmail(sMail){
	if (!G_bSyntaxeEmail(sMail)){return false;}
	else if (!G_bDomainTLD(sMail)){return false;}
	else {return true;}
}

// equiv de htmlentites decode
		
function html_entity_decode(str) {
  	var ta=document.createElement("textarea");
   	ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
   	return ta.value;
}

// desactivation touche entr�e pour opera :)

function handleEnter (event) {
   	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
   	if (keyCode == 13) {return false;} else {return true;}
}

// validation puce
function ImgSet(champs , statut){
	if(G_obj('img_'+champs))
		G_obj('img_'+champs).src = './images/'+statut+'.gif';
	}

// appel d'un objet
function G_obj(objname){
    testObj = document.getElementById(objname);return testObj;
}

function test_mail(champs){
	if(!G_testmail(champs.value)){ImgSet(champs.name , '0');}else{ImgSet(champs.name , '1');}
}

//Grosse triche pour unchecker un radiobutton
function uncheck(form, MyName) {
	if(document.forms[form]){
		document.forms[form].elements[MyName].checked = false;
		}
}

function Mydelete(Myelement , Mymessage) {
	if(!confirm(Mymessage)){return false;}
	else{Myelement.form.submit();}
	}

function maxLength(field, maxChars)
{
	if(field.length >= maxChars) {
        return true;
    } else {
    	return false;
    }
}

function test_length(field, maxChars){
	if(maxLength(field.value, maxChars)){
		ImgSet(field.name , '0')
	} else {
		ImgSet(field.name , '0')
	}
}

function disable_select(value, src_select, dest_select){
	if(src_select.value == ''){
		src_select.form[dest_select].disabled = "";
	} else {
		src_select.form[dest_select].disabled = "true";
	}
}
		
function verifForm(champs){
	var MyForm = champs.form;
	if(MyForm){
		var Mytype;
		var MyValue;
		var TabChamps = new Array();
		var Myref;
		var pos;
		var cont=0;
		if(MyForm.name == 'AccountCreate')
			TabChamps = new Array('text|user_nom' , 'text|user_prenom' , 'mail|user_mail', 'text|user_password', 'valid|user_password_valid');
		else if(MyForm.name == 'GroupCreate')
			TabChamps = new Array('text|group_name', 'textarea|group_desc', 'textarea|group_tags');		
		else if(MyForm.name == 'EventCreate')
			TabChamps = new Array('text|event_name', 'textarea|event_desc', 'textarea|event_place', 'textarea|event_tags', 'text|event_start' , 'text|event_end');		
		else if(MyForm.name == 'UserInvite')
			TabChamps = new Array('text|user_mail');
		else if(MyForm.name == 'NewFieldCateg')
			TabChamps = new Array('text|categ_name');
		else if(MyForm.name == 'FastSearch')
			TabChamps = new Array('text|search');	
		else if(MyForm.name == 'CreatePage')
			TabChamps = new Array('text|page_title', 'text|page_contents');	
		else if(MyForm.name == 'MenuCreate')
			TabChamps = new Array('text|menu_name');	
		else if(MyForm.name == 'NewField')
			TabChamps = new Array('text|field_name', 'select|field_categ_id' ,'select|field_type');	
		else if(MyForm.name == 'FullAction_invit')
			TabChamps = new Array('text|list_uid');	
		else if(MyForm.name == 'FileCreate')
			TabChamps = new Array('text|file_url' , 'select|file_categ_id' , 'text|file_locale_name');	
		else if(MyForm.name == 'FileCategCreate')
			TabChamps = new Array('text|file_categ_locale_value');	
	
		else if(MyForm.name.substring(0,13) == 'post_message_')
			TabChamps = new Array('text|post_subject' , 'text|post_text');
		else if(MyForm.name == 'post_mail')
			TabChamps = new Array('text|post_subject' , 'text|post_text' , 'text|mail_dest');	
		else if(MyForm.name == 'LinkCreate')
			TabChamps = new Array('text|link_locale_title' , 'text|link_addr' , 'select|link_categ_id');	
		else if(MyForm.name == 'LinkCategCreate')
			TabChamps = new Array('text|link_categ_locale_value');	
		else if(MyForm.name == 'AgendaCreate')
			TabChamps = new Array('text|event_nom', 'text|event_start', 'text|event_end');
		else if(MyForm.name == 'PasswordChange')
			TabChamps = new Array('text|current_password', 'text|new_password', 'text|confirm_password');
		else if(MyForm.name == 'EmailChange')
			TabChamps = new Array('mail|new_email');	
		else if(MyForm.name == 'PhotoChange')
			TabChamps = new Array('text|new_photo');	
				
		if(TabChamps.length > 0){
			for(i=0;i<TabChamps.length;i++){
				MyValue = '';
				MyType = TabChamps[i].split('|');
		
					if(MyForm.elements[MyType[1]]){
					// type select
					if(MyType[0] == 'select')
						MyValue = MyForm.elements[MyType[1]].options[MyForm.elements[MyType[1]].selectedIndex].value;
					// typecheckbox
					else if(MyType[0] == 'checkbox'){
						if(MyForm.elements[MyType[1]].checked)
							MyValue = MyForm.elements[MyType[1]].value;
						else
							MyValue = '';
					}
					// type text et area et mail
					else
						MyValue = MyForm.elements[MyType[1]].value;
					
					if(MyValue != ''){
						if(MyType[0] == 'mail'){if(!G_testmail(MyValue)){cont=1;ImgSet(MyType[1] , '0');}else{ImgSet(MyType[1] , '1');}}
						else if(MyType[0] == 'textarea'){if(maxLength(MyValue, 255)){cont=1;ImgSet(MyType[1] , '0');}else{ImgSet(MyType[1] , '1');}}
						else if(MyType[0] == 'valid'){
							pos = MyType[1].lastIndexOf("_");
							Myref = MyType[1].substr(0, pos);
							if(MyForm.elements[Myref].value != MyValue){cont=1;ImgSet(MyType[1] , '0');}else{ImgSet(MyType[1] , '1');}
							}
						else{ImgSet(MyType[1] , '1');}
						}
					else{cont=1;ImgSet(MyType[1] , '0');}
					}
				}
			if(cont == 0){
				G_obj(MyForm.name+'_BtnSubmit').className = "Activate";
				G_obj(MyForm.name+'_BtnSubmit').onclick = function() { 
					if(MyForm.name == 'post_mail'){
						if(window.parent.G_obj('MyBoxUp')){
							window.parent.G_obj('MyBoxUp').style.display = 'none';
						}
					}
					document.forms[MyForm.name].submit();
					};
				}
			else{
				G_obj(MyForm.name+'_BtnSubmit').className = "InActivate";
				G_obj(MyForm.name+'_BtnSubmit').onclick = function() {};
				}
			}
		}
	}

function verifForm1(champs){
	var MyForm = champs.form;
	var Mytype;
	var MyValue;
	var TabChamps = new Array();
	var Myref;
	var pos;
	var cont=0;
	if(MyForm.name == 'FileCreate')
		TabChamps = new Array('text|link_locale_title' , 'text|link_addr' , 'select|link_categ_id');	
			
	if(TabChamps.length > 0){
		for(i=0;i<TabChamps.length;i++){
			MyValue = '';
			MyType = TabChamps[i].split('|');
	
			// type select
			if(MyType[0] == 'select')
				MyValue = MyForm.elements[MyType[1]].options[MyForm.elements[MyType[1]].selectedIndex].value;
			// typecheckbox
			else if(MyType[0] == 'checkbox'){
				if(MyForm.elements[MyType[1]].checked)
					MyValue = MyForm.elements[MyType[1]].value;
				else
					MyValue = '';
			}
			// type text et area et mail
			else
				MyValue = MyForm.elements[MyType[1]].value;
			
			if(MyValue != ''){
				if(MyType[0] == 'mail'){if(!G_testmail(MyValue)){cont=1;ImgSet(MyType[1] , '0');}else{ImgSet(MyType[1] , '1');}}
				else if(MyType[0] == 'textarea'){if(maxLength(MyValue, 255)){cont=1;ImgSet(MyType[1] , '0');}else{ImgSet(MyType[1] , '1');}}
				else if(MyType[0] == 'valid'){
					pos = MyType[1].lastIndexOf("_");
					Myref = MyType[1].substr(0, pos);
					if(MyForm.elements[Myref].value != MyValue){cont=1;ImgSet(MyType[1] , '0');}else{ImgSet(MyType[1] , '1');}
					}
				else{ImgSet(MyType[1] , '1');}
				}
			else{cont=1;ImgSet(MyType[1] , '0');}
			}
		if(cont == 0){
			G_obj(MyForm.name+'_BtnSubmit').className = "Activate";
			G_obj(MyForm.name+'_BtnSubmit').onclick = function() { 
				if(MyForm.name == 'post_mail'){
					if(window.parent.G_obj('MyBoxUp')){
						window.parent.G_obj('MyBoxUp').style.display = 'none';
					}
				}
				document.forms[MyForm.name].submit();
				};
			}
		else{
			G_obj(MyForm.name+'_BtnSubmit').className = "InActivate";
			G_obj(MyForm.name+'_BtnSubmit').onclick = function() {};
			}
		}
	}


	document.getElementsByClassName = function(nomClasse, element) {
  	var resulat = new Array();
  	if(nomClasse!="" || typeof element == 'object'){
  	  var mesFils = element.getElementsByTagName('*');
  	  var exp_reg = new RegExp("(^|\\s)" + nomClasse + "(\\s|$)");
  	  for (var i = 0; i < mesFils.length; i++) {
  	    var laClasse = (mesFils[i].className)? mesFils[i].className : "";
  	    if(laClasse != "" && (laClasse == nomClasse || laClasse.match(exp_reg))){
  	      resulat.push(mesFils[i])
   	   }
   	 }
  	}
  	return resulat;
		};

	function MydoStyle(ide , styl){
		if(G_obj('SubEntry_'+ide)){
			G_obj('SubEntry_'+ide).style.display = styl;
			}
		}

function DelFileShow(creator , Myfile , MyType){
	if(Myfile != ''){
		var xhr = getXhr();
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){
				if(xhr.responseText.trim() != 'true'){alert("erreur : "+xhr.responseText);}
				else{
					document.forms['FileCreate'].elements['file_url'].value= '';
					document.getElementById('UploadDone').style.visibility =  'hidden';
					document.getElementById('UploadDone').style.display =  'none';
					G_obj('FrameUpload').src = _G_URL_CGI+'/index.php?idc='+creator;
					document.getElementById('FrameUpload').style.visibility =  'visible';
					document.getElementById('FrameUpload').style.display =  'block';
					verifForm(document.forms['FileCreate'].elements['file_url']);
					}
				}
			}
		xhr.open("POST","?module=files&&action=delete_file",true);
		xhr.setRequestHeader( "Content-type" , "application/x-www-form-urlencoded" ); 
		xhr.send('doc='+Myfile+'&type='+MyType+'&creator='+creator+'');
		}
	}

/********************************************************
Cr�ation d'une requ�te ajax
*********************************************************/

	function getXhr(){
		var xhr = null; 
		if(window.XMLHttpRequest){xhr = new XMLHttpRequest();}
		else if(window.ActiveXObject){try {xhr = new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {xhr = new ActiveXObject("Microsoft.XMLHTTP");}}
		else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false;} 
		return xhr
		}

/********************************************************
trim en javascript
*********************************************************/
String.prototype.trim = function(){return this.replace(/(?:^\s+|\s+$)/g, "");}

/*******************************************************************
message d'alerte pour demander si veux vraiment envoyer la demande
********************************************************************/
	
	function verifSubmit(Myform , champs, message){
		if(champs != ''){
			if(Myform.elements[champs].value == ''){
				return false;
				}
			else{if(!confirm(message)){return false;}else{Myform.submit();}}
			}
		else{
			if(!confirm(message)){return false;}else{Myform.submit();}
			}
		}

	function askConfirmation(module , actio , param , message){
		if(!confirm(message))
			return false;
		else
			window.location.href='?module='+module+'&action='+actio+param;
		}
