/************************************************************
 ***** 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){
	if(getField(form, fieldname) != null && getField(form, fieldname) != 'undefined')
		return getField(form, fieldname).value;
	else{
		return 0;
	}
}

function checkMandatory(form, fieldname){
	var value = getFieldValue(form, fieldname);
	return (value.length != 0);
}

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;
  }
}

/*
	Check validity of date BUT passed the FIELD of day, month, year (used for date split in 3 distinct fields)
*/

function checkDateAsString(dateAsString){
	/*first = dateAsString.indexOf("/",0);
	day = dateAsString.substring(0,first);
	dateAsString = dateAsString.substring(first+1,dateAsString.length);
	first = dateAsString.indexOf("/",0);
	month = dateAsString.substring(0,first);
	year = dateAsString.substring(first+1,dateAsString.length);
	//alert(day+' '+month+' '+year);
	if(day != '' && month != '' && year != '')
		return checkDate(day, month, year);
	else*/
		return true;
}
function checkDate(day, month, year){
	if(day.length==0) return true;
	if(month.length==0) return true;
	if(year.length==0) return true;
	
	
	var to_match =    /[0-9]*/;
	var dayinit = day.value.toString();
	var monthinit = month.value.toString();
	var yearinit = year.value.toString();
	var dayresult = dayinit.match(to_match);
	var monthresult = monthinit.match(to_match);
	var yearresult = yearinit.match(to_match);
	if ((dayresult[0].length != dayinit.length) 
		|| (monthresult[0].length != monthinit.length) 
		|| (yearresult[0].length != yearinit.length) ) 
	{  
		return false;
	}
	
	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);
		} 
	}
}
/************************************************************
 ************** Validation of numerci value ***************
 ************************************************************/
function IsNumeric(strString)
   //  check for valid numeric strings	
{
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
}
/************************************************************
 ************** Contour od input ***************
 ************************************************************/
function fillBorders(input)
   //  check for valid numeric strings	
{
   var style = "2px solid #FF0000";
   document.getElementById(input).style.border = style;
   return true;
}
function emptyBorders(input)
   //  check for valid numeric strings	
{
   var style = "";
   document.getElementById(input).style.border = style;
   return true;
}
function hideShowSelectBox(){
	mySelects = document.getElementsByTagName("select");
	//alert(mySelects.length);
	for(var t = 0; t < mySelects.length; t++){
		//alert(mySelects[t] + ' - '+ mySelects[t].id);
		if(mySelects[t].id != null && mySelects[t].id != ''){
			var elem = document.getElementById(mySelects[t].id);
			if(elem.style.display == 'none'){
				/*alert('display');*/
				elem.style.display = '';
			}else{
				/*alert('don\'t display');*/
				elem.style.display = 'none';
			}
		}/*else if(mySelects[t].name != null && mySelects[t].name != ''){
			alert(mySelects[t].name);
			var elem = document.getElementsByName(mySelects[t].name);
			if(elem.style.display == 'none'){
				elem.style.display = '';
			}else{
				elem.style.display = 'none';
			}
		}else{
		
		}*/
	}
}