/***********************************************************************************
 * Script Title:	LRSvalidations.js
 * Description :	This file contains on the generalized js funtions
 ************************************************************************************
 * Sr. No.	Author    Date    		Description
 * -------	--------  ------------------	------------
 *   1           Vaibhav   25th July 2008  	Defined different functions
 ************************************************************************************/

/*Return javascript element specified by field*/
function getElement(field)
{

    var ctrls = document.getElementsByTagName("body")[0].getElementsByTagName("*");
    for(i =0 ; i< ctrls.length ; i++)
    {
        ctlID = ctrls[i].id;
        if(ctlID != null || ctlID != "")
        {
            if(ctlID.indexOf(field) != -1)
            {
                return ctrls[i];
            }
        }
    }
}

function _isInteger(val) {
    var digits="1234567890";
    for (var i=0; i < val.length; i++) {
        if (digits.indexOf(val.charAt(i))==-1) { return false; }
    }
    return true;
}
function _getInt(str,i,minlength,maxlength) {
    for (var x=maxlength; x>=minlength; x--) {
        var token=str.substring(i,i+x);
        if (token.length < minlength) { return null; }
        if (_isInteger(token)) { return token; }
    }
    return null;
}

function cancelDataSubmit()
{
    return (confirm('Are you sure you want to cancel the changes?'));
}

/* Validate Required field, Return false if field is empty*/
function validate_required(field)
{
    value = getElement(field).value;
    value = trim(value);
    if (value==null||value=="")
    {
        getElement(field).focus();
        return false
    }
    else
    {
        return true
    }
}

