<!--
function popupdefined(url, height, width) {
	var lefttop = 'toolbars=0,scrollbars=0,location=0,statusbars=0,menubars=0,resizable=0,width=' + width + ',height=' + height;
	var win = window.open(url, 'popup' ,lefttop);
	win.window.focus();
}

function noenter(e) {
	if (e) {
		if (e.keyCode == 13) {
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}

function doLogin() {
	if (window.event && window.event.keyCode == 13) {
		__doPostBack('_BtnSignIn', '');
		return false;
	} else {
		return true;
	}
}

function PopUpDefinedScrolling(url, height, width) {
	var left = ((screen.availWidth - parseInt(width)) / 2);
	var top = ((screen.availHeight - parseInt(height)) /2);
	var properties = "toolbars=0,scrollbars=yes,statusbars=0,menubars=0,resizable=yes,width=" + width + ",height=" + height + ",left=" + left + "px,top=" + top + "px";
	var win = window.open(url,'popup',properties);
	win.window.focus();
}

function giftMessageLimit(textarea, limit, e) {
	var messageField = document.getElementById(textarea);
	if ((e.keyCode == 8) || (e.keyCode == 46)) return true;
	if (messageField.value.length == limit * 1) return false;
}

function giftMessageCount(textarea, limit, writeTo) {
	var messageField = document.getElementById(textarea);
	if (messageField.value.length > limit * 1) {
		messageField.value = messageField.value.substring(0, limit * 1);
	}
	
	if (writeTo.length > 0) {
		var writeToField = document.getElementById(writeTo);
		if (writeToField) {
			writeToField.innerHTML = limit - messageField.value.length;
		}
	}
	
	giftMessageHtmlValidate(messageField);
}

function giftMessageHtmlValidate(textarea) {
	var errorField = document.getElementById("giftMessageHtmlError");
	if (textarea && errorField) {
		if (textarea.value.match(/<\/?[a-z][a-z0-9]*[^<>]*>/)) {
			errorField.style.display = "";
		} else {
			errorField.style.display = "none";
		}
	}
}

function findPosition(from) {
	if(from) {
		if(from.offsetParent) {
			for (var posX=0, posY=0; from.offsetParent; from=from.offsetParent) {
				posX += from.offsetLeft;
				posY += from.offsetTop;
			}
			return [ posX, posY ];
		} else {
			return [ from.x, from.y ];
		}
	}
}

// form validation object
function field(inputId, labelId, type, required) {
	this.Input = getElement(inputId);
	this.Label = getElement(labelId);
	this.Type = type;
	this.Required = required;
	
	function getElement(elementId) {
		if (elementId.length > 0) {
			return document.getElementById(elementId)
		}
		
		return null;
	}
	
	this.Clear = function() {
		if (this.Input) {
			switch(this.Input.type) {
				case "text":
					this.Input.value = "";
					break;
			}
		}
	}
	
	this.ClearError = function() {
		if (this.Input) {
			this.Input.style.borderColor = "#959595";
		}
		
		if (this.Label) {
			this.Label.style.color = "#000000";
		}
	}
	
	this.SetError = function() {
		if (this.Input) {
			this.Input.style.borderColor = "#990000";
		}
		
		if (this.Label) {
			this.Label.style.color = "#990000";
		}
		
		return false
	}
	
	this.Validate = function() {
		this.ClearError();
		switch(this.Type) {
			case "address":
				if (!validateAddress(this, false)) {
					return this.SetError();
				}
				break;
				
			case "addressWithPO":
				if (!validateAddress(this, true)) {
					return this.SetError();
				}
				break;
				
			case "name":
				if (!validateName(this)) {
					return this.SetError();
				}
				break;
				
			case "city":
				if (!validateCity(this)) {
					return this.SetError();
				}
				break;
				
			case "zip":
				if (!validateZip(this)) {
					return this.SetError();
				}
				break;
				
			case "phone":
				if (!validatePhone(this)) {
					return this.SetError();
				}
				break;
				
			case "email":
				if (!validateEmail(this)) {
					return this.SetError();
				}
				break;
				
			case "quantity":
				if (!validateQuantity(this)) {
					return this.SetError();
				}
				break;
				
			case "month":
				if (!validateMonth(this)) {
					return this.SetError();
				}
				break;
				
			case "year":
				if (!validateYear(this)) {
					return this.SetError();
				}
				break;
				
			case "day":
				if (!validateDay(this)) {
					return this.SetError();
				}
				break;
				
			default:
				if (!validateDefault(this)) {
					return this.SetError();
				}
				break;
		}
		
		return true;
	}
}

function validateName(field) {
    var trimmed = trim(field.Input.value);
	if (field.Required) {
		if (trimmed.length > 0) {
			if (field.Input.value.indexOf(" ") == -1) {
				return false;
			}
		} else {
			return false;
		}
	} else if (trimmed.length > 0) {
		if (field.Input.value.indexOf(" ") == -1) {
			return false;
		}
	}
	
	return true;
}

function validateAddress(field, poboxSafe) {
	var lowerCase = trim(field.Input.value).toLowerCase();

	if (field.Required) {
		if (lowerCase.length > 0) {
			if (!poboxSafe) {
				if (lowerCase.match(/(p\.?o\.?|post.office).box/)) {
					return false;
				}
			}
		} else {
			return false;
		}
	} else if (lowerCase.length > 0) {
		if (!poboxSafe) {
			if (lowerCase.match(/(p\.?o\.?|post.office).box/)) {
				return false;
			}
		}
	}
	
	return true;
}

function validateCity(field) {
	var city = "";
	for (var i=0; i<field.Input.value.length; i++) {
		switch(field.Input.value.charAt(i)) {
			case " ":
			case "-":
			case ".":
			case "'":
				break;
				
			default:
				city += field.Input.value.charAt(i);
				break;
		}
	}
	
	if (field.Required) {
		if (city.length > 0) {
			if (city.match(/[^a-zA-Z]/)) {
				return false;
			}
		} else {
			return false;
		}
	} else if (city.value.length > 0) {
		if (city.match(/[^a-zA-Z]/)) {
			return false;
		}
	}
	
	return true;
}

function validateZip(field) {
	if (field.Required) {
		if (field.Input.value.length > 0) {
			if (!field.Input.value.match(/^\d{5}([\-]\d{4})?$/)) {
				return false;
			}
		} else {
			return false;
		}
	} else if (field.Input.value.length > 0) {
		if (!field.Input.value.match(/^\d{5}([\-]\d{4})?$/)) {
			return false;
		}
	}
	
	return true;
}

function validatePhone(field) {
	if (field.Required) {
		if (field.Input.value.length > 0) {
			if (!field.Input.value.match(/\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/)) {
				return false;
			}
		} else {
			return false;
		}
	} else if (field.Input.value.length > 0) {
		if (!field.Input.value.match(/\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/)) {
			return false;
		}
	}

	return true;
}

function validateEmail(field) {
    var trimmed = trim(field.Input.value);
	if (field.Required) {
		if (trimmed.length > 0) {
			if (!field.Input.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) {
				return false;
			}
		} else {
			return false;
		}
	} else if (trimmed.length > 0) {
		if (!field.Input.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) {
			return false;
		}
	}
	
	return true;
}

function validateMonth(field) {
	if (field.Required) {
		if (field.Input.value.length > 0) {
			return validateNumber(field.Input.value, 1, 12);
		} else {
			return false;
		}
	} else {
		return validateNumber(field.Input.value, 1, 12);
	}
	
	return true;
}

function validateDay(field) {
	if (field.Required) {
		if (field.Input.value.length > 0) {
			return validateNumber(field.Input.value, 1, 31);
		} else {
			return false;
		}
	} else {
		return validateNumber(field.Input.value, 1, 31);
	}
	
	return true;
}

function validateYear(field) {
	if (field.Required) {
		if (field.Input.value.length > 0) {
			return validateNumber(field.Input.value, 2000, 3000);
		} else {
			return false;
		}
	} else {
		return validateNumber(field.Input.value, 2000, 3000);
	}
	
	return true;
}

function validateNumber(val, min, max) {
	var num = 0;
	if (val.length > 0) {
		if (isNaN(val)) {
			return false;
		} else {
			num = Number(val);
			if ((num > max) || (num < min)) {
				return false;
			}
		}
	}
	
	return true;
}

function validateDefault(field) {
	if (field.Required) {
		switch(field.Input.type) {
			case "text":
			case "password":
				if (field.Input.value.length == 0) {
					return false;
				}
				break;
				
			case "checkbox":
				if (!field.Input.checked) {
					return false;
				}
				break;
		}
	}
	
	return true;
}

function validateQuantity(field) {
	if (field.Input.value.length > 0) {
		var mask = new Mask("###", "number");
		var update = mask.format(field.Input.value);

		if (mask.error.length > 0) {
			return false;
		} else if (update != field.Input.value) {
			return false;
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function address(id, name, company, address1, address2, city, state, zip, country, phone, email) {
	this.Id = id;
	this.Name = name;
	this.Company = company;
	this.Address1 = address1;
	this.Address2 = address2;
	this.City = city;
	this.State = state;
	this.Zip = zip;
	this.Country = country;
	this.Email = email;
	this.Phone = phone;
}

function fieldHide(id) {
	var field = document.getElementById(id);
	if (field) {
		field.style.display = "none";
	}
}

function fieldShow(id) {
	var field = document.getElementById(id);
	if (field) {
		field.style.display = "";
	}
}

function creditcard(id, account, month, year, name, address1, address2, city, state, zip, country, phone) {
	this.Id = id;
	this.Account = account;
	this.Month = month;
	this.Year = year;
	this.Name = name;
	this.Address1 = address1;
	this.Address2 = address2;
	this.City = city;
	this.State = state;
	this.Zip = zip;
	this.Country = country;
	this.Phone = phone;
}

function productError(pproductId, errorCode) {
	this.PproductId = pproductId;
	this.ErrorCode = errorCode;
}

function product(pproductId, typeId, quantity, price) {
	this.PproductId = pproductId;
	this.TypeId = typeId;
	this.Quantity = quantity;
	this.Price = price;
}

function hideHelp(target) {
	var help = document.getElementById(target);
	if (help) {
		help.style.display = "none";
	}
}

function hideHelpExtended(target) {
	var help = document.getElementById(target);
	if (help) {
	    // show the form elements
	    showFormElements();
	    
		help.style.display = "none";
	}
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g, "");
}

function lTrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/, "");
}

function rTrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/, "");
}

