var dtCh= "/";
var minYear=1900;
var maxYear=2100;
var digits = "0123456789";

var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
//var ValidHowMuchCoverChars = ",.";
var ValidHowMuchCoverChars = ",";
var minDigitsInIPhoneNumber = 8;

var singlejointquote = "single";

function changeVal(b) {
	if (b == 0){
		document.form.DOB.value = ""
   	}
   	else if (b == 1){
   		document.form.PartnerDOB.value = ""
   	}
} 

function isInteger(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)

	if (pos1==-1){
		dtCh=".";
		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("The date format should be : dd/mm/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please select a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please select a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please select a valid year")
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}

	/* 26/09/2005 - SP - to make sure that dates after NOW are not entered for DOB */
	var right_now = new Date();
	var input_date = new Date(strYear, strMonth, strDay);

	if (input_date > right_now)
	{
		alert("Please enter a valid date");
		return false
	}

	return true
}


function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function CheckHowMuchCover(strHowMuch){
s=stripCharsInBag(strHowMuch,ValidHowMuchCoverChars);
return (isInteger(s));
}

function isFilled(elm) {
    if (elm.value == "" || elm.value == null) 
    return false;
    else return true;
}


function isPostCode(elm){
	// TODO: Need to complete this
	return true;
}

function isEmail(elm) {
    if (elm.value.indexOf("@") + "" != "-1" &&
        elm.value.indexOf(".") + "" != "-1" &&
        elm.value != "") 
    return true;
    else return false;
}