function trim(stringToTrim) {
   return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function ltrim(stringToTrim) {
    return stringToTrim.replace(/^\s+/,"");
}

function rtrim(stringToTrim) {
    return stringToTrim.replace(/\s+$/,"");
}

/* Validate email*/
function validate_email(field)
{
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    value = getElement(field).value;

    if(!reg.test(value))
    {
        getElement(field).focus();
        return false;
    }

    return true;
}

// Compare two field values
function compareFields(field1,field2)
{
    if(getElement(field1).value == getElement(field2).value)
    {
        return true;
    }
    getElement(field2).focus();
    return false;
}
//Special characters validation
function checkforSpecialCharacters(obj, mstr)
{
    var str = obj.value;
    if(IsSpecial(str)==false)
    {
        alert("Enter valid character for " + mstr + ", These are invalid characters, / \ [ ] : ; | = , + * ? < > @ \' \" ");
        return false;
    }
    return true;
}

function IsSpecial(sText)
{
    var InValidChars = "/\[]:;|=,+*?<>@\'\"";
    var IsSpl=true;
    var Char;

    for (i = 0; i < InValidChars.length && IsSpl == true; i++)
    {
        Char = InValidChars.charAt(i);
        if (sText.indexOf(Char)>=0)
        {
            IsSpl = false;
        }
        else
        {
            IsSpl = true;
        }
    }
    return IsSpl;
}

// Common validation script to validate numeric values,
// This function also validates decimal values if isDecimal is set to TRUE
function checkForNumeric(text, isDecimal)
{
    var validchar;
    var isnumber=true;
    var character;
    var periodCounter=0;

    if(isDecimal.toString().toUpperCase() =='TRUE')
    {
        validchar = "0123456789.";
    }
    else
    {
        validchar = "0123456789";
    }

    for (j = 0; j < text.length && isnumber == true; j++)
    {
        character = text.charAt(j);

        if(character=='.')
        {
            periodCounter=periodCounter+1;
            if(periodCounter > 1)
            {
                isnumber = false;
            }
        }

        if (validchar.indexOf(character) == -1)
        {
            isnumber = false;
        }
    }
    return isnumber;
}

function displayError(strErrorMsg)
{
    if(strErrorMsg !="")
    {
        alert(strErrorMsg);
        return false;
    }
    else
    {
        return true;
    }
}

function closeWindow()
{
    if(confirm('Are you sure you want to close the window?')==true)
    {
        window.close();
        return true;
    }
    else
    {
        return false;
    }
}

function isDate(val,format) {

    var date=getDateFromFormat(val,format);

    if (date==0)
    {
        alert('Enter a valid date in ' + format + ' format.');
        return false;
    }
    return true;
}
function isLrsDate(val,format) {

    var date=getDateFromFormat(val,format);

    if (date==0)
    {
        return false;
    }
    return true;
}

function getDateFromFormat(val,format) {
    val=val+"";
    format=format+"";
    var i_val=0;
    var i_format=0;
    var c="";
    var token="";
    var token2="";
    var x,y;
    var now=new Date();
    var year=now.getYear();
    var month=now.getMonth()+1;
    var date=1;
    var hh=now.getHours();
    var mm=now.getMinutes();
    var ss=now.getSeconds();
    var ampm="";

    while (i_format < format.length) {
        // Get next token from format string
        c=format.charAt(i_format);
        token="";
        while ((format.charAt(i_format)==c) && (i_format < format.length)) {
            token += format.charAt(i_format++);
        }
        // Extract contents of value based on format token
        if (token=="yyyy" || token=="yy" || token=="y") {
            if (token=="yyyy") { x=4;y=4; }
            if (token=="yy")   { x=2;y=2; }
            if (token=="y")    { x=2;y=4; }
            year=_getInt(val,i_val,x,y);
            if (year==null) { return 0; }
            i_val += year.length;
            if (year.length==2) {
                if (year > 70) { year=1900+(year-0); }
                else { year=2000+(year-0); }
            }
        }
        else if (token=="MMM"||token=="NNN"){
            month=0;
            for (var i=0; i<MONTH_NAMES.length; i++) {
                var month_name=MONTH_NAMES[i];
                if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
                    if (token=="MMM"||(token=="NNN"&&i>11)) {
                        month=i+1;
                        if (month>12) { month -= 12; }
                        i_val += month_name.length;
                        break;
                    }
                }
            }
            if ((month < 1)||(month>12)){return 0;}
        }
        else if (token=="EE"||token=="E"){
            for (var i=0; i<DAY_NAMES.length; i++) {
                var day_name=DAY_NAMES[i];
                if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
                    i_val += day_name.length;
                    break;
                }
            }
        }
        else if (token=="MM"||token=="M") {
            month=_getInt(val,i_val,token.length,2);
            if(month==null||(month<1)||(month>12)){return 0;}
            i_val+=month.length;}
        else if (token=="dd"||token=="d") {
            date=_getInt(val,i_val,token.length,2);
            if(date==null||(date<1)||(date>31)){return 0;}
            i_val+=date.length;}
        else if (token=="hh"||token=="h") {
            hh=_getInt(val,i_val,token.length,2);
            if(hh==null||(hh<1)||(hh>12)){return 0;}
            i_val+=hh.length;}
        else if (token=="HH"||token=="H") {
            hh=_getInt(val,i_val,token.length,2);
            if(hh==null||(hh<0)||(hh>23)){return 0;}
            i_val+=hh.length;}
        else if (token=="KK"||token=="K") {
            hh=_getInt(val,i_val,token.length,2);
            if(hh==null||(hh<0)||(hh>11)){return 0;}
            i_val+=hh.length;}
        else if (token=="kk"||token=="k") {
            hh=_getInt(val,i_val,token.length,2);
            if(hh==null||(hh<1)||(hh>24)){return 0;}
            i_val+=hh.length;hh--;}
        else if (token=="mm"||token=="m") {
            mm=_getInt(val,i_val,token.length,2);
            if(mm==null||(mm<0)||(mm>59)){return 0;}
            i_val+=mm.length;}
        else if (token=="ss"||token=="s") {
            ss=_getInt(val,i_val,token.length,2);
            if(ss==null||(ss<0)||(ss>59)){return 0;}
            i_val+=ss.length;}
        else if (token=="a") {
            if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
            else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
            else {return 0;}
            i_val+=2;}
        else {
            if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
            else {i_val+=token.length;}
        }
    }
    // If there are any trailing characters left in the value, it doesn't match
    if (i_val != val.length) { return 0; }
    // Is date valid for month?
    if (month==2) {
        // Check for leap year
        if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
            if (date > 29){ return 0; }
        }
        else { if (date > 28) { return 0; } }
    }
    if ((month==4)||(month==6)||(month==9)||(month==11)) {
        if (date > 30) { return 0; }
    }
    // Correct hours value
    if (hh<12 && ampm=="PM") { hh=hh-0+12; }
    else if (hh>11 && ampm=="AM") { hh-=12; }
    var newdate=new Date(year,month-1,date,hh,mm,ss);
    return newdate.getTime();
}

