﻿
function IsPassportValid(dropDownIdentityID, idPassportNo, idErrorID, oldValue) {

    if (undefined == oldValue) oldValue = "";
    $("#" + idErrorID).html("Passport No is invalid.");
    var PassportNo = $("#" + idPassportNo).val();
    var identityType = $("#"+dropDownIdentityID).val();
    var constIdentityTypeIDCard = 2; //constant for Passport No
    if (constIdentityTypeIDCard == identityType) {

        /* Removed : Passport no can contain both character and numeric.
        if (!IsNumeric(PassportNo)) {
        $("#" + idErrorID).css("visibility", "visible");
        return false;
        }*/
        
        // Check duplicate pass port no
        if (oldValue != PassportNo) {
            if (IsPassportNoInUse(PassportNo)) {
                $("#" + idErrorID).css("visibility", "visible");
                $("#" + idErrorID).html("Passport No is duplicated.");
                return false;
            }
        }
    }

    $("#" + idErrorID).css("visibility", "hidden");
    return true;    
}

function IsIDCardValid( dropDownIdentityID, idCard1ID, idCard2ID, idCard3ID, idCard4ID, idCard5ID,
                        idCardErrorID, showErrorIfIncomplete, oldValue) {

    if (undefined == oldValue) oldValue = "";
    if (undefined == showErrorIfIncomplete || null == showErrorIfIncomplete) {
        showErrorIfIncomplete = false;
    }
    
    $("#"+idCardErrorID).html("ID card is invalid or incomplete.");
    var identityType = $("#"+dropDownIdentityID).val();
    var constIdentityTypeIDCard = 1; //constant for ID card
    if(constIdentityTypeIDCard  == identityType){
        var id1 = $("#"+idCard1ID).val();
        var id2 = $("#"+idCard2ID).val();
        var id3 = $("#"+idCard3ID).val();
        var id4 = $("#"+idCard4ID).val();
        var id5 = $("#"+idCard5ID).val();
        
        var str = id1+id2+id3+id4+id5;
        if (str.length != 13) {
            if (showErrorIfIncomplete) {
                $("#" + idCardErrorID).css("visibility", "visible");
            } else {
                $("#" + idCardErrorID).css("visibility", "hidden");
            }
	        return false;
	    }

        var sum = 0;
        var numbers = "1234567890";
        for(var i = 0 ; i < 12 ; i++)
        {
	        if(numbers.indexOf(str.charAt(i)) == -1)
		        return false;

	        sum += str.charAt(i) * (13 - i);
        }
        var lastDigit = 11 - sum%11;
        if(lastDigit >= 10)
	        lastDigit -= 10;
	    if (str.charAt(12) != lastDigit) {
	        $("#" + idCardErrorID).css("visibility", "visible");
	        return false;
	    } else {

	        // If ID card valid, check duplicate
	        if (oldValue != str) {
	            if (IsIDCardInUse(str)) {
	                $("#" + idCardErrorID).css("visibility", "visible");
	                $("#" + idCardErrorID).html("ID card is Eduplicated.");
	                return false;
	            }
	        }
	    }
    }
    $("#"+idCardErrorID).css("visibility", "hidden");
    return true;
}
//Choose between passport and IDCard which one will be shown according to identity type dropdown.
function DisplayIdentityControl(dropdownIdentityID, requiredPassportValidatorID, passportControlID, idCardControlID){

    var identityType = $("#"+dropdownIdentityID).val();
    var requiredPassportValidator = document.getElementById(requiredPassportValidatorID);
    var constIdentityTypeIDCard = 1; //constant for ID card
    if(constIdentityTypeIDCard == identityType){
        ValidatorEnable(requiredPassportValidator, false); 
        $('#'+passportControlID).hide();
        $('#'+idCardControlID).show();
    }else{
        ValidatorEnable(requiredPassportValidator, true); 
        $('#'+idCardControlID).hide();
        $('#'+passportControlID).show();
    }
}

//use to validate the ID card.
function IsIDCardInUse(val) {
    var params = new Object();
    var IsInuse = false;
    params.val = val;
    SendAjax(GetURL("Accounts/WebService/AccountWebService.asmx") + "/IsIDCardInUse", params,
        function(data) {
            IsInuse = (data.message == "success");
        }, false);
        return IsInuse;
}

//use to validate Passport NO.
function IsPassportNoInUse(val) {
    var params = new Object();
    var IsInuse = false;
    params.val = val;
    SendAjax(GetURL("Accounts/WebService/AccountWebService.asmx") + "/IsPassportNoInUse", params,
        function(data) {
            IsInuse = (data.message == "success");
        }, false);
        return IsInuse;
}

//use to validate the email input.
function IsEmailInUse(sender, args){
    var params = new Object();
    params.email = args.Value;
    SendAjax(GetURL("Accounts/WebService/AccountWebService.asmx") + "/IsEmailInUse", params,
        function(data){
            args.IsValid = (data.message == "success");
        }, false);
}
//use to validate the prefix url
function IsSubDomainInUse(sender, args){
    var params = new Object();
    params.subdomain = args.Value;
    SendAjax(GetURL("Accounts/WebService/AccountWebService.asmx") + "/IsSubDomainInUse", params,
        function(data){
            args.IsValid = (data.message == "success");
        }, false);
    }



    var domainReservedWords =
['bk', 'bkmagazine', 'www', 'home', 'profile', 'profiles', 'music', 'musics', 'whatup', 'coolstuff',
'mashup', 'help', 'welcome', 'i-greenspace', 'igreenspace', 'ig', 'greenspace', 'heineken', 'edit',
'copy', 'delete', 'message', 'messages', 'photo', 'photos', 'images', 'calendar', 'calendars', 'friend',
'friends', 'login', 'logout', 'account', 'setting', 'interest', 'interests', 'basic', 'keyword', 'name',
'search', 'email', 'admin', 'webmaster', 'hobby', 'interest', 'books', 'book', 'movie', 'movies', 'sports',
'sport', 'song', 'songs', 'football', 'hangout', 'gadgets', 'drink', 'drinking', 'party', 'shopping', 'pm',
'fashion', 'dinner', 'nightlife', 'archive', 'link', 'links', 'application', 'plan', 'travel', 'traveling',
'birthday', 'hbd', 'album', 'comment', 'comments', 'video', 'highlights', 'highlight', 'news', 'events',
'event', 'new', 'tv', 'feedback', 'advertisement', 'advertise', 'legal', 'update', 'entertainment', 'pics',
'bangkok', 'thailand', 'mobile', 'internet', 'health', 'fitness', 'games', 'game', 'food', 'dating', 'personals',
'city', 'country', 'money', 'live', 'life', 'homepage', 'web', 'webpage', 'ticket', 'play', 'blog', 'burb',
'song', 'mp3', 'domain', 'url', 'concert', 'free', 'people', 'love', 'thai', 'social', 'media'];

function IsReservedSubdomain(sender, args) {
    args.IsValid = true;
    for (var i = 0; i < domainReservedWords.length; i++) {
        var reserved = domainReservedWords[i];
        if (reserved == args.Value) {
            args.IsValid = false;
            return;
        }
    }
}


function IsNumeric(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}