/************************************************************
 ***** 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 eval("form."+fieldname);
}

function getFieldValue(form, fieldname){
	return getField(form, fieldname).value;
}

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 checkBoxChecked(form,fieldname){
	var mx=getField(form, fieldname).length;
	var bok=false;
	if (mx===undefined) 
	{
		if (getField(form, fieldname).checked)
			bok=true;
	}
	else
	{
		for (i=0;i<mx;i++)
		{
			if (getField(form, fieldname)[i].checked==true)
				bok=true;
		} 
	}
	return bok;
}

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=/^([\s\+-\/\.]*[0-9][\s\+-\/\.]*)*$/;
	  result= phoneStr.match(phonePat);
	}
	if(result){
	  return true;
  } else {
    return false;
  }
}

function checkDate(day, month, year){
	if(day.length==0) return true;
	if(month.length==0) return true;
	if(year.length==0) return true;
	if (month < 1 || month > 12) {
	        return false;
  }
  if (day < 1 || day > 31) {
	  return false;
  }
  if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) {
    return false;
  }
  if (month == 2) {
	  var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day == 29 && !leap)) {
    	return false;
    }
  }
  return true;
}
 
/*
	Check validity of date BUT passed the value of day, month, year
*/

function checkDateValue(day, month, year){ 
	if(day.length==0) return true;
	if(month.length==0) return true;
	if(year.length==0) return true;
	if (month < 1 || month > 12) {
	        return false;
  }
  if (day < 1 || day > 31) {
	  return false;
  }
  if ((month == 4 || month == 6 || month == 9 || month == 11) && (day == 31)) {
    return false;
  }
  if (month == 2) {
	  var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day == 29 && !leap)) {
    	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(){
	
}