﻿////////////////////Dialog

function overlay(elemid) {
	$("#" + elemid).css("visibility", ($("#" + elemid).css("visibility") == "visible") ? "hidden" : "visible");
}

//elemid - the id of the dialog
//title - the title of the dialog
//text - the content of the dialog
function showDialog(elemid,title,text) {
	if(document.getElementById(elemid))
	{
		document.getElementById(elemid).children[0].children[0].children[0].innerHTML = title;
		var top = document.getElementById(elemid).children[0].children[1].children[1];
		top.innerHTML = text;
    }
    centerDialog(document.getElementById(elemid).children[0].id);
	$("#" + elemid).css("visibility", ($("#" + elemid).css("visibility") == "visible") ? "hidden" : "visible");
}

//centering popup
function centerDialog(popupName) {
    //request data for centering
    var dpopup = '#' + popupName;
    var windowWidth = document.documentElement.clientWidth;
    var windowHeight = document.documentElement.clientHeight;
    var popMargTop = ($(dpopup).height() + 50) / 2;
    var popMargLeft = ($(dpopup).width() + 50) / 2;
    //centering
    $(dpopup).css({
        'margin-top': -popMargTop,
        'margin-left': -popMargLeft
    });
}

function closeme(elemid) {
	$("#" + elemid).css("visibility", "hidden");
}
/////////////////////////


function formatDate(date) {
    var d = new Date(date);
    var months = new Array(12);
    months[0] = "January";
    months[1] = "February";
    months[2] = "March";
    months[3] = "April";
    months[4] = "May";
    months[5] = "June";
    months[6] = "July";
    months[7] = "August";
    months[8] = "September";
    months[9] = "October";
    months[10] = "November";
    months[11] = "December";

    var curr_date = d.getDate();
    var curr_month = d.getMonth();
    var curr_year = d.getFullYear();
    return curr_date + " " + months[curr_month] + " " + curr_year;
}

function formatDateMonthYear(date) {
    var d = new Date(date);
    var months = new Array(12);
    months[0] = "January";
    months[1] = "February";
    months[2] = "March";
    months[3] = "April";
    months[4] = "May";
    months[5] = "June";
    months[6] = "July";
    months[7] = "August";
    months[8] = "September";
    months[9] = "October";
    months[10] = "November";
    months[11] = "December";

    var curr_date = d.getDate();
    var curr_month = d.getMonth();
    var curr_year = d.getFullYear();
    return months[curr_month] + " " + curr_year;
}

/////////Validation Library

function isBlank(val){
	if(val==null){return true;}
	if(val.length==0) {return true;}
	return false;     
}

function isContainSpacesOrTab(val){
	if(val==null){return false;}
	if(val.length==0) {return false;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)==" ") || (val.charAt(i)=="\t")) {return true;}
	}
	return false;    
}

function IsNumeric(sText) {
    if (isNaN(sText)) {
        return false;
    }
	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; 
}

function isSingleDigit(val){
	if(val==null){return false;}
	if (val.length==0 || val.length>1){return false;}
	var chars2check="0123456789";
	if (chars2check.indexOf(val)!=-1){return true;}
	return false;
}

function isSingleAlphabet(val){
	if(val==null){return false;}
	if (val.length==0 || val.length>1){return false;}
	var chars2check="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	if (chars2check.indexOf(val)!=-1){return true;}
	return false;
}

function equals(input1,input2){
	var isEqual = false;
	if (input1 == input2)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function isValidEmail(val){
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!val.match(re)) {
        return false;
    } else {
        return true;
    }
}

/////////////////////

function Trim(stringValue) {
    return stringValue.replace(/^\s*/, "").replace(/\s*$/, "");
}

function RemoveSpaces(stringValue) {
    return stringValue.split(' ').join('');
}

///////////////////// Custom Transforms
function Transform_Validate_Number (maskedInput)
{
	return IsNumeric(maskedInput.Text);
}

function Transform_Validate_NotBlank (maskedInput)
{
	return !isBlank(Trim(maskedInput.Text));
}



function Telephone_ValidateMask (maskedInput) {
    // We are accepting 7 or more digits, unless the phone starts with a 1, in which case we need at least 11 digits:
    var displayDigits = this.unmask(maskedInput);
    return (displayDigits.charAt(0) === '1') ? (displayDigits.length >= 11) : (displayDigits.length >= 7);
}

function Telephone_Unmask(maskedInput) {
    // Simply remove all the non-digits from the displayed text:
    return maskedInput.masked.value.replace(/[^\d^\+]/g, '');
}

