function trim(sString) 
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}

function validateBrandSearchForm(oForm)
{
    var isValid = true;
    var BRAND_MIN_CHARACTERS = 2;
    var FORM_FIELD_BRANDNAME = 'BrandName';
    var DEFAULT_VALUE_DROPDOWN = 'select a brand...';
    var DEFAULT_VALUE_TEXTBOX = 'enter brand';
    var TOP_BRANDS = 'Top Brands:';
    var ERROR_MESSAGE_EMPTY_TEXT = 'Please enter a brand name.';
    var ERROR_MESSAGE_BRANDNAME_MIN_CHARACTERS = 'Brand name must be at least ' + BRAND_MIN_CHARACTERS + ' characters.';
    var ERROR_MESSAGE_INVALID_CHARACTER = 'Brand name contains an invalid character.';
    var ERROR_MESSAGE_BRANDNAME_NOT_SELECTED = 'Please select a brand name.';
    if (oForm != null)
    {
        var oBrandTextBox = oForm.elements[FORM_FIELD_BRANDNAME];
        if (oBrandTextBox != null)
        {
            var sBrandName = trim(oBrandTextBox.value);

	        if (isInvalidChars(sBrandName) && sBrandName != TOP_BRANDS)
            {
                if (oBrandTextBox.type == 'text')
                {
                    alert(ERROR_MESSAGE_EMPTY_TEXT);
                }
                else
                {
                    alert(ERROR_MESSAGE_BRANDNAME_NOT_SELECTED);                    
                }                
                oBrandTextBox.focus();
                return false;
            }
            if (sBrandName.toLowerCase() == DEFAULT_VALUE_TEXTBOX ||
                sBrandName.toLowerCase() == DEFAULT_VALUE_DROPDOWN || 
                sBrandName.length == 0)
            {
                alert(ERROR_MESSAGE_BRANDNAME_NOT_SELECTED);
                oBrandTextBox.focus();
                return false;
            }
//            if (sBrandName.length < BRAND_MIN_CHARACTERS)
//            {
//                alert(ERROR_MESSAGE_BRANDNAME_MIN_CHARACTERS);
//                oBrandTextBox.focus();
//                return false;
//            }
        }
    }
    return true;
}

function validateBrandModelSearchForm(oForm)
{
    var isValid = true;
    var MODELNUMBER_MIN_CHARACTERS = 1;
    var FORM_FIELD_BRANDNAME = 'BrandName';
    var FORM_FIELD_MODELNUMBER = 'ModelNumber';
    var ERROR_MESSAGE_BRANDNAME_NOT_SELECTED = 'Please select a brand.';
    var ERROR_MESSAGE_EMPTY_TEXT = 'Please enter a model number.';
    var ERROR_MESSAGE_MODELNUMBER_MIN_CHARACTERS = 'Model number name must be at least ' + MODELNUMBER_MIN_CHARACTERS + ' character.';
    var ERROR_MESSAGE_INVALID_CHARACTER = 'Model number contains an invalid character.';
    if (oForm != null)
    {
        var oBrandHtmlSelect = oForm.elements[FORM_FIELD_BRANDNAME];
        if (oBrandHtmlSelect != null)
        {
            if (oBrandHtmlSelect.selectedIndex == 0)
            {
                alert(ERROR_MESSAGE_BRANDNAME_NOT_SELECTED);
                oBrandHtmlSelect.focus();
                return false;
            }
            var oModelNumberTextBox = oForm.elements[FORM_FIELD_MODELNUMBER];
            if (oModelNumberTextBox.value.length == 0) {
                alert(ERROR_MESSAGE_EMPTY_TEXT);
                oModelNumberTextBox.focus();
                return false;
            }
            if (oModelNumberTextBox.value.length < MODELNUMBER_MIN_CHARACTERS)
            {
                alert(ERROR_MESSAGE_MODELNUMBER_MIN_CHARACTERS);
                oModelNumberTextBox.focus();
                return false;
            }
            if (isInvalidChars(oModelNumberTextBox.value))
            {
                alert(ERROR_MESSAGE_INVALID_CHARACTER);
                oModelNumberTextBox.focus();
                return false;
            }
            
        }
    }
    return true;
}

function validateModelSearchForm(oForm, sDefaultText) {
    var MODELNUMBER_MIN_CHARACTERS = 1;
    var FORM_FIELD_MODELNUMBER = 'ModelNumber';
    var ERROR_MESSAGE_EMPTY_TEXT = 'Please enter a model number.';
    var ERROR_MESSAGE_MODELNUMBER_MIN_CHARACTERS = 'Model number name must be at least ' + MODELNUMBER_MIN_CHARACTERS + ' character.';
    var ERROR_MESSAGE_INVALID_CHARACTER = 'Model number contains an invalid character.';
    if (oForm != null)
    {
        var oModelNumberTextBox = oForm.elements[FORM_FIELD_MODELNUMBER];
        if (oModelNumberTextBox != null)
        {
            var sModelNumber = trim(oModelNumberTextBox.value);

            if (sModelNumber.length == 0 || sModelNumber == sDefaultText)
            {
                alert(ERROR_MESSAGE_EMPTY_TEXT);
                oModelNumberTextBox.focus();
                return false;
            }
            if (sModelNumber.length < MODELNUMBER_MIN_CHARACTERS)
            {
                alert(ERROR_MESSAGE_MODELNUMBER_MIN_CHARACTERS);
                oModelNumberTextBox.focus();
                return false;
            }
            if (isInvalidChars(sModelNumber))
            {
                alert(ERROR_MESSAGE_INVALID_CHARACTER);
                oModelNumberTextBox.focus();
                return false;
            }
        }
    }
    return true;
}