function doNotAdd(type){

    if(type=="driver"){
        document.getElementById("cancel").value="cancelDriver";
        document.forms[0].submit();
    }
    else if(type=="vehicle")
    {
        document.getElementById("cancel").value="cancelVehicle";
        document.forms[0].submit();
    }
    else if(type=="incident")
    {
        document.getElementById("cancel").value="cancelIncident";
        document.forms[0].submit();
    }
}

/***********************************************************************************
 * Script Title:	LRSvalidations.js
 * Description :	This file contains on the generalized js funtions
 ************************************************************************************
 * Sr. No.	Author    Date    		Description
 * -------	--------  ------------------	------------
 *   1           Ismail   25th July 2008  	Defined different functions
 ************************************************************************************/

/*Javascript validations used in DefineRules.jsp*/
function rules()
{
    var partnerID=f1.partnerID.value;
    var defaultPrice=f1.default_Price.value;
    var ruleName=f1.ruleName.value;
    var field=f1.field1.value;
    var price=f1.price.value;
    var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";
    var h=f1.save.value;

    if(partnerID=="select")
    {
        window.alert("Select partner name.");
        document.f1.partnerID.focus();
        return false;

    }
    if(!isInteger(defaultPrice)&& !checknumeric(defaultPrice))
    {
        alert("Default price should be integer.");
        document.f1.default_Price.focus();
        return(false);
    }

    if(defaultPrice!="" && defaultPrice>=0)
    {
        document.f1.submit();
        return true;
    }
    else
    {

        if(trim(ruleName)=="")
        {
            window.alert("Rule name is required");
            document.f1.ruleName.focus();
            return false;

        }
        if(ruleName.toString().toUpperCase()=="DEFAULT")
        {
            window.alert("Rule name can not be 'DEFAULT'");
            document.f1.ruleName.focus();
            return false;

        }
        for (var i = 0; i < ruleName.length; i++)
        {
            if (iChars.indexOf(ruleName.charAt(i)) != -1) {
                alert ("Special characters are not allowed in rule name.");
                document.f1.ruleName.focus();
                return false;
            }
        }

        if(field=="")
        {
            window.alert("Select field.");
            document.f1.field1.focus();
            return false;

        }


        if( !isInteger(price)&& !checknumeric(price))
        {
            alert("Price should be an integer.");
            document.f1.filter_Price.focus();
            return(false);
        }
        if(trim(price)=="")
        {

            document.f1.price.value = "0";

        }
    }
}



function isInteger(s)
{
    var i;

    if (isEmpty(s))
        if (isInteger.arguments.length == 1) return 0;
    else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }
    //alert("Note: This rule will become effective only after generating rule XML by using Profile -> Rules XML Generator. ");
    return true;
}
function isEmpty(s)
{
    return ((s == null) || (s.length == 0))
}

