/**
	This function will load the city combo.
	Parameter passed :
	cityObj 	- document.form name.combo name.
	Call on 	- onLoad/onBlur.
*/
function fun_loadCity(cityObj)
{ 
	cityObj.length=0;
	cityObj.options[0].value = '';
	cityObj.options[0].text = '--Select City--';
	cityObj.options[1].value = 'Ahmedabad';
	cityObj.options[1].text = 'Ahmedabad';
	cityObj.options[2].value = 'Aurangabad';
	cityObj.options[2].text = 'Aurangabad';
	cityObj.options[3].value = 'Bangalore';
	cityObj.options[3].text = 'Bangalore';
	cityObj.options[4].value = 'Baroda';
	cityObj.options[4].text = 'Baroda';
	cityObj.options[5].value = 'Calcutta';
	cityObj.options[5].text = 'Calcutta';
	cityObj.options[6].value = 'Chandigadh';
	cityObj.options[6].text = 'Chandigadh';
	cityObj.options[7].value = 'Chennai';
	cityObj.options[7].text = 'Chennai';
	cityObj.options[8].value = 'Delhi';
	cityObj.options[8].text = 'Delhi';
	cityObj.options[9].value = 'Goa';
	cityObj.options[9].text = 'Goa';
	cityObj.options[10].value = 'Hyderabad';
	cityObj.options[10].text = 'Hyderabad';
	cityObj.options[11].value = 'Jaipur';
	cityObj.options[11].text = 'Jaipur';
	cityObj.options[12].value = 'Ludhiyana';
	cityObj.options[12].text = 'Ludhiyana';
	cityObj.options[13].value = 'Mangalore';
	cityObj.options[13].text = 'Mangalore';
	cityObj.options[14].value = 'Mumbai';
	cityObj.options[14].text = 'Mumbai';
	cityObj.options[15].value = 'Nagpur';
	cityObj.options[15].text = 'Nagpur';
	cityObj.options[16].value = 'Nasik';
	cityObj.options[16].text = 'Nasik';
	cityObj.options[17].value = 'Others';
	cityObj.options[17].text = 'Others';
}

/**
	This function will check for NOT NULL fields
	This will also help to trim unwanted spaces & will check for spaces between to words.
	Parameter passed :
	chkObj  - document.form name.field name
	message - Name of the column for e.g. First Name
	Call on	- final submit.
	for e.g.-
	if(!fun_chkBlank(chkObj, message)) return;		
*/
function fun_chk_blank_space(chkObj, message)
{
	fun_trimSpaces(chkObj);
	if(chkObj.value == '')
	{
		alert(message + ' should not be blank.');
		chkObj.focus();
		return;
	}
	if(!fun_chkSpace(chkObj)) return;
	return true;
}
/**
	This function will check for NOT NULL fields
	This will also help to trim unwanted spaces & will check for spaces between to words.
	Parameter passed :
	chkObj  - document.form name.field name
	message - Name of the column for e.g. First Name
	Call on	- final submit.
	for e.g.-
	if(!fun_chkBlank(chkObj, message)) return;		
*/
function fun_chk_blank_num_space(chkObj, message)
{
	fun_trimSpaces(chkObj);
	if(chkObj.value == '')
	{
		alert(message + ' should not be blank.');
		chkObj.focus();
		return;
	}
	if(!fun_chknuminchar(chkObj,message)) return;
	if(!fun_chkSpace(chkObj)) return;
	return true;
}
/**
	This will help to check the total length.
*/
function fun_length(chkObj,len,message)
{
	var valText = chkObj.value;
	if(valText !='' && valText.length != len) 
	{
		alert(message+" must be of "+len+" in length.");
		chkObj.select();
		chkObj.focus();
		return;
	}
	return true;
}
/**
	This function will check for combo selection.
	Parameter passed :
	selObj  - document.form name.combo name
	message - Name of the column for e.g. City
	Call on	- final submit.
	for e.g.-
	if(!fun_chkCombo(selObj, message)) return;	
*/
function fun_chkCombo(selObj, message)
{
	if(selObj.selectedIndex == 0)
	{
		alert(message + ' should be selected.');
		selObj.focus();
		return;
	}
	return true;
}
/**
	This function will check for number only 0 ot 9.
	Parameter passed :
	numObj    - document.form name.field name
	Call on	  - final submit/onBlur.
	for e.g.  -
	on Submit - if(!fun_chkNumeric(numObj)) return;	
*/
function fun_chknuminchar(numObj,message){
	var m = numObj.value;
	for(i=0;i<m.length;i++)
	   {
	        var n = m.charAt(i);
	        if(n <"0" || n >"9")
	        {}
			else
			{
	            alert("Numbers are not allowed in "+message+".");
	            numObj.select();
	            numObj.focus();
	            return;
	        }
	    }
	return true;
}