function validatePartNumberSearchForm(oForm)
{
    var PARTNUMBER_MIN_CHARACTERS = 2;
    var FORM_FIELD_PARTNUMBER_WATERMARK = 'Enter Your Part #';
    var FORM_FIELD_PARTNUMBER = 'PartNumber';
    var ERROR_MESSAGE_EMPTY_TEXT = 'Please enter a part number.';
    var ERROR_MESSAGE_MIN_CHARACTERS = 'Part number must be at least ' + PARTNUMBER_MIN_CHARACTERS + ' characters.';
    var ERROR_MESSAGE_INVALID_CHARACTER = 'Part number contains an invalid character.';
    if (oForm != null)
    {
        var oPartNumberTextBox = oForm.elements[FORM_FIELD_PARTNUMBER];
        if (oPartNumberTextBox != null)
        {
            var sPartNumber = trim(oPartNumberTextBox.value);
            if (sPartNumber.length == 0 || sPartNumber == FORM_FIELD_PARTNUMBER_WATERMARK)
            {
                alert(ERROR_MESSAGE_EMPTY_TEXT);
                oPartNumberTextBox.focus();
                return false;
            }
            if (sPartNumber.length < PARTNUMBER_MIN_CHARACTERS)
            {
                alert(ERROR_MESSAGE_MIN_CHARACTERS);
                oPartNumberTextBox.focus();
                return false;
            }
            if (isInvalidChars(sPartNumber))
            {
                alert(ERROR_MESSAGE_INVALID_CHARACTER);
                oPartNumberTextBox.focus();
                return false;
            }
        }
    }
    return true;
}


function brandName_OnChange(oElt)
{
    var ERROR_MESSAGE_NO_SELECTION = 'Please select your product\'s brand name';
    var OPTION_TOP_BRANDS = 'Top Brands:';
    var OPTION_SEE_ALL_BRANDS = 'See All Brands';
    var URL_TOP_BRANDS = 'AllBrands.aspx?ShowAllBrands=false';
    var URL_ALL_BRANDS = 'AllBrands.aspx?ShowAllBrands=true';

    oElt.form.elements['MfgName'].value = oElt.options[oElt.selectedIndex].attributes['mfgName'].value;
    if (oElt.value != '')
    {
        var sUrl = '';
        
        if (oElt.value == OPTION_TOP_BRANDS)
        {
            sUrl = URL_TOP_BRANDS;
        }
        
        if (oElt.value == OPTION_SEE_ALL_BRANDS)
        {
            sUrl = URL_ALL_BRANDS;
        }
        
        if (sUrl != '')
        {
            location.href = sUrl;
        }
        else
        {
            oElt.form.submit();
        }
        return;
    }
    else
    {
        alert(ERROR_MESSAGE_NO_SELECTION);
        oElt.focus();
    }
}


function isValidShippingPhoneNumber(sender, args)
{
    args.IsValid = isValidPhoneNumber('Shipping');
    return;
}

function isValidBillingPhoneNumber(sender, args)
{
    args.IsValid = isValidPhoneNumber('Billing');
    return;
}
            
function isValidPhoneNumber(sType)
{
    var isValidPhoneNumber = false;
    var PHONE_NUMBER_AREACODE = 'PhoneAreaCodeTextBox';
    var PHONE_NUMBER_FIRST_THREE_DIGITS = 'PhoneFirstThreeDigitsTextBox';
    var PHONE_NUMBER_LAST_FOUR_DIGITS = 'PhoneLastFourDigitsTextBox';
    var oAreaCode = document.getElementById(sType + PHONE_NUMBER_AREACODE);
    var oFirstThreeDigits = document.getElementById(sType + PHONE_NUMBER_FIRST_THREE_DIGITS);
    var oLastFourDigits = document.getElementById(sType + PHONE_NUMBER_LAST_FOUR_DIGITS);
    if (oAreaCode.value.length == 3 && oFirstThreeDigits.value.length == 3 && oLastFourDigits.value.length == 4)
    {
        isValidPhoneNumber = true;
    }
    return isValidPhoneNumber;
}

function isValidExpirationDate(sender, args)
{
    var EXPIRATION_DATE_MONTH = 'ExpirationDateMonthDropDownList';
    var EXPIRATION_DATE_YEAR = 'ExpirationDateYearDropDownList';
    var oMonth = document.getElementById(EXPIRATION_DATE_MONTH);
    var oYear = document.getElementById(EXPIRATION_DATE_YEAR);
    var expirationDate = new Date();
    expirationDate.setFullYear(oYear, oMonth, 1);                
    args.IsValid = expirationDate >= new Date();
    return;
}

function isInvalidChars(check) 
{
    var regEx=new RegExp("[<>;:%\"]")
	if ((regEx.test(check))||(check=='')) 
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

function isValidQuantity(pForm)
{
    var FORM_FIELD_QUANTITY = 'Quantity';
    var isValid = false;
    var regEx = /^[1-9]\d*$/;
    if (pForm != null)
    {    
        var vQuantity = pForm.elements[FORM_FIELD_QUANTITY];
        if (vQuantity != null)
        {
            if(regEx.test(vQuantity.value))
            {
               isValid = true;
            }
            else
            {
                isValid = false;
                alert('Please enter a valid number.');
                vQuantity.select();
            }
        }
    }
    return isValid;
}

function OpenModelHelpWindow()
{	
	window.open('/ModelNumberPopUp.aspx','NewWindow','toolbar=no,menubar=no,scrollbars=yes,width=700,height=600');
}

function getScrollHeight()
{
   var h = window.pageYOffset ||
           document.body.scrollTop ||
           document.documentElement.scrollTop;
           
   return h ? h : 0;
}