/*
  $Id: general.js 1739 2007-12-20 00:52:16Z hpdl $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

function SetFocus(TargetFormName) {
    var target = 0;
    if (TargetFormName != "") {
        for (i=0; i<document.forms.length; i++) {
            if (document.forms[i].name == TargetFormName) {
                target = i;
                break;
            }
        }
    }

    var TargetForm = document.forms[target];
    
    for (i=0; i<TargetForm.length; i++) {
        if ( (TargetForm.elements[i].type != "image") && (TargetForm.elements[i].type != "hidden") && (TargetForm.elements[i].type != "reset") && (TargetForm.elements[i].type != "submit") ) {
            TargetForm.elements[i].focus();

            if ( (TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password") ) {
                TargetForm.elements[i].select();
            }

            break;
        }
    }
}

function RemoveFormatString(TargetElement, FormatString) {
    if (TargetElement.value == FormatString) {
        TargetElement.value = "";
    }

    TargetElement.select();
}

function CheckDateRange(from, to) {
    if (Date.parse(from.value) <= Date.parse(to.value)) {
        return true;
    } else {
        return false;
    }
}

function IsValidDate(DateToCheck, FormatString) {
    var strDateToCheck;
    var strDateToCheckArray;
    var strFormatArray;
    var strFormatString;
    var strDay;
    var strMonth;
    var strYear;
    var intday;
    var intMonth;
    var intYear;
    var intDateSeparatorIdx = -1;
    var intFormatSeparatorIdx = -1;
    var strSeparatorArray = new Array("-"," ","/",".");
    var strMonthArray = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
    var intDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

    strDateToCheck = DateToCheck.toLowerCase();
    strFormatString = FormatString.toLowerCase();
  
    if (strDateToCheck.length != strFormatString.length) {
        return false;
    }

    for (i=0; i<strSeparatorArray.length; i++) {
        if (strFormatString.indexOf(strSeparatorArray[i]) != -1) {
            intFormatSeparatorIdx = i;
            break;
        }
    }

    for (i=0; i<strSeparatorArray.length; i++) {
        if (strDateToCheck.indexOf(strSeparatorArray[i]) != -1) {
            intDateSeparatorIdx = i;
            break;
        }
    }

    if (intDateSeparatorIdx != intFormatSeparatorIdx) {
        return false;
    }

    if (intDateSeparatorIdx != -1) {
        strFormatArray = strFormatString.split(strSeparatorArray[intFormatSeparatorIdx]);
        if (strFormatArray.length != 3) {
            return false;
        }

        strDateToCheckArray = strDateToCheck.split(strSeparatorArray[intDateSeparatorIdx]);
        if (strDateToCheckArray.length != 3) {
            return false;
        }

        for (i=0; i<strFormatArray.length; i++) {
            if (strFormatArray[i] == 'mm' || strFormatArray[i] == 'mmm') {
                strMonth = strDateToCheckArray[i];
            }

            if (strFormatArray[i] == 'dd') {
                strDay = strDateToCheckArray[i];
            }

            if (strFormatArray[i] == 'yyyy') {
                strYear = strDateToCheckArray[i];
            }
        }
    } else {
        if (FormatString.length > 7) {
            if (strFormatString.indexOf('mmm') == -1) {
                strMonth = strDateToCheck.substring(strFormatString.indexOf('mm'), 2);
            } else {
                strMonth = strDateToCheck.substring(strFormatString.indexOf('mmm'), 3);
            }

            strDay = strDateToCheck.substring(strFormatString.indexOf('dd'), 2);
            strYear = strDateToCheck.substring(strFormatString.indexOf('yyyy'), 2);
        } else {
            return false;
        }
    }

    if (strYear.length != 4) {
        return false;
    }

    intday = parseInt(strDay, 10);
    if (isNaN(intday)) {
        return false;
    }
    if (intday < 1) {
        return false;
    }

    intMonth = parseInt(strMonth, 10);
    if (isNaN(intMonth)) {
        for (i=0; i<strMonthArray.length; i++) {
            if (strMonth == strMonthArray[i]) {
                intMonth = i+1;
                break;
            }
        }
        if (isNaN(intMonth)) {
            return false;
        }
    }
    if (intMonth > 12 || intMonth < 1) {
        return false;
    }

    intYear = parseInt(strYear, 10);
    if (isNaN(intYear)) {
        return false;
    }
    if (IsLeapYear(intYear) == true) {
        intDaysArray[1] = 29;
    }

    if (intday > intDaysArray[intMonth - 1]) {
        return false;
    }
  
    return true;
}

function IsLeapYear(intYear) {
    if (intYear % 100 == 0) {
        if (intYear % 400 == 0) {
            return true;
        }
    } else {
        if ((intYear % 4) == 0) {
            return true;
        }
    }

    return false;
}


/**
 * @author anisrehan
 */
