//---------------------------------------------------------------------||
// FUNCTION:    getCookieVal                                           ||
// PARAMETERS:  offset                                                 ||
// RETURNS:     URL unescaped Cookie Value                             ||
// PURPOSE:     Get a specific value from a cookie                     ||
//---------------------------------------------------------------------||
function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);

   if ( endstr == -1 )
      endstr = document.cookie.length;
   return(unescape(document.cookie.substring(offset, endstr)));
}


//---------------------------------------------------------------------||
// FUNCTION:    FixCookieDate                                          ||
// PARAMETERS:  date                                                   ||
// RETURNS:     date                                                   ||
// PURPOSE:     Fixes cookie date, stores back in date                 ||
//---------------------------------------------------------------------||
function FixCookieDate (date) {
   var base = new Date(0);
   var skew = base.getTime();

   date.setTime (date.getTime() - skew);
}

//---------------------------------------------------------------------||
// FUNCTION:    GetCookie                                              ||
// PARAMETERS:  Name                                                   ||
// RETURNS:     Value in Cookie                                        ||
// PURPOSE:     Retrieves cookie from users browser                    ||
//---------------------------------------------------------------------||
function GetCookie (name) {
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;

   while ( i < clen ) {
      var j = i + alen;
      if ( document.cookie.substring(i, j) == arg ) return(getCookieVal (j));
      i = document.cookie.indexOf(" ", i) + 1;
      if ( i == 0 ) break;
   }

   return(null);
}


//---------------------------------------------------------------------||
// FUNCTION:    SetCookie                                              ||
// PARAMETERS:  name, value, expiration date, path, domain, security   ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Stores a cookie in the users browser                   ||
//---------------------------------------------------------------------||
function SetCookie (name,value,expires,path,domain,secure) {
   document.cookie = name + "=" + escape (value) +
                     ((expires) ? "; expires=" + expires.toGMTString() : "") +
                     ((path) ? "; path=" + path : "/") +
                     ((domain) ? "; domain=" + domain : "") +
                     ((secure) ? "; secure" : "");
}


