/************************************************************
 ***** Open a popup in the middle of the curent window ******
 ************************************************************/

function openPopup(linkdata, name, width, height, options){
  var screenW = 400;
  var screenH = 400;
  var screenPosX = 0;
  var screenPosY = 0;
  var agent = navigator.userAgent.toLowerCase();
  var version = navigator.appVersion;
  if( agent.indexOf('msie') != -1 ) {
    screenW = document.body.clientWidth;
    screenH = document.body.clientHeight;
    screenPosX = window.screenLeft;
    screenPosY = window.screenTop;    
  } else {
    screenW = window.outerWidth;
    screenH = window.outerHeight;
    screenPosX = window.screenX;
    screenPosY = window.screenY;    
  }

  var posX = screenPosX +((screenW-width)/2);
  var posY = screenPosY+((screenH-height)/2);

  theWindow = window.open(linkdata,
              name,
              'height='+height+', width='+width+', screenX='+posX+', left='+posX+', screenY='+posY+', top='+posY+', '+options
  );
  
  theWindow.focus();
  return theWindow;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) curtop += obj.y;
	return curtop;
}

function getObject(objname){
  if(document.getElementById)
    return document.getElementById(objname);
  else 
    return eval(objname);
}


/************************************************************
 *********** Usefull forms field check functions ************
 ************************************************************/
 
function getField(form, fieldname){
	return $('#'+fieldname);
}

function getFieldValue(form, fieldname){
	return $('#'+fieldname).val();
}

function checkMandatory(form, fieldname){
	
	var value = getFieldValue(form, fieldname);
	return (value.length != 0);
	
}

function checkSelectMandatory(form,fieldname){
	var value = getField(form, fieldname).selectedIndex;
	if (value===0) {
		return false;	
	} else {
		return true;
	}
}

function checkDomain(form, fieldname){
	var value = getFieldValue(form, fieldname);

	if (value.length != 0) {	  
	  pattern=/^[A-Za-z0-9][-A-Za-z0-9]*$/;
	  return pattern.test(value);
	}	
	return true;
}

function checkNumeric(form, fieldname){
	var value = getFieldValue(form, fieldname);

	if (value.length != 0) {	  
	  pattern=/^\d*$/;
	  return pattern.test(value);
	}	
	return true;
}
function checkNumericValue(value){
	if (value.length != 0) {	  
	  pattern=/^\d*$/;
	  return pattern.test(value);
	}	
	return true;
}
function checkCharacter(form, fieldname){
	var value = getFieldValue(form, fieldname);
	var reg = new RegExp('(.)*[0-9\|\@\%\$\!]+(.)*');
	var to_match =    /[0-9]*/;
	var resultinit = value.toString();
	if (reg.test(resultinit)) 
		return false;
	else
		return true;
}
function checkCharacterValue(value){
	var reg = new RegExp('(.)*[0-9\|\@\%\$\!]+(.)*');
	var to_match =    /[0-9]*/;
	var resultinit = value.toString();
	if (reg.test(resultinit)) 
		return false;
	else
		return true;
}
function checkMandatoryCheckbox(form,fieldname){
	return $("input[@name='"+fieldname+"']:checked").val()!=null;
}

function checkEmailCombined(form, fieldname, fieldnameend){
	var emailStr = getFieldValue(form, fieldname);
	emailStr = emailStr + "@"+ getFieldValue(form, fieldnameend);
	if(emailStr.length == 0){
		return true;
	}

   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) ||
       (domArr[domArr.length-1].length > 3)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}

function checkEmail(form, fieldname) {
	 var emailStr = getFieldValue(form, fieldname);
   if (emailStr.length == 0) {
       return true;
   }

   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
   var matchArray=emailStr.match(emailPat);
   if (matchArray == null) {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) {
       for (var i = 1; i <= 4; i++) {
          if (IPArray[i] > 255) {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) {
       return false;
   }
   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if ((domArr[domArr.length-1].length < 2) ||
       (domArr[domArr.length-1].length > 3)) {
       return false;
   }
   if (len < 2) {
       return false;
   }
   return true;
}


function checkPhoneNumberFormat(form, fieldname)
{
	var phoneStr = getFieldValue(form, fieldname);
	var result= true;

	if (phoneStr.length != 0) {	  
	  phonePat=/^(\+)?([0-9][-\/\.]?)+([0-9])+$/;
	  result= phoneStr.match(phonePat);
	}
	if(result){
	  return true;
  } else {
    return false;
  }
}


var dtCh= "/";
var htCh= ":";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29;}
   } 
   return this;
}

