//Javascript Document

/**************** script validation ***************/

var validdate = new Date();
var validmonth = validdate.getMonth();

var validyear = validdate.getFullYear();


/* To load date values into dropdown boxes*/
var monthtext = ['MM','01','02','03','04','05','06','07','08','09','10','11','12'];

/*returns current year*/
function takeYear(theDate) {
	x = theDate.getYear();
	var y = x % 100;
	y += (y < 38) ? 2000 : 1900;
	return y;
}


function populateDropDown()
 {

		var thisdate = new Date();
		currentYear  = takeYear(thisdate);

		var formObj = document.BalanceTransferForm;

		var today = new Date()
		var otherBankExpiryMonth = formObj.otherBankExpiryMonth
		var otherBankExpiryYear	 = formObj.otherBankExpiryYear

        var payDueMonth	 = formObj.payDueMonth;
		var payDueYear	 = formObj.payDueYear;

		var payDueDt	 = formObj.payDueDt;


		for (var m=0; m<13; m++){
		otherBankExpiryMonth.options[m]=new Option(monthtext[m], monthtext[m]);
		payDueMonth.options[m]=new Option(monthtext[m], monthtext[m]);
		}
		var thisyear= 1950;
		otherBankExpiryYear.options[0]=new Option('YYYY', 'YYYY');
		payDueYear.options[0]=new Option('YYYY', 'YYYY');

		var startExpYear = currentYear
		for(var z=1 ; z<25 ; z++){
		otherBankExpiryYear.options[z]=new Option(startExpYear, startExpYear);
		
		startExpYear+=1 
		}

		startExpYear = currentYear -1;

		for(var z=1 ; z<25 ; z++){
		payDueYear.options[z]=new Option(startExpYear, startExpYear);	

		startExpYear+=1 
		}

		
		//populate dates..

		var k		= 0 
		var dayText = "";
		
		for (var i=0; i<31; i++)
			{
				 k++;
				 
				 if(i < 9){
					dayText = "0" + (i+1);
				 }else{
				 
					dayText = i+1;
				 }
				payDueDt.options[k]=new Option(dayText, dayText)
			}
}

/* End load date values into dropdown boxes*/

/*End validation for card type*/