function scrollingCalendar(targetId, rightId, leftId) {
    this.Months = loadData(targetId);
    this.RightArrow = loadRightArrow(rightId);
    this.LeftArrow = loadLeftArrow(leftId);

	function loadData(targetId) {
		if (targetId.length > 0) {
		    var target = document.getElementById(targetId)
		    
		    if (target) {
		        var output = new Array();
		        
		        for (var i=0; i < target.childNodes.length; i++) {
		            var child = target.childNodes[i];
		            if (child) {
		                if (child.className) {
		                    if (child.className == "wrapper") {
		                        output.push(child);
		                    }
		                }
		            }
		        }
		        
                return output;
		    }
		}
		
		return null;
	}
	
	function loadRightArrow(rightId) {
	    if (rightId.length > 0) {
	        var target = document.getElementById(rightId);
	        if (target) {
	            return target;
	        }
	    }
	    
	    return null;
	}
	
	function loadLeftArrow(leftId) {
	    if (leftId.length > 0) {
	        var target = document.getElementById(leftId);
	        if (target) {
	            return target;
	        }
	    }
	    
	    return null;
	}
	
	this.ScrollRight = function() {
	    var first = null;
	    
	    for (var i=0; i<this.Months.length; i++) {
	        var month = this.Months[i];
	        if (month) {
	            if (month.style.display == "none") {
	                if (first != null) {
	                    month.style.display = "";
	                    first.style.display = "none";
	                    
	                    if (this.LeftArrow) {
	                        if (this.LeftArrow.style.display == "none") {
	                            this.LeftArrow.style.display = "";
	                        }
	                    }
	                    
	                    if (this.RightArrow) {
	                        if (i == (this.Months.length - 1)) {
	                            this.RightArrow.style.display = "none";
	                        }
	                    }
	                    break;
	                }
	            } else {
	                if (first == null) {
	                    first = month;
	                }
	            }
	        }
	    }
	}
	
	this.ScrollLeft = function() {
	    var last = null;
	    
	    for (var i=this.Months.length - 1; i>=0; i--) {
	        var month = this.Months[i];
	        if (month) {
	            if (month.style.display == "none") {
	                if (last != null) {
	                    month.style.display = "";
	                    last.style.display = "none";
	                    
	                    if (this.RightArrow) {
	                        if (this.RightArrow.style.display == "none") {
	                            this.RightArrow.style.display = "";
	                        }
	                    }
	                    
	                    if (this.LeftArrow) {
	                        if (i == 0) {
	                            this.LeftArrow.style.display = "none";
	                        }
	                    }
	                    break;
	                }
	            } else {
	                if (last == null) {
	                    last = month;
	                }
	            }
	        }
	    }
	}
}

