 function newXMLHttpRequest(){

  var xmlreq = false;

  if (window.XMLHttpRequest) {
    
    xmlreq = new XMLHttpRequest();

  } else if (window.ActiveXObject) {
  
    try {

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e1) {
     
      try {

        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

      }
    }
  }

  return xmlreq;
} 


/** checkonchangeblur and checkonchangechild method used to avoid displaying alert messages twice **/

var onchangeflagind=false;
var onchangeflagchild=false;

//Individual DOB
function checkonblurind(){
	if(onchangeflagind==false){
		calcproage();
		onchangeflagind=false;
	}
	else{
		onchangeflagind=false;
	}
}

function checkonchangeind(){
	onchangeflagind=true;
	calcproage();
}


//Child DOB
function checkonblurchild(){
	if(onchangeflagchild==false){
		calculateage();
		onchangeflagchild=false;
	}
	else{
		onchangeflagchild=false;
	}
}

function checkonchangechild(){
	onchangeflagchild=true;
	calculateage();
}

function loadTerm(){
var dobage=document.getElementById("Age").value;
var proposerage=document.getElementById("ProposerAge").value;

	if((dobage==" ") && (isDate(dobage)==false)){
		alert("Please Enter Child Date Of Birth");
		return false;
	}
	if((proposerage==" ") && (isDate(proposerage)==false)){
		alert("Please Enter Proposer Date Of Birth");
		return false;
	}


	if((proposerage !="") && (isDate(proposerage)==true) && (dobage !="") && (isDate(dobage)==true)){
	var parameters="category="+"Endowment"+"&lifestage="+"Children"+"&age="+dobage+"&proposerage="+proposerage;
	//alert("param "+parameters);
	var req = newXMLHttpRequest();
	//document.getElementById(elementid).options.length = 0;
	 req.onreadystatechange=function()
	 {
		if (req.readyState == 4) {
		  if (req.status == 200) {
			  //alert("hi" +req.responseText);
			addTermListBox(req.responseText);
		  } else {
			//alert("HTTP error: "+req.status);
		  }
		}
	  }

	req.open("POST", "getChildPT.do", true); 

    req.setRequestHeader("Content-Type", 
                       "application/x-www-form-urlencoded");

	req.send(parameters);
	}

}

function addTermListBox(pterm){
	document.getElementById("childpolicyterm").options.length = 0;
	if (window.ActiveXObject)
	  {
	  doc=new ActiveXObject("Microsoft.XMLDOM");
	  doc.async="false";
	  doc.loadXML(pterm);
	  }
	// code for Mozilla, Firefox, Opera, etc.
	else
	  {
	  var parser=new DOMParser();
	  doc=parser.parseFromString(pterm,"text/xml");
	  }// documentElement always represents the root node

	var masterdoc=doc.documentElement;

	var optionlist=doc.getElementsByTagName("Term");
	//alert(optionlist);
	var select_box=document.getElementById("childpolicyterm");
	var option_node=document.createElement('option');
	option_node.value="0";
	option_node.text="--Select--";
    try
	{
		select_box.add(option_node,null); // standards compliant
	}
	catch(ex)
	{
	  //alert(ex);
	select_box.add(option_node); // IE only
	}
	for(var i=0; i<optionlist.length; i++){
	
		var option_node=document.createElement('option');
		var TermVal=masterdoc.getElementsByTagName("Term")[i].childNodes[0].childNodes[0].nodeValue;
		option_node.value=TermVal;
		option_node.text=TermVal +" Years";
 
		   try
			{
			select_box.add(option_node,null); // standards compliant
			}
		  catch(ex)
			{
			  //alert(ex);
			select_box.add(option_node); // IE only
			}
	}
}
function calculateage(){
	if((document.getElementById("Age").value!=""))
	  {
		var datedif=0;
		var monthdif=0;
		var yeardif=0;
		var i=0;
		var j=0;
		var cal_age=0;
		var term=0;
		var currentDate=new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
		var dob=document.getElementById("Age").value;
		var presentage=0;
		
		var calculatedob=dob.split("/");
	    //date format(Fullyear,month,date) 
		var agedate=calculatedob[0];
		var agemonth= calculatedob[1];
		var ageyear=calculatedob[2];
		
			if(agedate!=0 && agemonth!=0 && ageyear!=0 ){
				if(isDate(dob)){
					datedif=currentDate.getDate()-agedate;
					monthdif = currentDate.getMonth()-agemonth;
					yeardif=currentDate.getFullYear()-ageyear;
				   if(datedif < 0) {
				                i = monthdif - 1; 
				        }
				        else {
				        	i = monthdif;
				        }
				        if(i < 0) {
				        	j=i + 12;
				        }
				        else {
				        	j = i;
				        }
				        if(i<0) {
				        	yeardif = yeardif - 1;
				        }
				       cal_age = yeardif;
						/*
				        if(j >= 6) {
				                cal_age = yeardif + 1;
				        }	
				        else {
				                cal_age = yeardif;
				        }
						*/
						
					if((cal_age < 0)||(cal_age > 17))
						{
							alert("Age Should be between 1 month to 17 Years");
							document.getElementById("Age").value="";
							document.getElementById("childcalcage").value="";
						}
					else{
							document.getElementById("childcalcage").value=cal_age;
						}
					}
				else {
					alert("Enter a valid date of birth in (dd/mm/yyyy) format");
					document.getElementById("Age").value="";
				}
			}
		}
	}
	