function validateBtDetails()
{

	var formObj = document.BalanceTransferForm;
	var creditCardDetRegEx = /^([a-z A-Z\-\/.0-9])*$/;

	/*Start validating credit card Number*/

	var cardRegEx = /^([0-9]){4}$/
	var cardEndRegEx = /^([0-9]){2,4}$/
	var card1 = formObj.kotakCardNo1.value;
	var card2 = formObj.kotakCardNo2.value;
	var card3 = formObj.kotakCardNo3.value;
	var card4 = formObj.kotakCardNo4.value;

	if((cardRegEx.test(card1)==false)||(cardRegEx.test(card2)==false)||(cardRegEx.test(card3)==false)||(cardEndRegEx.test(card4)==false)){
	alert("Please enter a valid kotak card number");
	return false;
	}

	/*End validating credit card Number*/
	
	/*Start validating scheme details*/

	if(formObj.btScheme.value == "-1"){
		alert("Please select BT Scheme");
		formObj.btScheme.focus();
		return false;
	}

	/*Start of validation for Bank Name*/

	var bankName = formObj.otherBankName;

	if(bankName.value == "-1"){
		alert("Please select Other Bank Name");
		bankName.focus();
		return false;
	}
	
	/*End of validation for Bank Name*/

	/*Start of validation for other bank card number*/
	card1 = formObj.obCardNo1.value;
	card2 = formObj.obCardNo2.value;
	card3 = formObj.obCardNo3.value;
	card4 = formObj.obCardNo4.value;

	if((cardRegEx.test(card1)==false)||(cardRegEx.test(card2)==false)||(cardRegEx.test(card3)==false)||(cardEndRegEx.test(card4)==false)){
	alert("Please enter a valid card number");
	return false;
	}
	/*End of validation for other bank card number*/

	
	/*Start of validation for other bank exp date*/

	if(formObj.otherBankExpiryMonth.value == "MM"){
	alert("Please select Expiry Date of Other Bank Card")
	formObj.otherBankExpiryMonth.focus();
	return false;
	}

	if(formObj.otherBankExpiryYear.value == "YYYY"){
	alert("Please select Expiry Date of Other Bank Card")
	formObj.otherBankExpiryYear.focus();
	return false;
	}
	
	if(formObj.otherBankExpiryYear.value == validyear){
	
		if(formObj.otherBankExpiryMonth.value < validmonth+1){
		alert("Please select valid Expiry Date of Other Bank Card");
		formObj.otherBankExpiryMonth.focus();
		return false;
		}
	}
	/*End of validating other bank exp date*/

	/*Start of validating payment due date*/
	var payDueDD = formObj.payDueDt.value;
	var payDueMM = formObj.payDueMonth.value;
	var payDueYY = formObj.payDueYear.value;

	var dt= payDueDD+"/"+payDueMM+"/"+payDueYY;

	if(payDueDD != "DD" || payDueMM != "MM" || payDueYY != "YYYY")
	{
		if(payDueDD == "DD"){
			 alert("Please select Payment Due Date");
			 formObj.payDueDt.focus();
			 return false;
		}

		if(payDueMM == "MM"){
			 alert("Please select payment due date month");
			 formObj.payDueMonth.focus();
			 return false;
		}

		if(payDueYY == "YYYY"){
			 alert("Please select payment due date year");
			 formObj.payDueYear.focus();
			 return false;
		}
	 
		if (isDate(dt)==false){
				return false;
			}
	}
	/*End of validating payment due date*/


	/*Start of Validation for BT Amount*/
	if((formObj.BTAmount.value == "") || (!isInteger(formObj.BTAmount.value))) {
	alert("Please enter valid balance transfer amount");
	formObj.BTAmount.focus();
	return false;
	}
	/*End of validating BT amount*/	
	
	/*
	var currRegExp = /^([a-zA-Z])*$/
	
	if((formObj.currency.value == "") || currRegExp(formObj.currency.value) == false) {
	alert("Please enter valid currency");
	formObj.currency.focus();	
	return false;
	}*/	

	/*start of validation for mobile number*/

	var mobileNo = trim(formObj.mobileNo.value);
	var moblen   = mobileNo.length;
	var flag = false;

	if(mobileNo != ""){
	
	 flag = true;

	if(mobileNo.charAt(0) != '9'){
			alert("Please check your Mobile No.(it should start with '9')");
			formObj.mobileNo.focus();
			return false;
		}
		var mobRegExp = /^([0-9])*$/
		if((mobRegExp.test(mobileNo)==false)||(moblen != 10)){
		alert("Please Enter 10 digit Mobile Number");
		formObj.mobileNo.focus();
		return false;
		}
	}
	/*end of validation for mobile number*/

	/*-------------validation for Phone No----------*/
	var phoneStdcode = trim(formObj.phoneStdcode.value);
	var phoneNumber	 = trim(formObj.phoneNumber.value);
	
	if(phoneStdcode != "" || phoneNumber != "")
		{
			flag = true;

			if(validateStdCode(phoneStdcode)== false){
				alert("Please enter Std Code for phone number");
				formObj.phoneStdcode.focus();
				return false;
			}

			if(validateStdCode(phoneNumber)== false){
				alert("Please enter Phone Number");
				formObj.phoneNumber.focus();
				return false;
			}
		}

	if(!flag){
		alert("Please enter 'Mobile Number' or 'Residence Number' ");
		return false;
	}

	flag = false;
/*-------------validation for Phone No----------*/


/*Start validation for Email*/
	var emailid = formObj.emailId.value;
	if((emailid.indexOf("--") != -1)||(emailid.indexOf("..") !== -1)||(emailid.indexOf("__") !== -1)||(emailid.indexOf("++") !== -1)){
		alert("Please enter a valid email-id");
		//formObj.emailId.style.border = "2px solid red";
		formObj.emailId.focus() = true;;
		return false;
		}
	var emailIDRegEx = /^[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/
	if(emailIDRegEx.test(emailid)==false){
    formObj.emailId.focus();
	alert("Please enter a valid email-id");
	//formObj.emailId.style.border = "2px solid red";
	return false;
	}
	/*End validation for Email*/

}


/* Start of Date Validation*/

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

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)
	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 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 (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
}
/* End Date Validation*/

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 for validating card bean*------------*/


