/*
  $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];
        }
}

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);
    }
}

function roll(img_name, img_src){
    var image = document.getElementById(img_name);
    if(image==null || image==''){
        image = document.createElement("img");
        image.name = img_name;
        image.id = img_name;
        image.height = '150';
        image.width = '142';
        image.style.padding = '1';

        var mainDiv = document.getElementById("ImagePanel");
        mainDiv.appendChild(image);
    }
    image.src = img_src;
}

function makeScrollable(wrapper, scrollable){
    // Get jQuery elements
    var wrapper = $(wrapper), scrollable = $(scrollable);

    // Hide images until they are not loaded
    scrollable.hide();
    var loading = $('<div class="loading">Loading...</div>').appendTo(wrapper);

    // Set function that will check if all images are loaded
    var interval = setInterval(function(){
        var images = scrollable.find('img');
        var completed = 0;

        // Counts number of images that are succesfully loaded
        images.each(function(){
            if (this.complete) completed++;
        });

        if (completed == images.length){
            clearInterval(interval);
            // Timeout added to fix problem with Chrome
            setTimeout(function(){

                loading.hide();
                // Remove scrollbars
                wrapper.css({
                    overflow: 'hidden'
                });

                scrollable.slideDown('slow', function(){
                    enable();
                });
            }, 1000);
        }
    }, 100);

    function enable(){
        // height of area at the top at bottom, that don't respond to mousemove
        var inactiveMargin = 100;
        // Cache for performance
        var wrapperWidth = wrapper.width();
        var wrapperHeight = wrapper.height();
        // Using outer height to include padding too
        var scrollableHeight = scrollable.outerHeight() + 2*inactiveMargin;
        // Do not cache wrapperOffset, because it can change when user resizes window
        // We could use onresize event, but it's just not worth doing that
        // var wrapperOffset = wrapper.offset();

        //When user move mouse over menu
        wrapper.mousemove(function(e){
            var wrapperOffset = wrapper.offset();
            // Scroll menu
            var top = (e.pageY -  wrapperOffset.top) * (scrollableHeight - wrapperHeight) / wrapperHeight - inactiveMargin;

            if (top < 0){
                top = 0;
            }

            wrapper.scrollTop(top);
        });
    }
}

$(function(){
    makeScrollable("div.sc_menu_wrapper", "div.sc_menu");
});

function phpOnlinePopupWindow() {
    var url = "<?php echo $phpOnline_base_url.'/client.php';?>";
    window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=550,height=400,screenX=150,screenY=150,top=150,left=150')
}

function GetDay(intDay){
    var DayArray = new Array("Sunday", "Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday", "Saturday")
    return DayArray[intDay]
}

function GetMonth(intMonth){
    var MonthArray = new Array("January", "February", "March",
        "April", "May", "June",
        "July", "August", "September",
        "October", "November", "December")
    return MonthArray[intMonth]
}
function getDateStrWithDOW(){
    var today = new Date()
    var year = today.getYear()
    if(year<1000) year+=1900
    var todayStr = GetDay(today.getDay()) + ", "
    todayStr += GetMonth(today.getMonth()) + " " + today.getDate()
    todayStr += ", " + year
    return todayStr
}

function CopyQty(elemId,thisElem){
    $('#'+elemId).val($(thisElem).val());
}