function calcproage(){
	if((document.getElementById("ProposerAge").value!=""))
	{
		var datedif=0;
		var monthdif=0;
		var yeardif=0;
		var i=0;
		var j=0;
		var cal_age=0;
		var term=0;
		var currentDate=new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
		var dob=document.getElementById("ProposerAge").value;
		var presentage=0;
		var calculatedob=dob.split("/");
		
		//date format(Fullyear,month,date) 
		var agedate=calculatedob[0];
		var agemonth= calculatedob[1];
		var ageyear=calculatedob[2];
			if(agedate!=0 && agemonth!=0 && ageyear!=0 ){
				if(isDate(dob)){
					datedif=currentDate.getDate()-agedate;
					monthdif = currentDate.getMonth()-agemonth;
					yeardif=currentDate.getFullYear()-ageyear;
				   if(datedif < 0) {
				                i = monthdif - 1; 
							}
				        else {
				        	i = monthdif;
				        }
				        if(i < 0) {
				        	j=i + 12;
				        }
				        else {
				        	j = i;
				        }
				        if(i<0) {
				        	yeardif = yeardif - 1;
				        }
				       cal_age = yeardif;
						/*
				        if(j >= 6) {
				                cal_age = yeardif + 1;
				        }	
				        else {
				                cal_age = yeardif;
				        }
						*/
						//alert(cal_age);
						
					if(cal_age>17)
						{
							document.getElementById("proposercalcage").value=cal_age;
						}
					if((cal_age < 17)||(cal_age > 60))
						{
							alert("Age Should be between 18 to 60 Years");
							document.getElementById("ProposerAge").value="";
							document.getElementById("proposercalcage").value="";
						}
					else{
							document.getElementById("proposercalcage").value=cal_age;
						}
					}
			else {
					alert("Enter a valid date of birth in (dd/mm/yyyy) format");
					document.getElementById("ProposerAge").value="";
				}
			}
		}
	}		

function resetPremiumTerm(){

document.getElementById("childpremiumterm").options.length = 0;
var optionlist='select';

var option_node=document.createElement('option');
		var select_box=document.getElementById("childpremiumterm");
		
		option_node.value=optionlist;
		option_node.text=optionlist+" Years";
 
		   try
			{
			select_box.add(option_node,null); // standards compliant
			}
		  catch(ex)
			{
			  //alert(ex);
			select_box.add(option_node); // IE only
			}
}