function checkDateForm(form, fieldname){
	var dtStr = getFieldValue(form, fieldname);
	return isDate(dtStr);
}

function checkDateFormCombined(form, fieldname, fieldname2, fieldname3){
	var dtStr = getFieldValue(form, fieldname);
	dtStr += "/"+getFieldValue(form, fieldname2);
	dtStr += "/"+getFieldValue(form, fieldname3);
	return isDate(dtStr);
}


function isDate(dtStr){
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var pos3=dtStr.indexOf(' ');
	if(pos3 == -1) pos3 = dtStr.length;
	var strDay=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1,pos3);
	var strHourMinSec=dtStr.substring(pos3,dtStr.length);
	var strHour = '00';
	var strMin  = '00';
	var strSec  = '00';
	if(dtStr.indexOf(' ')==-1)strHourMinSec='';
	if(strHourMinSec!=''){
		var pos1H=strHourMinSec.indexOf(htCh);
		var pos2H=strHourMinSec.indexOf(htCh,pos1H+1);
		strHour = strHourMinSec.substring(0,pos1H);
		strMin = strHourMinSec.substring(pos1H+1,pos2H);
		strSec = strHourMinSec.substring(pos2H+1,strHourMinSec.length);
	}
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) 
		strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) 
		strMonth=strMonth.substring(1);
		
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}

	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	
	hour=parseInt(strHour);
	min=parseInt(strMin);
	sec=parseInt(strSec);
	
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy");
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month");
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day");
		return false;
	}
	if(strHourMinSec != ''){
		if (hour<0 || hour>24){
			//alert("Please enter a valid month");
			return false;
		}
		if (min<0 || min>60){
			//alert("Please enter a valid month");
			return false;
		}
		if (sec<0 || sec>60){
			//alert("Please enter a valid month");
			return false;
		}
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear);
		return false;
	}
	/*
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false;
	}
	*/
	return true;
}



/************************************************************
 ************** Simple popup opening functions **************
 ************************************************************/

function errorPopup(linkdata){
  genericPopup(linkdata);
}


/************************************************************
 ************** Mouse cursor change functions ***************
 ************************************************************/
function setMouseCursor(elem, cursorName){
	var i;
	var childs;
	if(elem.style){
		elem.style.cursor = cursorName;
	}
	if(elem.childNodes){
		childs = elem.childNodes;
		for (i=0; i<childs.length; i++){
			setMouseCursor(childs[i], cursorName);
		} 
	}
}
/************************************************************
 ************** show and cache div **************************
 ************************************************************/
function showDiv(itemshow,category) {
	if (itemtoshow.search(/fonction/)!= -1)
	{
		divname = document.getElementsByTagName('div');
		for (i=6;i<divname.length-4;i++){
			if(divname[i].id) 
			{
				var name = divname[i].getAttribute('ID');
				searchvalue = /category/;
				//alert(searchvalue);
				if (name.search(/fonction/) != -1)
				{
					document.getElementById(name).style.display = 'none';
				}
			}
		}
		document.getElementById(itemtoshow).style.display='block';
	}
}
function cacheDiv(){
	
}

function PopupImage(img,hauteur,largeur,titre){ 
	//titre="Maison Halter Ethnic"; 
	w=open("",'image','width='+largeur+'px,height='+hauteur+'px,toolbar=no,scrollbars=no,resizable=no'); 
	w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>"); 
	w.document.write("<BODY onload='javascript:window.focus()' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0><IMG src='"+img+"' border=0>"); 
	w.document.write(""); 
	w.document.write("</BODY></HTML>"); 
	w.document.close(); 
} 

function fillBorders(input){
	$('#'+input).addClass("border-red");
}
function emptyBorders(input){
	$('#'+input).removeClass("border-red");
}

function trim(myString){
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');
} 