function Telephone_Mask(maskedInput) {
    // Insert dashes, spaces, parentheses, as needed:
    var digits = RemoveSpaces(maskedInput.unmasked.value);
    var masks =
        [
            [/^1(\d{3})(\d{3})(\d{4})$/, '1 ($1) $2-$3'],
            [/^([02-9]\d{2})(\d{4})$/, '$1-$2'],
            [/^([02-9]\d{2})(\d{3})(\d{4})$/, '($1) $2-$3'],
            [/^(\+\d{2})(\d{3})(\d{3})(\d{4})$/, '($1) $2 $3 $4'],
            [/^(\+\d{2})(\d{2})(\d{3})(\d{4})$/, '($1) $2 $3 $4']
        ];
    if (digits.charAt(0) == '0' && digits != "") digits = '+27' + digits;
    else if (digits.charAt(0) != '+' && digits.charAt(0) != '(' && digits != "") digits = '+' + digits;
    for (var i = 0; i < masks.length; i++) {
        var mask = masks[i];
        if (mask[0].test(digits)) {
            return digits.replace(mask[0], mask[1]);
        }
    }
    return digits;
}


//-----------------------------------PDA Fees calculator
function LoadPdaFees() {
    if (!PdaFeesLoaded)
    {
        var ajax = new Ajax("AjaxContentLoader.aspx", ["getAllPdaFees"], PDAFeesLoader_Callback);
        ajax.Get();
    }
}

var PdaFeeFrom  = new Array ();
var PdaFeeTo = new Array();
var PdaFeeAmount = new Array();
var PdaFeesLoaded = false;

function PDAFeesLoader_Callback(e) {
    var x = new String(e);
    if (x != "" ) {
        for (var i = 0 ; i < x.split("|").length ; i += 3)
        {
            PdaFeeFrom.push(x.split("|")[i]);
            PdaFeeTo.push(x.split("|")[i+1]);
            PdaFeeAmount.push(x.split("|")[i+2]);
        }
        PdaFeesLoaded = true;
    }
}

function GetPdaFeeForAmount(amount) {
    if (!PdaFeesLoaded) {
        LoadPdaFees();
        return 0;
    }

    var resultAmount = 0;
    for (var i = 0; i < PdaFeeFrom.length ; i++)
    {
        if (PdaFeeFrom[i] <= amount &&  PdaFeeTo[i] >= amount) 
        {
            resultAmount = PdaFeeAmount[i];
            break;
        }
    }
    return resultAmount;
}
//-----------------------------------

function AddOnKeyEvent(fnc, obj) {
    if (obj != null) {
        if (typeof obj.addEventListener != "undefined")
            obj.addEventListener("keyup", fnc, false);
        else if (typeof obj.attachEvent != "undefined") {
            obj.attachEvent("onkeyup", fnc);
        }
        else {
            obj.keypress = fnc;
        }
    }
}

function AddOnChangeEvent(fnc, obj) {
    if (obj != null) {
        if (typeof obj.addEventListener != "undefined")
            obj.addEventListener("change", fnc, false);
        else if (typeof obj.attachEvent != "undefined") {
            obj.attachEvent("onchange", fnc);
        }
        else {
            obj.onchange = fnc;
        }
    }
}

function ValidateSAIDnumber(idnumber) {
    //1. numeric and 13 digits
    if (isNaN(idnumber) || (idnumber.length != 13)) { return false; }
    //2. first 6 numbers is a valid date
    var tempDate = new Date(idnumber.substring(0, 2), idnumber.substring(2, 4) - 1, idnumber.substring(4, 6));
    if (!((tempDate.getYear() == idnumber.substring(0, 2)) && (tempDate.getMonth() == idnumber.substring(2, 4) - 1) && (tempDate.getDate() == idnumber.substring(4, 6)))) { return false; }
    //3. luhn formula
    var tempTotal = 0; var checkSum = 0; var multiplier = 1;
    for (var i = 0; i < 13; ++i) {
        tempTotal = parseInt(idnumber.charAt(i)) * multiplier;
        if (tempTotal > 9) {
            tempTotal = parseInt(tempTotal.toString().charAt(0)) + parseInt(tempTotal.toString().charAt(1)); 
        }
        checkSum = checkSum + tempTotal;
        multiplier = (multiplier % 2 == 0) ? 1 : 2;
    }
    if ((checkSum % 10) == 0) { return true };
    return false;
}

//remove item byindex array method
Array.prototype.remove = function (from, to) {
    var rest = this.slice((to || from) + 1 || this.length);
    this.length = from < 0 ? this.length + from : from;
    return this.push.apply(this, rest);
}