function validateChild(){
 

var lifestageCh=document.getElementById("quoteChild");
var lifestageInd=document.getElementById("quoteProposer");
var dobChild=document.getElementById("Age");
var proposerDob=document.getElementById("ProposerAge");
var AgeChild=document.getElementById("childcalcage");
var ProposerAge=document.getElementById("proposercalcage");
var Male=document.getElementById("genderM");
var Female=document.getElementById("genderF");
var needChEdu=document.getElementById("childneededu");
var needChMar=document.getElementById("childneedmar");
var needChMoney=document.getElementById("childneedmoney");
var PolicyTermCh=document.getElementById("childpolicyterm").value;
var PaymentModeCh=document.getElementById("childpaymentmode").value;
var PremiumTermCh=document.getElementById("childpremiumterm").value;
var inputType=document.getElementById("inputtypech");


	if(dobChild.value=="")
			{
			alert("Enter Date of Birth");
			dobChild.focus();
			dobChild.select();
			return false;	
			}
		
		if(isDate(dobChild.value)==false){

			alert('Enter a valid date of birth in (dd/mm/yyyy) format');
			dobChild.focus();
			dobChild.select();
			return false;
		}
		if(isLessThenCurrentDate(dobChild.value)==false){
			alert('Enter a valid date of birth');
			dobChild.focus();
			dobChild.select();
			return false;
		}
		

	if((AgeChild.value < 0 || AgeChild.value >17) ){

			alert("Age Should be between 1 month to 17 Years");
			dobChild.focus();
			dobChild.select();
			return false;
	}

	if(proposerDob.value=="")
			{
			alert("Enter Date of Birth");
			proposerDob.focus();
			proposerDob.select();
			return false;	
			}
		
		if(isDate(proposerDob.value)==false){

			alert('Enter a valid date of birth in (dd/mm/yyyy) format');
			proposerDob.focus();
			proposerDob.select();
			return false;
		}
		if(isLessThenCurrentDate(proposerDob.value)==false){
			alert('Enter a valid date of birth');
			proposerDob.focus();
			proposerDob.select();
			return false;
		}
	//alert(ProposerAge.value);
		if((ProposerAge.value < 17 || ProposerAge.value >60) ){
			alert("Age Should be between 18 to 60 Years");
			//proposerDob.focus();
			//proposerDob.select();
			return false;
		}

	if(Male.checked==false && Female.checked==false)
	{
		alert("Select Your Gender");
			return false;
	}


	if((needChEdu.checked==false) && (needChMar.checked==false) && (needChMoney.checked==false)){

	alert("Please select Your Need For insurance");
	return false;

	}


	if((PolicyTermCh=="select") || (PolicyTermCh==0))
	{
		alert("Select Your PolicyTerm");
			return false;
	}
	
	if(PaymentModeCh=="select")
	{
		alert("Select Your PaymentMode");
			return false;
	}
	
	if((PaymentModeCh=="RegularPremium") && (PremiumTermCh==0) ||(PremiumTermCh=="select") || (PremiumTermCh==""))
	{
		alert("Select Your PremiumTerm");
			return false;
	}
	
	if(inputType.value=="select")
	{
		alert("Select Plans Based On");
		return false;
	}

			if(inputType.value=="Premium"){
				var premiumAmt=document.getElementById("childpremium");
				if((trim(premiumAmt.value).length==0))
				{
					alert("Enter Your Premium Amount");
					premiumAmt.focus();
					premiumAmt.select();
					return false;
				}
				if(isIntegers(trim(premiumAmt.value)) == false){
					alert("Please Enter Valid Premium Amount");
					premiumAmt.focus();
					premiumAmt.select();
					return false;
				}
				if(premiumAmt.value.length > 10 ){
					alert("Premium Amount should be less than or equal to 10 digits");
					premiumAmt.focus();
					premiumAmt.select();
					return false;
				}
				if(premiumAmt.value < 500){
					alert("Minimum Premium Amount Should be Rs.500");
					premiumAmt.focus();
					premiumAmt.select();
					return false;
				}
			}

			if(inputType.value=="Coverage"){
				var CoverageCh=document.getElementById("childcoverage");
				if((trim(CoverageCh.value).length==0))
				{
					alert("Enter Your Coverage Amount");
					CoverageCh.focus();
					CoverageCh.select();
					return false;
				}
				if(isIntegers(trim(CoverageCh.value)) == false){
					alert("Please Enter Valid Coverage Amount");
					CoverageCh.focus();
					CoverageCh.select();
					return false;
				}
				if(CoverageCh.value.length > 10 ){
					alert("Coverage Amount should be less than or equal to 10 digits");
					CoverageCh.focus();
					CoverageCh.select();
					return false;
				}
				if(CoverageCh.value < 25000){
					alert("Minimum Coverage Amount Should be Rs.25,000");
					CoverageCh.focus();
					CoverageCh.select();
					return false;
				}
				if((CoverageCh.value%5000)!=0){
					alert("Coverage Amount Should be in multiples of 5,000");
					CoverageCh.focus();
					CoverageCh.select();
					return false;
				}
			}
	
	}

var reAlphabetic = /^[a-zA-Z]+$/
var defaultEmptyOK = false

function isEmpty(s){ 
	return ((s == null) || (s.length == 0))
}

function isAlphabetic(s){  
	var i;
    if (isEmpty(s)) 
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);
    else {
       return reAlphabetic.test(s)
    }
}
	/**
 * DHTML date validation script for dd/mm/yyyy. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isIntegers(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 isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	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)
	if (pos1==-1 || pos2==-1){
		//alert("Please enter valid Date(dd/mm/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 (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 || isIntegers(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false
	}
   return true
   }

   //VALIDATION FOR NUMBER
	var reInteger = /^\d+$/
	function isInteger(s){
	var i;
    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    return reInteger.test(s)
	}

	//VALIDATION FOR ALPHANUMERIC
    function isAlphaNumeric(val)
   {
   if (val.match(/^[a-zA-Z0-9]+$/))
    {
   return true;
   }
   else
   {
    return false;
   } 
   }

   function datt(s1,s2)
	  {
		t1=s1;
		//alert(t1.value);
		t2=s2;
		//alert(t2.value);
		//Total time for one day
        var one_day=1000*60*60*24; 
		//Here we need to split the inputed dates to convert them into standard format
		//for furter execution
        var x=t1.value.split("/");     
        var y=t2.value.split("/");
		//date format(Fullyear,month,date) 

        var date1=new Date(x[2],(x[1]-1),x[0]);
        var date2=new Date(y[2],(y[1]-1),y[0])
        var month1=x[1]-1;
        var month2=y[1]-1;
        
        //Calculate difference between the two dates, and convert to days
               
        _Diff=Math.ceil((date2.getTime()-date1.getTime())/(one_day)); 
        _Diff=_Diff+1;
		//alert(_Diff);
		if(_Diff <1) { 
			return false;
		}
		
     }
     
     
     //VALIDATION FOR CHECK DATE NOT LESS THAN CURRECT DATE

	function isLessThenCurrentDate(dateStr)
	{
	
	var mydate=new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
	var a1=new Array();
	a1=dateStr.split("/");
	var userdate=new Date(a1[2],a1[1]-1,a1[0]);
	var one_day=1000*60*60*24
	var noOfDays=Math.ceil((mydate.getTime()-userdate.getTime())/(one_day));
	if(noOfDays<=0){
	return false;
	}
	return true;
	}
	