﻿//Funtion to Format Phone Number
function formatPhoneNumber(objTxt) {
    if (isValidPhone(objTxt.value)) {
        var result = objTxt.value.match(/^([+])?([0-9]{2})\s?([(]?[0]{1}[)]?)?\s?([0-9]){1}\s?([0-9]+)$/gi);
        
        objTxt.value = objTxt.value.replace(/^([+])?([0-9]{2})\s?([(]?[0]{1}[)]?)?\s?([0-9]){1}\s?([0-9]+)$/gi,"+$2 (0) $4 $5");
    }
}

//Function to validate input is a valid phone number format allow numeric and symbol +,-,(,)
function isValidPhone(val) {
	return (val.search(/^([+])?([0-9]{2})\s?([(]?[0]{1}[)]?)?\s?([0-9]){1}\s?([0-9]+)$/gi) != -1)
}
//Function to Validate Username
function isValidUsername(val) {
    return (val.search(/[^\w|\-]/gi) == -1)
}
//Function to Validate Password Format
function isStrongPassword(val) {
    //return ((val.search(/^[a-zA-Z]{1,}[0-9]{1,}[^a-zA-Z0-9]{1,}/gi) != -1) && (val.search(/^.{8,}/gi) != -1))
    return ((val.search(/^(([A-Za-z]+[^0-9]*)([0-9]+[^\W]*)([\W]+[\W0-9A-Za-z]*))|(([A-Za-z]+[^\W]*)([\W]+[^0-9]*)([0-9]+[\W0-9A-Za-z]*))|(([\W]+[^A-Za-z]*)([A-Za-z]+[^0-9]*)([0-9]+[\W0-9A-Za-z]*))|(([\W]+[^0-9]*)([0-9]+[^A-Za-z]*)([A-Za-z]+[\W0-9A-Za-z]*))|(([0-9]+[^A-Za-z]*)([A-Za-z]+[^\W]*)([\W]+[\W0-9A-Za-z]*))|(([0-9]+[^\W]*)([\W]+[^A-Za-z]*)([A-Za-z]+[\W0-9A-Za-z]*))/gi) != -1) && (val.search(/^.{8,}/gi) != -1) && (val.search(/[<|>]/gi) == -1))
}

function isValidCountryCodePhone(val)
{
    return (val.search(/^[0-9]{2}$/gi) != -1)   
}

function isValidFormatPhone(val)
{    
    return (val.search(/^\+[0-9]{2,3} (\(0\) [1-9][0-9]?|\(0?[1-9][0-9]?\)) [0-9]+$/gi)!= -1)
}

function isValidUrlExternal(val) {
	return ((val.search(/^www\.\[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?$/gi) != -1) || (val.search(/^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?$/gi) != -1))
}

function isValidAreaCodePhone(val)
{
    return (val.search(/^[0-9]{1,}$/gi) != -1)
}

function isValidOffsetPhone(val)
{
    return (val.search(/[^0-9|\-]$/gi) == -1)
}

//Function to validate input is not empty string
function isEmpty(val) {
	return (val.search(/[^\s]/gi) == -1)
}

function isHtmlEmpty(val) {
    return !/[^\<\>]+(?![^\<])/.test(val);
}

function isValidCharacter(val) {
    return (val.search(/[^\w]/gi) == -1)
}

function isValidTagName(val) {
    return (val.search(/[^(\w|\/)]/gi) == -1);
}

//Function to validate input is in valid length
function isValidLength(val,len) {
	if (val.length)
		return (val.length <= len);
	else
		return false;
}

function isValidName(val) {
    return (val.search(/^[\w ]/gi) != -1)
}

//Function to validate input is a proper email string
function isValidEmail(val) {
	return (val.search(/^.+@[^\.].*\.[a-z]{2,}$/gi) != -1)
}

//Function to validate input is a proper date format (DD/MM/YYYY)
/*function isValidDate(val) {
	return (val.search(/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((1[6-9]|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((1[6-9]|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/gi) != -1)
}*/
function isValidDate(val) {
	var strExp;
	return (val.search(/^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/gi) != -1)
}

//Function to validate input is a proper unsign integer
function isValidInteger(val) {
	return (val.search(/[^0-9]/gi) == -1)
}

function isValidSignedInteger(val){
	    return (val.search(/^-{0,1}\d*\d+$/gi) != -1)
}

function isValidNumbers(val){
	    return (val.search(/^-{0,1}\d*\.{0,1}\d+$/gi) != -1)
}

function isPositiveNumbers(val){
	return (val.search(/(^\d*\.?\d*[0-9]+\d*$)|(^[1-9]+\d*\.\d*$)/gi) != -1)
}
//Function to Validate input is a valid URL format
function isValidUrl(val) {
	return ((val.search(/^http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?$/gi) != -1) || (val.search(/^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?$/gi) != -1))
}

//Function to Validate input is a valid Frienly URL format
function isValidFriendlyUrl(val) {
	return ((val.search(/[\\\/?&=\s]/gi) == -1))
}

//Function to Validate file input whether it is image files or not
function isValidImageFile(val) {
    return (val.search(/(?:\.jpe?g|\.gif|\.png)$/gi) != -1);
}
/*
Validate two Date is valid range
1: date1 > date2
2: date1 < date 2
3: date1 = date2
*/
function dateCompare(iDay1,iMonth1,iYear1,iDay2,iMonth2,iYear2) {
	iDay1 = parseInt(iDay1,10);
	iMonth1 = parseInt(iMonth1,10);
	iYear1 = parseInt(iYear1,10);
	
	iDay2 = parseInt(iDay2,10);
	iMonth2 = parseInt(iMonth2,10);
	iYear2 = parseInt(iYear2,10);
	
	var result = 0;
	if (iYear1 > iYear2) {
		result = 1;
	}else if (iYear1 < iYear2) {
		result = 2;
	}else {
		if (iMonth1 > iMonth2) {
			result = 1;
		}else if (iMonth1 < iMonth2) {
			result = 2;
		}else {
			if (iDay1 > iDay2) {
				result = 1;
			}else if (iDay1 < iDay2){
				result =  2;
			}else {
				result = 3;
			}
		}
	}
	return result;
}

/*
Validate two Date is valid range
Date in DD/MM/YYYY or DD-MM-YYYY format
*/
function isValidDateRange(date1, date2) {
    var D1, D2;
    var regex = new RegExp("(\\d{1,2})[\/\-](\\d{1,2})[\/\-](\\d{4})");
    var match = regex.exec(date1);    
    if (match != null) {
        D1 = new Date(match[3], match[2] - 1, match[1]);
    }
    match = regex.exec(date2);
    if (match != null) {
        D2 = new Date(match[3], match[2] - 1, match[1]);
    }    
    
    return ((D2 - D1) >= 0);
}

function isValidImageFormat(val) {
	return (val.search(/(.*\.(jpg|bmp|gif)$)/gi) != -1)
}

function isValidFlashFormat(val) {
	return (val.search(/(.*\.(swf)$)/gi) != -1)
}

function leftTrim(sString)
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    return sString;
}