function isReady(form)
{

// Disabling Submit Button - so that the user does not submit the form more than once
var myButton = document.getElementById("submit1");
myButton.disabled = true;

// Personal Information ==========================================================================
// Name

    var myTitle = document.getElementById("Title");
    if (myTitle.value == "") {
    alert("Please enter your Title.");
    myButton.disabled = false;
    return false;
    }

    var myForeName = document.getElementById("ForeName")
    if (isFilled(myForeName) == false) {
    alert("Please enter your forename.");
    myForeName.focus();
    myButton.disabled = false;
    return false;
    }

    var mySurName  = document.getElementById("SurName")
    if (isFilled(mySurName) == false) {
    alert("Please enter your surname.");
    mySurName.focus();
    myButton.disabled = false;
    return false;
    }


// Tel - checking tel no

    var myPhone = document.getElementById("Phone")
    if (isFilled(myPhone) == false) {
    alert("Please enter your contact phone number.");
    myPhone.focus();
    myButton.disabled = false;
    return false;
    }

    if (checkInternationalPhone(myPhone.value)==false){
    alert("Please Enter a Valid Phone Number\n Valid characters are as follows:\n0-9\n()\n- +")
    myPhone.focus()
    myButton.disabled = false;
    return false
    }


//    var myPhone = document.getElementById("Phone2")
//    if (isFilled(myPhone) == false) {
//    alert("Please enter your alternative contact phone number.");
//    myPhone.focus();
//    myButton.disabled = false;
//    return false;
//    }
    
    var myPhone2 = document.getElementById("Phone2");
    if (isFilled(myPhone2) == true) {

	    if (checkInternationalPhone(myPhone2.value)==false){
		alert("Please Enter a Valid Alternative Phone Number\n Valid characters are as follows:\n0-9\n()\n- +")
		myPhone2.focus()
		myButton.disabled = false;
		return false
    	    }
    }

    
//////    if (isFilled(form.Phone3) == true) {

//////	    if (checkInternationalPhone(form.Phone3.value)==false){
//////		alert("Please Enter a Valid Phone Number\n Valid characters are as follows:\n0-9\n()\n- +")
//////		form.Phone3.focus()
//////		myButton.disabled = false;
//////		return false
//////    	    }
//////    }


// Email - no point checking e-mail if request is for tel

    var myEmail = document.getElementById("Email");
    if (isEmail(myEmail) == false) { 
    alert("Sorry but your quotation cannot be sent until you have given us a valid e-mail address to which we can respond. Please provide these details and then resubmit your request. Thank you.");
    myEmail.focus();
    myButton.disabled = false;
    return false;
    }

// Postcode

    var myHouseNumber = document.getElementById("HouseNumber");
    if (isFilled(myHouseNumber) == false) {
    alert("Please enter your House Number/ House Name.");
    myHouseNumber.focus();
    myButton.disabled = false;
    return false;
    }

    var myPostcode = document.getElementById("Postcode");
    if (isFilled(myPostcode) == false) {
    alert("Please enter your Postcode.");
    myPostcode.focus();
    myButton.disabled = false;
    return false;
    }

// Personal Gender

    var myGenderM = document.getElementById("GenderM");
    var myGenderF = document.getElementById("GenderF");
    if((!myGenderM.checked) && (!myGenderF.checked)){
    alert("Please enter your gender.");
    myButton.disabled = false;
    return false;
    }

// Date

    var myDOBd = document.getElementById("DOBd");
    var myDOBm = document.getElementById("DOBm");
    var myDOBy = document.getElementById("DOBy");
    //var myDOB = myDOBd.value + "/" + myDOBm.value + "/" myDOBy.value;
    if (isFilled(myDOBd) == false && isFilled(myDOBm) == false && isFilled(myDOBy) == false) {
    alert("Please enter your Date Of Birth.");
    myDOBd.focus();
    myDOBm.focus();
    myDOBy.focus();
    myButton.disabled = false;
    return false;
    }

    var dt=myDOBd.value + "/" + myDOBm.value + "/" + myDOBy.value;
    if (isDate(dt)==false){
    myDOBd.focus();
    myDOBm.focus();
    myDOBy.focus();
    //dt.focus();
    myButton.disabled = false;
    return false;
    }

// Personal Smoking

    var mySmokerY = document.getElementById("SmokerY");
    var mySmokerN = document.getElementById("SmokerN");
    if((!mySmokerY.checked) && (!mySmokerN.checked)){
    alert("Please enter if you have smoked a tobacco product in the last 12 months.");
    myButton.disabled = false;
    return false;
    }

// For the quotes we only need to check against the "Cover Amount" and the Years as the radio 
// buttons already have default values.
// Quote One =====================================================================================
    
    var myCoverTypeLI = document.getElementById("CoverType_Quote_1a");
    var myCoverTypeMLI = document.getElementById("CoverType_Quote_1b");
    if(myCoverTypeLI != null){
        if((!myCoverTypeLI.checked) && (!myCoverTypeMLI.checked)){
        alert("Please select the type of Life Insurance you require.");
        myButton.disabled = false;
        return false;
        }
    }

    var myQuote_1_CoverAmont = document.getElementById("Quote_1_CoverAmount");
    if (isFilled(myQuote_1_CoverAmont) == false) {
    alert("Please enter your amount of cover for Quote 1.");
    myQuote_1_CoverAmont.focus();
    myButton.disabled = false;
    return false;
    }

    if (CheckHowMuchCover(myQuote_1_CoverAmont.value) == false){
    //alert("The cover amount for Quote 1 must be numerical.");
    alert("The cover amount for Quote 1 must be numerical and have no decimal places.");
    myQuote_1_CoverAmont.value = "";
    myQuote_1_CoverAmont.focus();
    myButton.disabled = false;
    return false;
    }

    
    var myQuote_1_YearsOfCover = document.getElementById("Quote_1_YearsOfCover");
    if (isFilled(myQuote_1_YearsOfCover) == false) {
    alert("Please enter the number of years you want to be covered for in Quote 1.");
    myQuote_1_YearsOfCover.focus();
    myButton.disabled = false;
    return false;
    }

    if (myQuote_1_YearsOfCover.value > 99){
    alert("The years of cover for Quote 1 must be less than 100.");
    myQuote_1_YearsOfCover.value = "";
    myQuote_1_YearsOfCover.focus();
    myButton.disabled = false;
    return false;
    }

    if (isInteger(myQuote_1_YearsOfCover.value) == false){
    alert("The years of cover for Quote 1 must be numerical.");
    myQuote_1_YearsOfCover.value = "";
    myQuote_1_YearsOfCover.focus();
    myButton.disabled = false;
    return false;
    }	


// Partner Information ===========================================================================
    var singlejointquoteS = document.getElementById("singlejoint_1a");
    var singlejointquoteJ = document.getElementById("singlejoint_1b");
    
    if (singlejointquoteJ.checked == false && singlejointquoteS.checked == false){
        alert("Please state whether the quote is for you or you and your partner");
        singlejointquoteS.focus();
        singlejointquoteJ.focus();
        myButton.disabled = false;
        return false;
    }
    else{  
	    if (singlejointquoteJ.checked  == true ){
		    // Name
		    var mypTitle = document.getElementById("PartnerTitle");
		    if (mypTitle.value == "") {
		        alert("Please enter your partner's title.");
		        myButton.disabled = false;
		        return false;
		    }

            var myPartnerForeName = document.getElementById("PartnerForeName");
    	    if (isFilled(myPartnerForeName) == false) {
    		    alert("Please enter your partner's forename.");
    		    myPartnerForeName.focus();
		        myButton.disabled = false;
	    	    return false;
		    }

            var myPartnerSurName = document.getElementById("PartnerSurName");
    	    if (isFilled(myPartnerSurName) == false) {
    		    alert("Please enter your partner's surname.");
    		    myPartnerSurName.focus();
		        myButton.disabled = false;
    		    return false;
    	    }	

		    // Partner Gender
	        var myPartnerGenderM = document.getElementById("PartnerGenderM");
	        var myPartnerGenderF = document.getElementById("PartnerGenderF");
		    if((!myPartnerGenderM.checked) && (!myPartnerGenderF.checked)){
    		    alert("Please enter your partner's gender.");
		        myButton.disabled = false;
    		    return false;
    	    }	

		    // Date
    		


            var myPartnerDOBd = document.getElementById("PartnerDOBd");
            var myPartnerDOBm = document.getElementById("PartnerDOBm");
            var myPartnerDOBy = document.getElementById("PartnerDOBy");
            
		    if (isFilled(myPartnerDOBd) == false && isFilled(myPartnerDOBm) == false && isFilled(myPartnerDOBy) == false) {
		        alert("Please enter your partner's Date Of Birth.");
	            myPartnerDOBd.focus();
	            myPartnerDOBm.focus();
	            myPartnerDOBy.focus();
		        myButton.disabled = false;
	            return false;
		    }

            var pdt=myPartnerDOBd.value + "/" + myPartnerDOBm.value + "/" + myPartnerDOBy.value;
            if (isDate(pdt)==false){
                myPartnerDOBd.focus();
                myPartnerDOBm.focus();
                myPartnerDOBy.focus();
                myButton.disabled = false;
       	        return false;
            }

		    // Partner Smoking
		    var myPartnerSmokerY = document.getElementById("PartnerSmokerY");
		    var myPartnerSmokerN = document.getElementById("PartnerSmokerN");
    	    if((!myPartnerSmokerY.checked) && (!myPartnerSmokerN.checked)){
    		    alert("Please enter if youre partner has smoked any tobacco in the last 12 months.");
	            myButton.disabled = false;
    		    return false;
    	    }
	    }
	}

    	    
// How Did You Hear About Us

    var HowDidYouHear = document.getElementById("ddlHowDidYouHear");
    
    if (HowDidYouHear != null){
        if (HowDidYouHear.value == "-- Please Select --") {
        alert("Please select how you heard about us.");
        myButton.disabled = false;
        return false;
        }
    }
    myButton.disabled = false;
     
   
}