/**
	This function will check for number only 0 ot 9.
	Parameter passed :
	numObj    - document.form name.field name
	Call on	  - final submit/onBlur.
	for e.g.  -
	on Submit - if(!fun_chkNumeric(numObj)) return;	
*/
function fun_chkNumeric(numObj){
	var m = numObj.value;
	for(i=0;i<m.length;i++)
	   {
	        var n = m.charAt(i);
	        if(n <"0" || n >"9")
	        {
	            alert("Please enter valid number.");
	            numObj.select();
	            numObj.focus();
	            return;
	        }
	    }
	return true;
}
/**
	This function will check amount field.
	Parameter passed :
	amtObj	- document.form name.field name
	x		- Total length of field.
	y		- decimal limit.
	Call on	- final submit.
	for e.g.-
	if(!fun_chk_Amont(amtObj,x,y)) return; 	
*/
function fun_chk_Amont(amtObj,x,y){
	if(!fun_chkNumAmt(amtObj))
		return;
		
   	var ltind = 0;
	var val = amtObj.value;
	var len = x - y;
	var ind = val.indexOf('.');
	var aVal = val.substring(0,ind);
	var dVal = val.substring(ind+1,x);
	var aLen = aVal.length;
	var dLen = dVal.length;
	ltind = val.lastIndexOf('.');

	if(aLen > len){
		alert('Please enter valid amount.');
		amtObj.focus();
		return;
	}
	if(ind == 0){
		  alert('Please enter valid amount.');
		  amtObj.focus();
		  return;
	}
	if(ind > 0){
	    if(ind != ltind){
	        if(ltind > 0){
		     alert('Please enter valid amount.');
		     amtObj.focus();
		     return;
	        }
	    }
	    if(dLen > y){
		  alert('Please enter valid amount.');
		  amtObj.focus();
		  return;
	    }		 	
	}
	return true;
}

/**
	This finction will check for email validation.
	Parameter passed :
	emailobj  - document.form name.field name
	Call on	  - final submit.
	for e.g.  - 
	if(!fun_emailCheck(emailobj)) return;	
*/
function fun_new_emailCheck(emailobj){
	if(emailobj.value == '')
		return true;
	emailStr = emailobj.value;
        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){
			alert("Please enter valid email address.");
			emailobj.focus();
			return;
		}
*/		var user=matchArray[1]
		var domain=matchArray[2]

		if (user.match(userPat)==null){
		    // user is not valid
		    alert("Please enter valid email address.")
			emailobj.focus();
		    return;
		}

		var IPArray=domain.match(ipDomainPat)
		if(IPArray!=null){
		    // this is an IP address
			for (var i=1;i<=4;i++){
			    if (IPArray[i]>255){
		        	alert("Please enter valid email address.")
					emailobj.focus();
					return;
	    		}
		    }
    		return true;
		}
		var domainArray=domain.match(domainPat)
		if (domainArray==null){
			alert("Please enter valid email address.");
			emailobj.focus();
		    return;
		}
		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){
		   alert("Please enter valid email address.")
		   emailobj.focus();
		   return;
		}
		if(len<2){
		   var errStr="Please enter valid email address."
		   alert(errStr)
		   emailobj.focus();
		   return;
		}
	    return true;
}