function hideFormElements() {
    var elements = document.getElementsByTagName("select");
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];
        element.style.visibility = "hidden";
    }
}

function showFormElements() {
    var elements = document.getElementsByTagName("select");
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];
        element.style.visibility = "";
    }
}

function DisplayAdditionalDeliveryOptions(control, textId)
{
    $('#response').empty();
    ShowDiv('deliveryOptionHelp');
    var deliveryOptionDiv = $('#deliveryOptionHelp');
    deliveryOptionDiv.css('top', $(control).offset().top).css('left', $(control).offset().left - (deliveryOptionDiv.width()/2));

    FillDivWithMultipleStringContent('additionalDeliveryInformation', textId);
}

function DisplayShippingInfo(control)
{
    var shippingInfoDiv = $('#shippingInfoHelp');
    ShowDiv('shippingInfoHelp');
    shippingInfoDiv.css('top', $(control).offset().top).css('left', $(control).offset().left);
    
    // don't need to make the service call if content is already there
    if(jQuery.trim($('#shippingInfoContent').text()) == '')
    {
        FillDivWithMultipleStringContent('shippingInfoContent', { '4303': null });  // string id 4303 is for shipping info
    }
}

function FillDivWithMultipleStringContent(divId, textId)
{
    var currentDiv = $("#" + divId);

    currentDiv.empty();
	
    var loadingString = $('<p>').append($('<strong>').append('loading...')).css('float', 'left');
    currentDiv.append(loadingString);

    var first = true;
	jQuery.each(textId, function(key, value) {
        var parameters = "{ textId: '" + key + "' }";
            $.ajax({
		    type: "Post",
		    url: "/checkout/Services/ShoppingCartService.asmx/GetStringContent",
		    data: parameters,
		    contentType: "application/json; charset=utf-8",
		    dataType: "json",
		    success: function(data) {
                if(first)
                {
                    currentDiv.empty();
                    first = false;
                }
                
			    var headerString = '';
			    if(value)
			    {
				    headerString = $("<strong>").append(value);
			    }
			    var stringContent = $("<p>").append(headerString).append(data["d"]);
			    currentDiv.append(stringContent);
		    }
        });
    });    
}

