$(document).ready(function() {
	$('.fancybox').fancybox();
	//disable enter for form submit
	$('form input').on('keypress', function(e) {
	    return e.which !== 13;
	});
	//initialise form if refresh
	showLabel1('out');
	showLabel2('out');
	//showLabel3('out');
	showLabel4('out');
	showLabel5('out');
	showLabel6('out');
	showLabel7('out');

	var SOURCE = getParameterByName('SOURCE');
	var productCode = getParameterByName('PRODUCT');
	
	var enlink = $('#enlink').attr('href');
	var sclink = $('#sclink').attr('href');
	if (SOURCE!='') {
		enlink = enlink + "?SOURCE=" + SOURCE;
		$('#enlink').attr('href', enlink);
		sclink = sclink + "?SOURCE=" + SOURCE;
		$('#sclink').attr('href', sclink);
	}

	if (productCode!='') {
		enlink = enlink + "&PRODUCT=" + productCode;
		$('#enlink').attr('href', enlink);
		sclink = sclink + "&PRODUCT=" + productCode;
		$('#sclink').attr('href', sclink);
	}

	if(productCode == 'DCL'){
			var selectMonthsList = document.getElementById("tenor");
			selectMonthsList[1].remove();
			var option72 = document.createElement("option");
			option72.value = "72 months";
			option72.text = "72 months";
			selectMonthsList.add(option72);
	}
});

$.LoadingOverlaySetup({
    color           : "rgba(0, 0, 0, 0.4)",
    fade            : true,
    image           : "images/loading.gif",
    imagePosition   : "center center",
    maxSize         : 0,
    minSize         : 0,
    resizeInterval  : 0,
    size            : 0,
    zIndex          : 9999
});

function changeVerifyCode(){
	var imgurl = "https://www.cncbinternational.com/Kaptcha.jpg?"+Math.random()*100;
	$('#kaptchaimg').attr("src", imgurl);
}

function getParameterByName(name) {
	name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
	var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
	results = regex.exec(location.search);
	return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}


