/*
this funciton checkes for a whether a required field has 
data or not
*/
function requiredField(name,title){
	var nm=valOf(name);
	if(nm==''){
		document.getElementById(name).focus();
		return '\n *Please enter the '+title;
	}else{
		return '';
	}
}

/*
checkes whether the email feld is of proper format or not
*/
function emailField(name){
	var re = /^[a-zA-Z][_a-zA-Z0-9-]*(\.[_a-zA-Z0-9-]+)*@[a-zA-Z][a-zA-Z0-9-]*(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,3})$/;
	var val=valOf(name);
		
    if(val!='' && !re.exec(val)){    	
    	document.getElementById(name).focus();
    	return '\n *Please enter a valid email address';
    }else{
    	return '';
    }
}

/*
checks whether a number (float) is in proper format or not
*/
function numberField(name,title){
	var re = /^[-+]?([0-9]*\.)?[0-9]+$/;
	var val=valOf(name);
    if(val!='' && !re.exec(val)){
    	document.getElementById(name).focus();
    	return '\n *Please enter a valid number for '+title;
    }else{
    	if(val!='' && val==0){
    		return '\n *The value for '+title+' cannot be 0';
    	}else{
			return '';
		}
    }
}

/*
returns the value for a particlular field
*/
function valOf(val){
	var elem = document.getElementById(val);
	if(elem!=null){
		return elem.value;
	}else{
		return null;
	}
}

/*
compares two fields to see whether they are having same data or not
*/
function compareField(field1,field2,message){
	if(valOf(field1)!=valOf(field2)){
		return '\n *'+message;
	}else{
		return '';
	}
}

/*
validates the date fields 
*/
function dateField(name,title){
	var val=valOf(name);
	if(val!='' && !isDate(val,'dd/mm/yyyy')){
		return '\n * The date for '+title+' is not in proper format please give it as dd-mm-yyyy';
	}else{
		return '';
	}
}

function trim(s) {
    return String(s).replace(/^\s+|\s+$/g,"");
}

function isDate(val, format) {
  var dd = val.substr(format.indexOf('dd'), 2);
  var mm = val.substr(format.indexOf('mm'), 2);
  var yyyy = val.substr(format.indexOf('yyyy'), 4);

  if(isNaN(dd) || isNaN(mm) || isNaN(yyyy))
    return false;

  format = format.replace(/mm/, mm);
  format = format.replace(/dd/, dd);
  format = format.replace(/yyyy/, yyyy);

  if(format != val)
    return false;

  if(dd >= 1 && dd <= 31 && mm >= 1 && mm <= 12 && yyyy >= 1900 && yyyy <= 9999)
  {
    if(dd == 31 && (mm == 4 || mm == 6 || mm == 9 || mm == 11))  // No 31 days in Apr, Jun, Sep, Nov
      return false;

    if(dd >= 30 && mm == 2)  // No 30+ days in Feb
      return false;

    if(mm == 2 && dd == 29 && !(yyyy % 4 == 0  && (yyyy % 100 != 0 || yyyy % 400 == 0)))  // No Feb 29 in non-leap year
      return false;

    return true;
  }

  return false;
}

function isDefined(variable)
{
   return (typeof(window[variable]) != 'undefined');
}
  
function goTo(lnk)
{
  window.location = lnk;
}