function DisplaySpecialShipping(orderId, shippingPrice)
{
    if(IsNewShippingValue(shippingPrice))
    {
        $.ajax({
            type: "POST",
            url: "/checkout/services/ShoppingCartService.asmx/CalculateTax",
            data: "{ 'orderId': '" + orderId + "', 'shippingPrice': '" + shippingPrice + "' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success : function (data) {
                var message = data.d;
                // update the shipping in the grid (function from Controls/Display/FinalTotals.ascx)
                AdjustShippingAndTax(shippingPrice, message.tax);
                CalculateTotal();
            },
            failure : function (msg) {
                $("#loadingImage").css('color','red').append("There has been an error with your selection.  Please try again or contact customer service.");
            }
        });
    }
}

function SetArrivalDate(orderId, date)
{
    $.ajax({
        type: "POST",
        url: "/checkout/services/ShoppingCartService.asmx/SetArrivalDate",
        data: "{ 'orderId': '" + orderId + "', 'date': '" + date + "' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success : function (data){
            var now = new Date();
            var selection = new Date(date);
            var days = Math.ceil(((selection - now) / (60*60*24)) / 1000);
            
            if(window.AdjustDeliveryDate)
            {
                AdjustDeliveryDate(days, date, null);
            }
            if(window.AdjustDeliveryGiftOptionDate)
            {
                AdjustDeliveryGiftOptionDate(days, date, null);
            }
            if(window.AdjustDeliveryGiftOptionDateMainPage)
            {
                AdjustDeliveryGiftOptionDateMainPage(days, date);
            }
        },
        failure : function (msg) {
            $("#loadingImage").css('color','red').append("There has been an error with your selection.  Please try again or contact customer service.");
        }
    });
}

function HideDiv(divId)
{
    $('#'+divId).hide();
}

function ShowDiv(divId)
{
    $('#'+divId).show();
}