// This is to hide the partner details from the user of the sight
function goSingle(i)
{
	for( i = 0; i <document.form.elements.length; i++)
		if(document.form.elements[i].type == "radio"){
			if(document.form.elements[i].checked){
				if (document.form.elements[i].value == "Joint")
					return true;
			}
		}
	Hide_SingleJoint();
}


function Hide_SingleJoint()
{
	var myElement = document.getElementById("pTitle");
	myElement.style.display = "none"; 
	var myElement = document.getElementById("pName");
	myElement.style.display = "none"; 
	var myElement = document.getElementById("pGender");
	myElement.style.display = "none"; 
	var myElement = document.getElementById("pSmoking");
	myElement.style.display = "none"; 
	singlejointquote  = "single";
}


function goJoint()
{
	var myElement = document.getElementById("pTitle");
	myElement.style.display = ""; 
	var myElement = document.getElementById("pName");
	myElement.style.display = ""; 
	var myElement = document.getElementById("pGender");
	myElement.style.display = ""; 
	var myElement = document.getElementById("pSmoking");
	myElement.style.display = ""; 
	singlejointquote  = "joint";
}

function ShowQuote()

{
	var myElement = document.getElementById("ShowNewQuote");
	var statusTwo = document.getElementById("qTwo");
	var statusThree = document.getElementById("qThree");
	var statusFour = document.getElementById("qFour");

	if (statusTwo.style.display == "none")
	{
		statusTwo.style.display = "";
		if ((statusThree.style.display == "") && (statusFour.style.display == ""))
		{
		myElement.style.display = "none"; // hides the layer                                 
		}
	return;
	}

	if (statusThree.style.display == "none")
	{
		statusThree.style.display = "";
		if ((statusTwo.style.display == "") && (statusFour.style.display == ""))
		{
		myElement.style.display = "none"; // hides the layer                                 
		}
	return;
	}


	if (statusFour.style.display == "none")
	{
		statusFour.style.display = "";
		if ((statusTwo.style.display == "") && (statusThree.style.display == ""))
		{
		myElement.style.display = "none"; // hides the layer                                 
		}
	return;
	}
}

function CloseQuote(i)
{
	if(i == 2)
	{
	var myElement = document.getElementById("qTwo");
	myElement.style.display = "none"; // hides the layer
	form.Quote_2_CoverAmount.value = "";
	form.Quote_2_YearsOfCover.value = "";
	form.singlejoint_2(0).checked=true;
	goSingle(2);
	}
	
	if(i == 3)
	{
	var myElement = document.getElementById("qThree");
	myElement.style.display = "none"; // hides the layer
	form.Quote_3_CoverAmount.value = "";
	form.Quote_3_YearsOfCover.value = "";
	form.singlejoint_3(0).checked=true;
	goSingle(3);
	}

	if(i == 4)
	{
	var myElement = document.getElementById("qFour");
	myElement.style.display = "none"; // hides the layer
	form.Quote_4_CoverAmount.value = "";
	form.Quote_4_YearsOfCover.value = "";
	form.singlejoint_4(0).checked=true;
	goSingle(4);
	}
	var myShowNew = document.getElementById("ShowNewQuote");
	myShowNew.style.display = ""; // hides the layer
} 