function showNext(id,idd){
	var targetB = "#" + idd; /*previous*/
	var target = "#" + id;  /*next*/

	var SOURCE = getParameterByName('SOURCE');
	var productCode = getParameterByName('PRODUCT');
	
	var sur = $('#surname').val();
	var giv = $('#givenname').val();
	var username = sur + " " + giv;

	//var hkid = $('#hkid').val();
	var telno = $('#telno').val();
	var emailadd = $('#email').val();
	var loan = $('#loan').val();
	var tenor = $('#tenor').val();
	var cpgcode = $('#campaigncode').val();
	var cpgname = $('#campaignname').val();
	var lang = $('#lang').val();

	var tnc = $('#tnccheck:checked').val();

	var veri = $('#verificationcode').val();
	var errocount = false;


		errUp();

		if ((sur == null) || (sur == "") || !validateName(sur)) {
		$("#err-surname").slideDown();
		errocount = true;
		}
		if ((giv == null) || (giv == "") || !validateName(giv)) {
		$("#err-givenname").slideDown();
		errocount = true;
		}

//		if ((hkid == null) || (hkid == "") || !checkHkid(hkid)) {
//		$("#err-hkid").slideDown();
//		errocount = true;
//		}
		if ((telno == null) || (telno == "") || !isPhoneNumber(telno)) {
		$("#err-telno").slideDown();
		errocount = true;
		}
		if ((emailadd == null) || (emailadd == "") || !validateEmail(emailadd)) {
//		if ((emailadd != null) && (emailadd != "")) {
//		    if (!validateEmail(emailadd)) {
			$("#err-email").slideDown();
			errocount = true;
//			}
		}

//		if ((loan == null) || (loan == "") || !validateLoan(loan)) {
//		$("#err-loan").slideDown();
//		errocount = true;
//		}
//		if ((tenor == null) || (tenor == "")) {
//		$("#err-tenor").slideDown();
//		errocount = true;
//		}

//		if ((tnc == false) || (tnc == null)) {
//		$("#err-tnc").slideDown();
//		errocount = true;
//		}


		//chcek verify code
		if($("#s2").is(":visible") && (id != "s1")){
			veriflag = false;
			if ((veri == null) || (veri == "")) {
				$("#err-veri").slideDown();
				errocount = true;
			}else{
				errocount = false;
				veriflag = true;
				$("#err-veri").slideUp();
			}
			if (veriflag == true && errocount == false) {
				if ((tnc == false) || (tnc == null)) {
					$("#err-tnc").slideDown();
					errocount = true;
				}else{
					errocount = false;
					$("#err-tnc").slideUp();
				}
			}
		}


		if ((errocount != true) && id == "s3") {

			//Generate reference number campaign code + Month + Day + Hour + Minutes + Seconds
//			var finitial = giv.charAt(0).toUpperCase();
//			var linitial = sur.charAt(0).toUpperCase();
//			var nnum = new Date().valueOf();
			var subdate = new Date();
			var month = ('0' + (subdate.getMonth() + 1)).slice(-2);
			var day = ('0' + subdate.getDate()).slice(-2);
			var hours = subdate.getHours();
			if (hours < 10) { hours = "0" + hours; }
			var minutes = subdate.getMinutes();
			if (minutes < 10) { minutes = "0" + minutes; }
			var seconds = subdate.getSeconds();
			if (seconds < 10) { seconds = "0" + seconds; }

//			var refid = cpgcode + finitial + linitial + nnum;
			var refid = cpgcode + month + day + hours + minutes + seconds;
			//alert (refid);
			$("#refNum").text(refid);

			//set optional fields to NA
			if (tenor==null) {tenor = "NA"}
			if (emailadd == "") {emailadd = "NA"}

			//var msg = " Sent the following data to backend:-\n surname: " + sur + "\n given name: " + giv + "\n hkid: " + hkid + "\n telnumber: " + telno + "\n email: " + emailadd + "\n loanamt: " + loan + "\n tenor: " + tenor + "\n campaigncode: " + cpgcode + "\n campaignname: " + cpgname + "\n language: " + lang + "\n submittime: " + subdate + "\n usertnc: " + tnc + "\n SOURCE: " + SOURCE + "\n userrefno: " + refid + "\n usercaptchatext: " + veri;
            var msg = " Sent the following data to backend:-\n surname: " + sur + "\n given name: " + giv  + "\n telnumber: " + telno + "\n email: " + emailadd + "\n loanamt: " + loan + "\n tenor: " + tenor + "\n campaigncode: " + cpgcode + "\n campaignname: " + cpgname + "\n language: " + lang + "\n submittime: " + subdate + "\n usertnc: " + tnc + "\n SOURCE: " + SOURCE + "\n userrefno: " + refid + "\n usercaptchatext: " + veri;
            
			//Start overlay
			$.LoadingOverlay("show");
			//Submit form to server via ajax
			// Send
			$.ajax({
				url: '/cms/onlineapp/dollarsmart-Installment-loan-form/uclEmailSend.jsp',
				type: 'post',
				dataType: 'json',
				data: { action: 'order',
						surname: sur,
						givenname: giv,
						//hkid: hkid,
						telnumber : telno,
						email : emailadd,
						loanamt : loan,
						tenor : tenor,
						campaigncode : cpgcode,
						campaignname : cpgname,
						language : lang,
						submittime : subdate,
						usertnc: tnc,
						SOURCE : SOURCE,
						userrefno: refid,
						usercaptchatext: veri
						},
				success: function(data){
					//log('order:', data);
					//alert(data.message);

					// Demo
					//var msg = " Sent the following data to backend:-\n surname: " + sur + "\n given name: " + giv + "\n hkid: " + hkid + "\n telnumber: " + telno + "\n email: " + emailadd + "\n loanamt: " + loan + "\n tenor: " + tenor + "\n campaigncode: " + cpgcode + "\n campaignname: " + cpgname + "\n language: " + lang + "\n submittime: " + subdate + "\n usertnc: " + tnc + "\n SOURCE: " + SOURCE + "\n userrefno: " + refid + "\n usercaptchatext: " + veri;
                    
                    var msg = " Sent the following data to backend:-\n surname: " + sur + "\n given name: " + giv + "\n telnumber: " + telno + "\n email: " + emailadd + "\n loanamt: " + loan + "\n tenor: " + tenor + "\n campaigncode: " + cpgcode + "\n campaignname: " + cpgname + "\n language: " + lang + "\n submittime: " + subdate + "\n usertnc: " + tnc + "\n SOURCE: " + SOURCE + "\n userrefno: " + refid + "\n usercaptchatext: " + veri;
                    
					//alert(msg);
					
					// SUCCESS
					if(data.result == '0'){
						toData ={ 
						surname: sur,
						givenname: giv,
						telnumber : telno,
						email : emailadd,
						loanamt : loan,
						tenor : tenor,
						productCode : productCode,
						campaigncode : cpgcode,
						campaignname : cpgname,
						submittime : subdate,
						SOURCE : SOURCE
						}
						toDataStr = JSON.stringify(toData);
						encodedData = btoa(toDataStr);
						// Clear & reset Form
						clearAll();
						//Show result page
//Old slideup/down result.
/*						$(targetB).slideUp();
						$(target).slideDown(500);
						var shine = "#icon" + id;
						$(shine).css("opacity",1);
						var dark = "#icon" + idd;
						$(dark).css("opacity",0.3);
						$.LoadingOverlay("hide");
						//alert("success");
*/
						//redirect to long form PWS with refid and data for pre-filling
						//location.replace("complete.html?refid=" + refid);
						url = window.location.origin + "/personalLoan/index?lang=tc&refNum="+refid.toString()+"&data="+encodedData;
						console.log(window.location.replace(url));

					} else {
						// ERROR
						if(data.result == '-1'){
							errocount = true;
							$("#err-veri").slideUp();
							$("#err-veri2").slideDown();
							$("#err-veri3").slideUp();
							//alert("result==-1");
						}
						else if (data.result == '-2'){
							errocount = true;
							$("#err-veri").slideUp();
							$("#err-veri2").slideUp();
							$("#err-veri3").slideDown();
							//alert("result==-2");
						}
						$.LoadingOverlay("hide");
					}
				},
				error: function() {
					errocount = true;
					$("#err-veri").slideUp();
					$("#err-veri2").slideDown();
					var errMsg = "Please try again later.";
					$.LoadingOverlay("hide");
					//alert(errMsg);
				}
			});


		}

		if ((errocount != true) && id != "s3") {
			//Show result page
			$(target).slideDown(500);
			var shine = "#icon" + id;
			$(shine).css("opacity",1);
			var dark = "#icon" + idd;
			$(dark).css("opacity",0.3);
			if($(targetB).is(":visible")){
				$(targetB).slideUp(500);
				errUp();
				/* display entered value*/
				var tctenor = $("#tenor option:selected").text();
				if (tenor == null) {tctenor="NA"};
				if (emailadd == "") {emailadd = "NA"}
				var numformat = "$" + numberWithCommas(loan);
				$("#surnamedis").text(sur);
				$("#givenamedis").text(giv);
				//$("#hkiddis").text(hkid);
				$("#teldis").text(telno);
				$("#emaildis").text(emailadd);
				$("#loandis").text(numformat);
				$("#tenordis").text(tctenor);
				/*$("#tncdis").slideUp();*/
			}
		}

}