/**
	This finction will check for email validation.
	Parameter passed :
	emailobj  - document.form name.field name
	Call on	  - final submit.
	for e.g.  - 
	if(!fun_emailCheck(emailobj)) return;	
*/
function fun_emailCheck(emailobj){
		emailStr = emailobj.value;
        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){
			alert("Please enter valid email address.");
			emailobj.focus();
			return;
		}
		var user=matchArray[1]
		var domain=matchArray[2]

		if (user.match(userPat)==null){
		    // user is not valid
		    alert("Please enter valid email address.")
			emailobj.focus();
		    return;
		}

		var IPArray=domain.match(ipDomainPat)
		if(IPArray!=null){
		    // this is an IP address
			for (var i=1;i<=4;i++){
			    if (IPArray[i]>255){
		        	alert("Please enter valid email address.")
					emailobj.focus();
					return;
	    		}
		    }
    		return true;
		}
		var domainArray=domain.match(domainPat)
		if (domainArray==null){
			alert("Please enter valid email address.");
			emailobj.focus();
		    return;
		}
		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){
		   alert("Please enter valid email address.")
		   emailobj.focus();
		   return;
		}
		if(len<2){
		   var errStr="Please enter valid email address."
		   alert(errStr)
		   emailobj.focus();
		   return;
		}
	    return true;
}

/**	
	This function will check for valid date.
	call on = submit
	for e.g.
	if(!isValidDate(document.frm_generic_form.sa_date_of_birth)) return;
*/
function isValidDate(dateObj)
{
	dateStr = dateObj.value;
	if(dateStr.length!=0)
	{
 		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

		var matchArray = dateStr.match(datePat); // is the format ok?
		if (matchArray == null)
		{
			alert("Please select valid date.");
			return;
		}
		day = matchArray[1]; // parse date into variables
		month = matchArray[3];
		year = matchArray[4];
		if (month < 1 || month > 12)
		{ // check month range
			alert("Please select valid date.");
			return;
		}
		if (day < 1 || day > 31)
		{
			alert("Please select valid date.");
			return;
		}
		if ((month==4 || month==6 || month==9 || month==11) && day==31)
		{
			alert("Please select valid date.");
			return;
		}
		if (month == 2)
		{ // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap))
			{
			alert("Please select valid date.");
			return;
		   	}
		}
		if(year < 1900)
		{
			alert("Please select valid date.");
			return;
		}
		return  true;
   }
}
/**
	This function will compare two dates.
	Parameter passed :
	first     - document.form name.first date (Should be minimum).
	last      - document.form name.first date (Should be maximum).
	first_name- Name of column  for e.g. Birth.
	last_name - Name of column  for e.g. current/System.
	Call on	  - final submit.	
	for e.g.  -
	if(!fun_compareTwoDate(first,last,first_name,last_name)) return;
*/
function fun_compareTwoDate(first,last,first_name,last_name)
{
	fst = first;
	lst = last;
	fst_dt = new Array();
	lst_dt = new Array();
	var fst_search;
	var lst_search;

	if((fst.indexOf('-',0)+1)>0)
		fst_search = "-";
	else
		fst_search = "/";

	if((lst.indexOf('-',0)+1)>0)
		lst_search = "-";
	else
		lst_search = "/";

	fst_dt = fst.split(fst_search);
	lst_dt = lst.split(lst_search);
	first_dt = new Date(parseInt(fst_dt[2],10),parseInt(fst_dt[1],10)-1,parseInt(fst_dt[0],10));
	last_dt = new Date(parseInt(lst_dt[2],10),parseInt(lst_dt[1],10)-1,parseInt(lst_dt[0],10));
	if((first_dt - last_dt)>0)
	{
		alert(first_name +" date should not be greater than " + last_name +".");
		return;
	}
	return true;
}

/**
	This function will check for NOT NULL fields.
	Parameter passed :
	chkObj  - document.form name.field name
	message - Name of the column for e.g. First Name
	Call on	- final submit.
	for e.g.-
	if(!fun_chkBlank(chkObj, message)) return;		
*/
function fun_chkBlank(chkObj, message)
{
	fun_trimSpaces(chkObj);
	if(chkObj.value == '')
	{
		alert(message + ' should not be blank.');
		chkObj.focus();
		return;
	}
	return true;
}
/**
	This function will remove the unnecessary starting spaces.
	This is only applicable on editable textbox,textarea
	Parameter passed :
	trimObj  - document.form name.field name
	Call on	 - onBlur.
	for e.g. -
	<input type="Text" name="txt_field1" onBlur=fun_trimSpaces(document.form name.txt_field1)>	
*/