function AdjustCalendar(radioButton, freightDeliveryMethodId, calendarId, orderId)
{
    // create loading image
    var loadingImage = $("<div>").css('margin-top', '50px').append($("<img>").attr( {src: '/checkout/images/spinnerBlack.gif', border: '0'})).append('<br/>').append('<b>Please wait</b>');
    var loadingDiv = $("#loadingImage");
    loadingDiv.empty().append(loadingImage);
    
    var calendarPos = $('#calendarDiv').position();
    if(calendarPos.left == 0 || calendarPos.top == 0)
    {
        calendarPos = $('#weatherHoldText').position();
        loadingDiv.css( { 'left':calendarPos.left + 'px', 'top':(calendarPos.top + 110) + 'px' } );
    }
    else
    {
        loadingDiv.css( { 'left':calendarPos.left + 'px', 'top':calendarPos.top + 'px' } );
    }
    
    loadingDiv.show();

    if(window.DisablePlaceOrderMainPage)
    {
        DisablePlaceOrderMainPage();
    }

    // Hide the title bar
    $(".ui-dialog-titlebar").hide();
    $.ajax({
        type: "POST",
        url: "/checkout/services/ShoppingCartService.asmx/CalculateShippingSpeed",
        data: "{ 'orderId': '" + orderId + "', 'freightDeliveryMethodId': '" + freightDeliveryMethodId + "' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        timeout: 10000,
        success : function (data) {
            var message = data.d;
            if(message.error == null || message.error == 'undefined' || message.error == 'null')
            {
                var earliestArrival = new Date(message.earliestArrivalDate);
                // set the min date on the calendar        
                if(message.calendar != null && message.calendar != 'undefined')
                {
                    if(window.SetCalendarDates)
                    {
                        SetCalendarDates(message.calendar);
                    }
                    if(window.SetSpecialPricing)
                    {
                        SetSpecialPricing(message.calendar, message.totalShippingPrice);
                    }
                }
                $("#"+calendarId).datepicker("option", "minDate", earliestArrival).datepicker("setDate", earliestArrival);
            
                // update the shipping in the grid (function from Controls/Display/FinalTotals.ascx)                
                if(window.AdjustShippingAndTax)
                {
                    AdjustShippingAndTax(message.totalShippingPrice, message.tax);
                }
                if(window.CalculateTotal)
                {
                    CalculateTotal();
                }

                $("#shippingError").empty().removeClass("topPad");
                if(window.EnablePlaceOrderMainPage)
                {
                    EnablePlaceOrderMainPage();
                }
            }
            else
            {
                $("#shippingError").empty().addClass("topPad").append(message.error);
                if(window.DisablePlaceOrderMainPage)
                {
                    DisablePlaceOrderMainPage();
                }
            }
            loadingDiv.hide();
        },
        failure : function (msg) {
            loadingDiv.empty().append("There has been an error with your selection.  Please try again or contact customer service.");
        }
    });
}

function InitCalendar(date, validDates, dpId) {
    var day = date.getDay(), Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3, Thursday = 4, Friday = 5, Saturday = 6;
    var datesArray = validDates.split(",");

    for (i = 0; i < datesArray.length; i++) {
        var dayTokens = datesArray[i].split(":");
        var includeDates = new Date(dayTokens[0]);

        if (date.getMonth() == includeDates.getMonth() && date.getDate() == includeDates.getDate() && date.getFullYear() == includeDates.getFullYear()) {
            var background = '';
            if (dayTokens[1].toLowerCase() == 'true') {
                background = 'NewDelivery';
            }
            return [true, background];
        }
    }

    return [false];
}

function GetMonthName(monthInt)
{
    switch(monthInt)
    {
        case 0:
            return 'January';
        case 1:
            return 'February';
        case 2:
            return 'March';
        case 3:
            return 'April';
        case 4:
            return 'May';
        case 5:
            return 'June';
        case 6:
            return 'July';
        case 7:
            return 'August';
        case 8:
            return 'September';
        case 9:
            return 'October';
        case 10:
            return 'November';
        case 11:
            return 'December';
    }
}

function GetDayName(dayInt)
{
    switch(dayInt)
    {
        case 0:
            return 'Sunday';
        case 1:
            return 'Monday';
        case 2:
            return 'Tuesday';
        case 3:
            return 'Wednesday';
        case 4:
            return 'Thursday';
        case 5:
            return 'Friday';
        case 6:
            return 'Saturday';
    }
}
//-->