function NameValid(nfield) {
     errUp();
     var fvalue = 0;
    if (nfield == 1) {
		fvalue = $("#surname").val();
		fvalue = fvalue.replace(/[^a-zA-Z\s]/g,"");  //English letters + Space
		$("#surname").val(fvalue);
    }
    if (nfield == 2) {
		fvalue = $("#givenname").val();
		fvalue = fvalue.replace(/[^a-zA-Z\s]/g,""); //English letters + Space
		$("#givenname").val(fvalue);
    }
}


function clearAll() {
	$('#tnccheck').removeAttr("checked");
	$('#surname').val("");
	$('#givenname').val("");
	//$('#hkid').val("");
	$('#telno').val("");
	$('#email').val("");
	$('#loan').val("");
	$('#tenor').prop('selectedIndex',0);

	errUp();

	//initialise form if clear
	showLabel1('out');
	showLabel2('out');
	//showLabel3('out');
	showLabel4('out');
	showLabel5('out');
	showLabel6('out');
	showLabel7('out');

}



function errUp(){
	$("#err-surname").slideUp();
	$("#err-givenname").slideUp();
	//$("#err-hkid").slideUp();
	$("#err-telno").slideUp();
	$("#err-email").slideUp();
	$("#err-loan").slideUp();
	$("#err-tenor").slideUp();
	$("#err-tnc").slideUp();
	$("#err-veri1").slideUp();
	$("#err-veri2").slideUp();
	$("#err-veri3").slideUp();
}

// VALIDATION
function validateName(name) {
          var re = /^[A-Za-z\s]+$/;						// space & eng
	//var re = /^[-'a-z\u4e00-\u9eff]{1,20}$/i;
	//var re = /^[\u3300-\u9fff\uf900-\ufaff]{2,}$/;
//	var re = /^[A-Za-z\u2E80-\u2FD5\u3400-\u4DBF\u4E00-\u9FCC\s]+$/;						// space & eng & chinese
    return re.test(name);
}


// VALIDATION
function validateEmail(email) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

// VALIDATION
function validateCC(identifier) {
	var CNCBCards = [ '434689', '434690', '434691', '491891', '491892', '542288', '540954', '539142','624303'];

	return checkCreditCardPrefix(identifier, CNCBCards, 6);
}

function checkCreditCardPrefix(identifier, cardPrefixs, cardPrefixLen) {
		var x = cardPrefixs.length;
		var y = 0;
		var cardprefix = identifier.substr(0,cardPrefixLen);

		while (y < x) {
			if (cardprefix == cardPrefixs[y]) { return true; }
			y++;
		}

		return false;
}

// VALIDATION
function validateLoan(numval) {
	//validate end 000
	var numlast = numval.slice(-3);
	if ((numlast != "000") || !isInteger(numval) || (numval < 5000) || (numval > 9999000)) {
		return false;
	} else {
		return true;
	}

}

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

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 trim(s)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not a whitespace, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (c != " ") returnString += c;
    }
    return returnString;
}
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++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in a phone no.
var minDigitsInIPhoneNumber = 8;

function isPhoneNumber(strPhone){
var bracket=3
strPhone=trim(strPhone)
if(strPhone.indexOf("+")>1) return false
if(strPhone.indexOf("-")!=-1)bracket=bracket+1
if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)return false
var brchr=strPhone.indexOf("(")
if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")return false
if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)return false
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}