function isDigit (c)
{
    return ((c >= "0") && (c <= "9"))
}
function checknumeric(text)
{
    var validchar = "0123456789.";
    var isnumber=true;
    var character;
    for (j = 0; j < text.length && isnumber == true; j++)
    {
        character = text.charAt(j);
        if (validchar.indexOf(character) == -1)
        {
            isnumber = false;
        }
    }
    return isnumber;
}
/*End of DefineRules.jsp Validations**/

//function to validate U.S Street address
function validateResAddress(str,alertMsg)
{
    //str.split(' ',str.length);
    var digit="\ 1234567890";
    var alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\ ";
    var invalid="/\\[]:|=+*?<>@%&!`~{}_()^$\'\"";
    var condition=true;
    var numCondition=true;
    var charCondition=true;
    var spaceCharCondition=true;
    var indexSpace=str.indexOf(' ');
    if(indexSpace>0)
    {
        for(var i=0;i<str.length;i++)
        {
            var numChars=str.charAt(i);

            if(digit.indexOf(numChars)>0 && numChars!=' ')
            {
                numCondition=true;
                break;
            }else if(digit.indexOf(numChars)>0 && numChars==" ")
            {

                numCondition=true;

            }
            else
            {

                numCondition=false;
            }

        }

        for(i=0;i<str.length;i++)
        {

            var Chars=str.charAt(i);
            if(alpha.indexOf(Chars)>0 && str.charAt(i)!=' ' )
            {

                charCondition=true;
                break;
            }else if(alpha.indexOf(Chars)>0 && str.charAt(i)==' ' )
            {
                if(i==str.length-1)
                {
                    charCondition=false;

                }
                else
                {
                    charCondition=true;
                }


            }
            else
            {

                charCondition=false;
            }

        }
        for(i=0;i<str.length;i++)
        {
            var strChars=str.charAt(i);
            if(invalid.indexOf(strChars)>0)
            {
                condition=false;
                break;
            }
            else
            {
                condition=true;
            }

        }

    }
    else
    {
        condition=false;

    }
    if((charCondition && numCondition && condition))
    {


        condition=true;


    }else{condition=false;}

    return condition;


}

//function to validate phoneNumber extension
function validatePhone(str,alertMsg)
{

    var strChars=parseInt(str,10);
    if(str.length > 0){
        if(str != parseInt(str))
        {
            return false;
        }
        else
        {
            return true;
        }
    }else{
        return true;
    }
}
// Popup

function popUp(url) {
	day = new Date();
	id = day.getTime();
	window.open(url, null, config='height=450,width=540, toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=no, directories=no, status=no');
}


function nw_fnWindowOpen(url, name, options){

    newWindow = window.open(url, name, options);

    newWindow.focus();

}
//Ajax For Privacy Policy
 var xmlHttp;
 function createXMLHttpRequest() {
        if (window.ActiveXObject) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest();
        }
    }


    function enterInAudLog(sessionId, leadId, ipAddress, curl, phpSessionId, sid, referringURL, pageName, version,partner)
    {
        createXMLHttpRequest();
        queryString =  'auditlogentry.do?lrsSessionId='+sessionId+'&lrsLeadId='+leadId+'&lrsCurl='+curl+'&lrsPhpSessionId='+phpSessionId+'&lrsSid='+sid+'&referringURL='+referringURL+'&fromPage='+pageName+'&version='+version+'&partner='+partner;
        xmlHttp.onreadystatechange = processStateChange;
        xmlHttp.open("GET", queryString, true);
        xmlHttp.send(null);

    }

    function processStateChange() {
        if (xmlHttp.readyState == 4) { // Complete

            if (xmlHttp.status == 200) { // OK response

            }
        }
    }
    //function to display pageContainer if JavaScripts are enabled
    function showPage()
    {
        if (document && document.getElementById('pageContainer'))
        {
            document.getElementById('pageContainer').style.height = '100%';
            document.getElementById('pageContainer').style.display = 'block';
        }
    }