function fun_trimSpaces(trimObj){
	var m = '';
	var l = 0
	var s = ''; 
	m = trimObj.value;
	l = m.length;
	for (var n=0;n<l;n++)
	{
	   s= m.charAt(0);	
	   if(s == ' ')
		if (m.length==1)
			m="";		
		else
			m=m.slice(1);
	}
	trimObj.value=m;
}

/**
	This function will check for blank spaces between the to words.
	Parameter passed :
	spaceObj  - document.form name.field name
	Call on	  - final submit/onBlur.	
	for e.g.  -
	on Submit - if(!fun_chkSpace(spaceObj)) return;	
*/
function fun_chkSpace(spaceObj){
	var m = spaceObj.value;
	for(i=0;i<m.length;i++)
	   {
	        var n = m.charAt(i);
	        if(n == " ")
	        {
	            alert("Blank spaces are not allowed.");
	            spaceObj.select();
	            spaceObj.focus();
	            return;
	        }
	    }
	return true;
}

/* function for sales applications submition*/

function fun_submitSales(){
     return "http://10.16.241.50:9080/web/sales/jsp/saleshtmlprocessor.jsp";
}

function fun_submitRelSales(){
     return "http://10.16.241.50:9080/web/sales/jsp/BankRelationController.jsp";
}

/**
	Don't use this function from your JSP.
	This is for internal calling.
*/
function fun_chkNumAmt(charObj){
	var m = charObj.value;
	for(i=0;i<m.length;i++)
	   {
	        var n = m.charAt(i);
	        if ((n <"0" || n >"9") && (n!="."))
	        {
	            alert("Please enter valid amount.");
	            charObj.select();
	            charObj.focus();
	            return;
	        }
	    }
	return true;
}

function check_dob(dt)
{
  var dt1 = dt.substr(6,4)+"-"+dt.substr(3,2)+"-"+dt.substr(0,2);
  var sysdt = new Date();
  var mm = ""+(sysdt.getMonth()+1);
  if(mm.length==1)
  {
    mm="0"+mm;
  }
  var dd = ""+sysdt.getDate();
  if(dd.length==1)
  {
    dd="0"+dd;
  }
  var sysdt1 = sysdt.getYear()+"-"+mm+"-"+dd;
  var age = DiffDays(sysdt1,dt1);

  if((age>=6570) && (age<=36500))
  {
    return true;
  }

  alert("Please Enter Valid Date");
  return;
}

function DiffDays(S2, S1)
{
	var X = ReadISO8601date(S2) ; if (X<0) return "Date 1 bad" ;
	var Y = ReadISO8601date(S1) ; if (Y<0) return "Date 2 bad" ;
  return (Date.UTC(X[0], X[1]-1, X[2])-Date.UTC(Y[0], Y[1]-1, Y[2]))/86400000
}

function ReadISO8601date(Q) 
{ // adapting for other layouts should be easy
		if (Q.search(/^\d+-\d\d-\d\d$/)!=0) { return -2 } // bad format
		var j, T = Q.split('-')
		for (j=0; j<=2; j++) { T[j] = parseInt(T[j], 10) } // wanted ?
		if (!ValidDate(T[0], T[1]-1, T[2])) { return -1 } // bad value
		return T 
}

function ValidDate(y, m, d) 
{// m = 0..11
        with (new Date(y, m, d)) 
		return ((getDate()==d) && (getMonth()==m)) 
}


function fun_chkDate(dt)
{
  var year = dt.substr(6,4) ;
  var month = (dt.substr(3,2) - 1);
  var day = dt.substr(0,2);
  var date1 = new Date();
  var date2 = new Date(year,month,day,0,0,0);
	
  var difference =
        Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)
      - Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);

  var age = difference/1000/60/60/24;
  if((age>=6570) && (age<=36500))
  {
    return true;
  }
  alert("Please Enter Valid Date");
  return;
}