//---------------------------------------------------------------------||
// FUNCTION:    DeleteCookie                                           ||
// PARAMETERS:  Cookie name, path, domain                              ||
// RETURNS:     null                                                   ||
// PURPOSE:     Removes a cookie from users browser.                   ||
//---------------------------------------------------------------------||
function DeleteCookie (name,path,domain) {
   if ( GetCookie(name) ) {
      document.cookie = name + "=" +
                        ((path) ? "; path=" + path : "/") +
                        ((domain) ? "; domain=" + domain : "") +
                        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    SetLang                                                ||
// PARAMETERS:  lang                                                   ||
// RETURNS:                                                            ||
// PURPOSE:     set user's coookie with right language                 ||
//---------------------------------------------------------------------||
function setLang(lang) {	
	curcookilang = GetCookie("el_lang");
	if (curcookilang != lang || curcookilang == null) {
		DeleteCookie("el_lang","/");
		if (lang != "" && (lang == "FR" || lang == "EN") ) {
			SetCookie ("el_lang", lang, null, "/");
		}
		else {			
			SetCookie ("el_lang", "FR", null, "/");	
		}
	}

}

//---------------------------------------------------------------------||
// FUNCTION:    QueryString                                            ||
// PARAMETERS:  Key to read                                            ||
// RETURNS:     value of key                                           ||
// PURPOSE:     Read data passed in via GET mode                       ||
//---------------------------------------------------------------------||
QueryString.keys = new Array();
QueryString.values = new Array();
function QueryString(key) {
   var value = null;
   for (var i=0;i<QueryString.keys.length;i++) {
      if (QueryString.keys[i]==key) {
         value = QueryString.values[i];
         break;
      }
   }
   return value;
} 

//---------------------------------------------------------------------||
// FUNCTION:    QueryString_Parse                                      ||
// PARAMETERS:  (URL string)                                           ||
// RETURNS:     null                                                   ||
// PURPOSE:     Parses query string data, must be called before Q.S.   ||
//---------------------------------------------------------------------||
function QueryString_Parse() {	
   var query = window.location.search.substring(1);
   var pairs = query.split("&"); for (var i=0;i<pairs.length;i++) {
      var pos = pairs[i].indexOf('=');
      if (pos >= 0) {
         var argname = pairs[i].substring(0,pos);
         var value = pairs[i].substring(pos+1);
         QueryString.keys[QueryString.keys.length] = argname;
         QueryString.values[QueryString.values.length] = value;
      }
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    GetLang                                                ||
// PARAMETERS:                                                         ||
// RETURNS:     language (string)                                      ||
// PURPOSE:     retrieve user's sotred lang                            ||
//---------------------------------------------------------------------||	
function getLang(){					
	QueryString_Parse();
	lang = 	QueryString("lg");			
	//alert ("url :"+lang +":");					
	if (lang == null || lang ==  "") 
		lang = GetCookie("el_lang");
		//alert ("cookie :"+lang +":");					
	if (lang == "FR" || lang == "EN")
		return lang;			
	// default UND
	return null;
}

function validateForm(theform){
	result = checkFields(theform)
	if (result != "") {
		res = result.split("|")
		i = res[0]
		error = res[1]  
		if (error  != ""){
			alert(error)
			setTimeout("document.forms[0].elements["+i+"].focus()", 10)
		}
		return false
	}
	else {
		theform.submit()	
		return true
	}
}

//  required field starts with *
//  returns a error string 
function checkFields(theform){

//var theform = document.forms[0]
var bMissingFields = false
var errstr = ""
var fieldi = -1

errorstr = "|Veuillez indiquer les champs suivants :                       \n";
mailerr = " n'est pas valide\n";
if (getLang() == "EN") {
	errorstr = "|Please fill the following fields :                       \n";
	mailerr = " is not valid\n";
}

for(i=0; i<theform.elements.length; i++){
		var field = theform.elements[i]		
		var isReq = (field.name.charAt(0)=="*") ? true : false
		
		if(isReq || field.name == "e-mail"){
		
		
		/*
		at = theform.email.value.indexOf("@")			
		if (at > 0) {
			dot = theform.email.value.split("@")[1].indexOf(".")
			if (dot < 0) {
				bMissingFields = true;
				strFields += "     e-mail non valide\n";				
		*/
		
			if (field.name == "e-mail"){
				at = field.value.indexOf("@")			
				if (at > 0) {
					dot = field.value.split("@")[1].indexOf(".")
					if (dot < 0) {
						bMissingFields = true
						errstr += "      " + field.name.substring(1) + mailerr
						if (fieldi == -1) fieldi = i;
					}
				}
				else {
						bMissingFields = true
						errstr += "      " + field.name.substring(1) + mailerr
						if (fieldi == -1) fieldi = i;
				}
				
			}
			else {
		
				if((field.type=="text" || field.type=="textarea" || field.type=="password") && field.value==""){
					bMissingFields = true
					errstr += "      " + field.name.substring(1) + "\n"
					if (fieldi == -1) fieldi = i;
			
					if((field.type=="select-one") && field.selectedIndex == 0){	
						bMissingFields = true
						errstr += "      " + field.name.substring(1) + "\n"
						if (fieldi == -1) fieldi = i;			
					}
				}
			
				if(field.type=="select-multiple"){	
					Sel=0
					for(o=0; o<field.options.length; o++){
						if(field.options[o].selected){
						Sel++
						break
						}
					}
					if(Sel == 0){
						bMissingFields = true
						errsel = "      " + field.name.substring(1) + "\n"		
						if (errstr.indexOf(erradio) < 0)
							errstr += errsel;					
						if (fieldi == -1) fieldi = i;
					}			
				}
			
				if(field.type=="checkbox" || field.type=="radio"){
					var startingIndex = i	
					var Checked = 0
					var rLength=1
						while(field.type == theform.elements[i+1].type && field.name == theform.elements[i+1].name){
							rLength++
							i++ 
						}
				
					for(g = startingIndex; g < rLength+startingIndex; g++){
						if(theform.elements[g].checked){
						Checked++
						break
					}
				}		
				if(Checked == 0){
					i=startingIndex
					bMissingFields = true
					
					erradio = "      " + field.name.substring(1) + "\n"		
					if (errstr.indexOf(erradio) < 0)
						errstr += erradio;
					if (fieldi == -1) fieldi = i;
				}
			}
			}
		}//isReq
	  
	}//for
	if (bMissingFields) {		
		return fieldi + errorstr + errstr;
	}
	else {
		return ""
	}
}