function verify(form)
{
    var passed = false;
    var blnRetval, intAtSign, intDot, intComma, intSpace, intLastDot, intDomain, intStrLen;
    if (form.Email){
        intAtSign=form.Email.value.indexOf("@");
        intDot=form.Email.value.indexOf(".",intAtSign);
        intComma=form.Email.value.indexOf(",");
        intSpace=form.Email.value.indexOf(" ");
        intLastDot=form.Email.value.lastIndexOf(".");
        intDomain=intDot-intAtSign;
        intStrLen=form.Email.value.length;
        // *** CHECK FOR BLANK EMAIL VALUE
        if (form.Email.value == "" ){
            alert("You have not entered an email address.");
            form.Email.focus();
            passed = false;
        }
        // **** CHECK FOR THE  @ SIGN?
        else if (intAtSign == -1)
        {

            alert("Your email address is missing the \"@\".");
            form.Email.focus();
            passed = false;

        }
        // **** Check for commas ****

        else if (intComma != -1)
        {
            alert("Email address cannot contain a comma.");
            form.Email.focus();
            passed = false;
        }

        // **** Check for a space ****

        else if (intSpace != -1)
        {
            alert("Email address cannot contain spaces.");
            form.Email.focus();
            passed = false;
        }

        // **** Check for char between the @ and dot, chars between dots, and at least 1 char after the last dot ****

        else if ((intDot <= 2) || (intDomain <= 1)  || (intStrLen-(intLastDot+1) < 2))
        {
            alert("Please enter a valid Email address.\n" + form.Email.value + " is invalid.");
            form.Email.focus();
            passed = false;
        }
        else {
            passed = true;
        }
    }else{
        alert('Invalid Email');
    }
    return passed;
}

function MM_preloadImages() { //v3.0
    var d=document; if(d.images){
        if(!d.MM_p) d.MM_p=new Array();
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
            if (a[i].indexOf("#")!=0){
                d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];
            }
            }
}
function MM_swapImgRestore() { //v3.0
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
    }
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
        if ((x=MM_findObj(a[i]))!=null){
            document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];
        }
}

var selected;

function selectRowEffect(object, buttonSelect) {
    if (!selected) {
        if (document.getElementById) {
            selected = document.getElementById('defaultSelected');
        } else {
            selected = document.all['defaultSelected'];
        }
    }

    if (selected) selected.className = 'moduleRow';
    object.className = 'moduleRowSelected';
    selected = object;

    // one button is not an array
    if (document.checkout_address.address[0]) {
        document.checkout_address.address[buttonSelect].checked=true;
    } else {
        document.checkout_address.address.checked=true;
    }
}

function rowOverEffect(object) {
    if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}

function rowOutEffect(object) {
    if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}

function check_form_optional(form_name) {
    var form = form_name;

    var firstname = form.elements['firstname'].value;
    var lastname = form.elements['lastname'].value;
    var street_address = form.elements['street_address'].value;

    if (firstname == '' && lastname == '' && street_address == '') {
        return true;
    } else {
        return check_form(form_name);
    }
}