function checkIfValidCardBeanNumber() 
{		
		var formObj	   = document.BalanceTransferForm;
		var cardNumber1 = formObj.kotakCardNo1.value;    
		var cardNumber2 = formObj.kotakCardNo2.value;
		var cardNumber3 = formObj.kotakCardNo3.value;
		var cardNumber4 = formObj.kotakCardNo4.value;
		
		cardNumber1 = trim(cardNumber1);
		cardNumber2 = trim(cardNumber2);
		cardNumber3 = trim(cardNumber3);
		cardNumber4 = trim(cardNumber4);

		if(cardNumber1 == "" || cardNumber2 == "" || cardNumber3 == "" || cardNumber4 == "" ){
			return false;
		}
		
		var cardNumber  = cardNumber1+cardNumber2;
		
		var http_request = getRequestObject();

		http_request.onreadystatechange = getResult; 
		var url="CheckIfValidCardBean.do";
		
		http_request.open("POST",url ,true)
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http_request.send("kotakCardBean="+cardNumber);	
}       

//check the response
function getResult(){
var formObj = document.BalanceTransferForm; 	
 if (http_request.readyState == 4) {
            if (http_request.status == 200) {

   		    	var result = http_request.responseText;		
				result = trim(result);
				if(result > 0 ){
				  alert("Please enter a valid Kotak Card Number");
				  formObj.kotakCardNo1.value = "";    
				  formObj.kotakCardNo2.value = "";
				  formObj.kotakCardNo3.value = "";
				  formObj.kotakCardNo4.value = "";	
				   
				  formObj.kotakCardNo1.focus();	

				  return false;
				}
			
            }
        }

}





function resetBTFields(){
	var formObj		   = document.BalanceTransferForm;
	var otherBankExpMM = document.BalanceTransferForm.otherBankExpiryMonth;
	var otherBankExpYY = document.BalanceTransferForm.otherBankExpiryYear;
	var payDueDD = formObj.payDueDt;
	var payDueMM = formObj.payDueMonth;
	var payDueYY = formObj.payDueYear;
	var btScheme = formObj.btScheme;
	var otherBankName = formObj.otherBankName;
	

	formObj.kotakCardNo1.value = "";
	formObj.kotakCardNo2.value = "";
	formObj.kotakCardNo3.value = "";
	formObj.kotakCardNo4.value = "";
	
	formObj.obCardNo1.value = "";
	formObj.obCardNo2.value = "";
	formObj.obCardNo3.value = "";
	formObj.obCardNo4.value = "";


	for(var i = 0; i<otherBankName.options.length; i++){
		if(otherBankName.options[i].value == "-1"){
			otherBankName.options[i].selected = "true";
		}
	}

	for(var i = 0; i<btScheme.options.length; i++){
		if(btScheme.options[i].value == "-1"){
			btScheme.options[i].selected = "true";
		}
	}

	for(var i = 0; i<payDueDD.options.length; i++){
		if(payDueDD.options[i].value == "DD"){
			payDueDD.options[i].selected = "true";
		}	
	}
	
	for(var i = 0; i<payDueMM.options.length; i++){

		if(payDueMM.options[i].value == "MM"){
			payDueMM.options[i].selected = "true";
		}
	}

	for(var i = 0; i<payDueYY.options.length; i++){

		if(payDueYY.options[i].value == "YYYY"){
			payDueYY.options[i].selected = "true";
		}
	}

	for(var i = 0; i<otherBankExpMM.options.length; i++){

		if(otherBankExpMM.options[i].value == "MM"){
			otherBankExpMM.options[i].selected = "true";
		}
	}


	for(var i = 0; i<otherBankExpMM.options.length; i++){

		if(otherBankExpMM.options[i].value == "MM"){
			otherBankExpMM.options[i].selected = "true";
		}
	}

	for(var i = 0; i<otherBankExpYY.options.length; i++){
		
		if(otherBankExpYY.options[i].value == "YYYY"){
			otherBankExpYY.options[i].selected = "true";
		}
	}
	
	formObj.BTAmount.value = "";
	//formObj.currency.value = "";
	formObj.mobileNo.value = "";
	formObj.phoneStdcode.value = "";
	formObj.phoneNumber.value = "";
	formObj.emailId.value = "";

	return false;
}

// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function trim(value) {
	
	return LTrim(RTrim(value));
	
}

function showHelpMail(obj){
    clearTextformail(obj);
    showHelp(obj);
}


//validation for std code
function validateStdCode(stdCode){
	var stdCodeRegExp = /^([0-9]){2,10}$/
	if(stdCodeRegExp.test(stdCode) == false){
		return false;
	}
}

//get request obj
function getRequestObject()
      {
    
       if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        return http_request;
      }