function rightTrim(sString)
    {
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}

function Trim(sString)
{
    sString = leftTrim(rightTrim(sString));
    return sString;
}

//Function to validate date must select
function getDateValue(objDD,objMM,objYY) {
    var dd = objDD.options[objDD.selectedIndex].value;
    var mm = objMM.options[objMM.selectedIndex].value;
    var yy = objYY.options[objYY.selectedIndex].value;
    var idd,imm,iyy;
    var result;
    var isDate = true;
    
    // check for select day
    if (isEmpty(dd))
        return false
    else if (!isValidInteger(dd))
    {
        result = false;
    }
    else
    {
        idd = parseInt(dd);
        if ((idd<1) || (idd>31))
            result = false;
    }
    
    if (isDate)
    {
        // check for select month
        if (isEmpty(mm))
            return false
        else if (!isValidInteger(mm))
        {
            result = false;
        }
        else
        {
            imm = parseInt(imm);
            if ((imm<1) || (imm>12))
                result = false;
        }
    }
    
    if (isDate)
    {
        // check for select year
        if (isEmpty(yy))
            return false
        else if (!isValidInteger(yy))
        {
            result = false;
        }
        else
        {
            iyy = parseInt(iyy);
            if (iyy<1) result = false;
        }
    }
    
    if (isDate)
    {
        result = dd + '/' + mm + '/' + yy
    } else {result = '';}
    
    return result;
}

function checkboxChecked(objChk)
{
	var check = false;
	var i=0;
	if (objChk.length != undefined) {
	    while (!check && i<objChk.length)
	    {
		    if ((!objChk[i].disabled) && (objChk[i].checked==true))
			    check = true;
		    i++;
	    }//while
	} else {
	    check = objChk.checked;
	}
	return check;
}//checkboxChecked

function chkcombolanguage(objChk,objCombo)
{
    //alert(objCombo.value);
	var check = false;
	var i=0;
	while (!check && i<objChk.length)
	{
	    //alert(objChk[i].value);	    
		if (objChk[i].value==objCombo.value && objChk[i].checked==true) 
			check = true;
		i++;
	}//while
	return check; 
}//chkcombolanguage

function radioChecked(objRdo)
{
	var check = false;
	var i=0;
    while (!check && i<objRdo.length)
    {
	    if (objRdo[i].checked==true) 
		    check = true;
	    i++;
    }
	return check;
}//radioChecked

function selectListSelected(objSel)
{
    var check = false;
    var i = 0;
    while (!check && i < objSel.length)
    {
        if (objSel[i].selected) check = true;
        i++;        
    }
    return check;
}

function imposeMaxLength(Object, MaxLen, e)
{		
	if (e.type == "blur") {
		if (Object.value.length > MaxLen) Object.value = Object.value.substring(0, MaxLen);
	} else {
		return (e.keyCode == 8) ? true : (Object.value.length <= MaxLen);		
	}
}