/* Begin SmartEtailing G2 Functions */
var _setFocusField = null;
var _sejs_isPromoCodeChanged = 0;

function setFocusField() {
	try{
		$('.seforminputbutton').removeAttr('disabled');
		_setFocusField.disabled=0;
		_setFocusField.focus();
	}
	catch(e){}
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function displayCurrentDate() {
	var dayName = new Array ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); var monName = new Array ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
	var theDate = new Date;
	document.write(dayName[theDate.getDay()] + ", " + monName[theDate.getMonth()] + " "+ theDate.getDate() + ", " + (theDate.getFullYear()));
}

function myWin(filename,win_width,win_height,win_name) {
	pupUp=window.open(filename,win_name,'width='+win_width+',height='+win_height+',top=35,left=35,menubar=no,scrollbars=yes,resizable=yes');
	pupUp.focus();
}

function myWinEncoded(url,querystring,win_width,win_height,win_name) {
	encodedFileName = escape(querystring);
	popUp=window.open(url+encodedFileName,win_name,'width='+win_width+',height='+win_height+',top=35,left=35,menubar=no,scrollbars=yes,resizable=yes');
	popUp.focus();
}

function openWin(filename,win_name,win_width,win_height,wAttrib) {
	var dimensions = '';
	var newwindow;
	if (parseInt(win_width) > 0)
		dimensions = 'width=' + win_width + ',';
	if (parseInt(win_height) > 0)
		dimensions = dimensions + 'height=' + win_height + ',';
	newwindow=window.open(filename,win_name,dimensions+wAttrib);
	if (window.focus)
		newwindow.focus();
}

function sejs_hidediv(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	} else {
		if (document.layers)  // Netscape 4
			document.id.display = 'none';
		else  // IE 4
			document.all.id.style.display = 'none';
	}
}

function sejs_showdiv(id) {
	//safe function to show an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	} else {
		if (document.layers) // Netscape 4
			document.id.display = 'block';
		else // IE 4
			document.all.id.style.display = 'block';
	}
}

function addToCartValidate(frmName, frmQty) {
	if (!isInteger(frmQty.value) || frmQty.value < 1 || frmQty.value == '') {
		for(i=0; i<frmName.elements.length; i++){
			try {
				if (frmName.elements[i].name.indexOf('vQuantity_') > -1 && isInteger(frmName.elements[i].value) && frmName.elements[i].value > 0)
					return true;
			}catch(err) {}
		}
		alert('Please enter a valid quantity.');
		return false;
	}
	return true;
}

function addToCartValidate2(frmName, frmQty) {
	var itemDd = $("#sevariationlist option:selected");
	var itemVars = itemDd.val();
	if (itemVars == ''){
		alert('Please select a product.');
		itemDd.focus();
		return false;
	} else {
		if (!isInteger(frmQty.value) || frmQty.value < 1 || frmQty.value == '') {
			for(i=0; i<frmName.elements.length; i++){
				try {
					if (frmName.elements[i].name.indexOf('vQuantity_') > -1 && isInteger(frmName.elements[i].value) && frmName.elements[i].value > 0)
						return true;
				} catch(err) {}
			}
			alert('Please enter a valid quantity.');
			return false;
		}
	}
	return true;
}

//updates the customer name in the wishList Email Message

//the following code creates a "listener"
var sejs_timeInterval = 0;	//time interval to be used in a listner
var sejs_wishListEmailContents = '';	//stores inital value of email wishlist contents

function wishListUpdateEmailContents( name ) {
	//Updates the value of the email contents with the one from the 'name' field
	var jForm = document.getElementById('seform');
	var custNameField = jForm[name];
	var wlEmailField = jForm.wishListEmailContents;
	if(!sejs_wishListEmailContents.length)
		sejs_wishListEmailContents = wlEmailField.value;

	if(!custNameField.value.length)
		wlEmailField.value = sejs_wishListEmailContents;
	else
		wlEmailField.value = sejs_wishListEmailContents.replace(/\[Your Name\]/gi, custNameField.value);
}

function wishListStartListener( name ) {
	//starts the listener for updating the wishList contents field
	sejs_timeInterval = setInterval("wishListUpdateEmailContents('"+name+"')", 500);
}

//once we are done with the listener, destroy it!
function killTime() {
	//acts as a delay in the listener
	clearInterval(sejs_timeInterval);
}

//submits delete icon
function wishListItemDelete(theForm, inputName,formAction) {
	theForm.elements[inputName].value = 0;
	if (checkCart(theForm)) {
		theForm.action.value=formAction;
		theForm.submit();
	}
}

//uses a link for a submit button
function insertIntoWishList() {
	if(document.seform.onsubmit()) {
		document.forms['seform'].addToWishList.value=1;
		document.forms['seform'].submit();
		document.forms['seform'].addToWishList.value=0;
	}
}

function checkWishList(formName) {
	var formElm = document.getElementById(formName);
	for (i=0; i<formElm.elements.length; i++) {
		if (formElm.elements[i].name.indexOf("Quantity") > -1) {
			if (!isInteger(formElm.elements[i].value)) {
				alert("Please enter a valid quantity before changing the wish list contents!");
				formElm.elements[i].focus();
				return false;
			}
		}
	}
	formElm.submit();
	return true;
}

function isNumeric(sText)
{
var ValidChars = "0123456789.";
var IsNumber=true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++)
{
Char = sText.charAt(i);
if (ValidChars.indexOf(Char) == -1) IsNumber = false;
}
return IsNumber;
}

function isInteger(sText)
{
var ValidChars = "0123456789";
var IsNumber=true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++)
{
Char = sText.charAt(i);
if (ValidChars.indexOf(Char) == -1) IsNumber = false;
}
return IsNumber;
}

function increment(field) {
if (isInteger(field.value)) field.value = parseInt(field.value) + 1;
else field.value = 1;
}

function decrement(field, minValue) {
if (isInteger(field.value) && isInteger(minValue) && parseInt(field.value) > minValue)
   field.value = parseInt(field.value) - 1;
else if (isInteger(minValue))
   field.value = parseInt(minValue);
else field.value = 1;
}

function changeSort(urlText, urlSort, sortValue) {
var newUrl = urlText.replace("sort="+urlSort, "sort="+sortValue);
if (newUrl.indexOf('sort=') == -1){
	if (newUrl.indexOf('?') == -1)
		newUrl = newUrl + '?sort=' + sortValue;
	else
		newUrl = newUrl + '&sort=' + sortValue;
}
location.href=newUrl;
}

function item_del(theForm, inpnam){
theForm.elements[inpnam].value = 0;
if (checkCart(theForm)) {
theForm.action.value='updateCart';
theForm.submit();
}
}

function updateCart(theForm)
{
if (checkCart(theForm)) {
theForm.action.value='updateCart';
theForm.submit();
}
}

function isInteger(val) {
if (isBlank(val)) {return false;}
for(var i=0;i<val.length;i++){
if(!isDigit(val.charAt(i))){return false;}
}
return true;
}

function isBlank(val){
if(val==null){return true;}
for(var i=0;i<val.length;i++) {
if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
}
return true;
}

function isDigit(num) {
if (num.length>1){return false;}
var string="1234567890";
if (string.indexOf(num)!=-1){return true;}
return false;
}

function checkCart(theForm)
{
for (i=0; i<theForm.elements.length; i++) {
if (theForm.elements[i].name.indexOf("Quantity") > -1) {
if (!isInteger(theForm.elements[i].value)) {
alert("Please enter a valid quantity before changing the cart contents!");
theForm.elements[i].focus();
return false;
}
}
}
try{
document.getElementById('placeOrder_1').disabled = 1;
document.getElementById('placeOrder_2').disabled = 1;
}
catch(e) {}
return true;
}

function echeck(str) {
var at="@"
var dot="."
var lat=str.indexOf(at)
var lstr=str.length
var ldot=str.indexOf(dot)
if (str.indexOf(at)==-1){
return false
}

if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
return false
}

if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
return false
}

if (str.indexOf(at,(lat+1))!=-1){
return false
}

if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
return false
}

if (str.indexOf(dot,(lat+2))==-1){
return false
}

if (str.indexOf(" ")!=-1){
return false
}

return true
}
function Email_Validator(theForm)
{
if (!echeck(theForm.Email.value))
{
alert("You must specify a valid E-mail Address");
theForm.Email.focus();
return (false);
}
return (true);
}
function calldelimg(url)
{
if (confirm("Are you sure you want to delete this Image?") == true)	{
	location.href=url;
	}
}
function callpreview()
{
	window.open('previewadPop.cfm','new_win','width=640 height=500,innerwidth=640,innerheight=500,scrollbars=yes,left=50,top=50,resizable=yes,screenX=50,screenY=50');
}
function delete_confirm(url){
if (confirm("Are you sure you want to delete this ad?") == true)
	location.href=url;
}
function delete_cc(url){
if (confirm("Are you sure you want to delete your card info?") == true)
	location.href=url;
}

function setStyleById(objId, objProperty, objValue) {
	var obj = document.getElementById(objId);
	obj.style[objProperty] = objValue;
}
//  This function will apply a style to an Element based on Class
function setStyleByClass(objClass, objProperty, objValue){
		var ie = (document.all) ? true : false;
		var elements = (ie) ? document.all : document.getElementsByTagName('*')
		for(var i = 0; i < elements.length; i++){
				if(elements[i].className == objClass) {
					//eval('elements[i].style.' + objProperty + " = '" + objValue + "'");
					elements[i].style[objProperty] = objValue;
				}
		}
}

function sejs_preventEnterSubmit(e) {
	var key;
	if(window.event)
		key = window.event.keyCode; //IE
	else
		key = e.which; //firefox

	// returns false if "enter key" (13) is pressed.
	return (key != 13);
}

/*End SmartEtailing G2 Functions*/

/* --- AJAX Functions --- */
var sejs_win = null;
var sejs_saveEl = null;
var sejs_delay;

function printPage() {
	window.print();
}
function sejs_getPromoCodeValue() {
	var promoCode = '';
	//reset state of isPromoCodeChanged flag
	_sejs_isPromoCodeChanged = 0;
	//try / catch necessary in case cart page is accessed without being logged in; promo code will not be shown which will result in an error.
	try{promoCode = document.getElementsByName('Code')[0];promoCode = promoCode.value;}catch(e){}
	return promoCode;
}

function sejs_changeShippingMethod(shipField, stateField, countryField){
	var theForm = shipField.form;
	_setFocusField = shipField;
	if(!_setFocusField.disabled) {
		var stateSelect = eval('theForm.'+stateField);
		var countrySelect = eval('theForm.'+countryField);
		setStyleById('seshippingmethodmessage2', 'display', 'none');
		sejs_getCartTotals(shipField.value, stateSelect.value, countrySelect.value, sejs_getPromoCodeValue());
	}
}
function sejs_changeShipping(id){
	_setFocusField = id;
	if(!_setFocusField.disabled)
		sejs_getCartTotals(id, '', '', sejs_getPromoCodeValue());
}
function sejs_changeCountry(countryCode){
	_setFocusField = countryCode;
}
function sejs_changeState(stateCode){
	_setFocusField = stateCode;
}
function sejs_changePromoCode(promoCode){
	_setFocusField = promoCode;
	if(!_setFocusField.disabled) {
		_sejs_isPromoCodeChanged = 1;
		sejs_getCartTotals(0, '', '', promoCode.value);
	}
}
function sejs_updateShippingMethodsDivs(showDiv1, showDiv2) {
	//overload utils::sejs_updateShippingMethodsDivs
	if(showDiv1) {
		setStyleById('seshippingmethodmessage', 'display', 'block');
		setStyleById('shippingMethodSelect', 'display', 'none');
	}
	else {
		setStyleById('seshippingmethodmessage', 'display', 'none');
		setStyleById('shippingMethodSelect', 'display', 'block');
	}

	if(showDiv2)
		setStyleById('seshippingmethodmessage2', 'display', 'block');
	else
		setStyleById('seshippingmethodmessage2', 'display', 'none');
}
function sejs_removeAllOptions(selectbox) {
	for(var i=selectbox.options.length-1;i>=0;i--) {
		selectbox.remove(i);
	}
}
function sejs_addOption(selectbox, value, text ) {
	var optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
	}

var shippingMethodCache = {};
var cartSummaryCache = {};
function sejs_getShippingMethod(inStorePickupItems, country, state, cartItems, shippingMethod, promoCode, callback, cartCallback, useCache) {
	var e = new shipping();
	e.setHTTPMethod('POST');
	e.setCallbackHandler(function(data) {
		callback(data);
		if ('CART' in data)
			cartCallback(data.CART);
	});
	e.setErrorHandler(sejs_myErrorHandler);
	e.getShippingMethodsByCountryState(se_domain, se_cfid, se_cftoken, inStorePickupItems, country, state, cartItems, true, shippingMethod, promoCode);
}
function sejs_getCartSummary(shippingMethod, country, state, promoCode, callback, useCache) {
	var cacheIndex = "" + shippingMethod + country + state + promoCode;

	var e = new cart();
	e.setHTTPMethod('POST');
	e.setCallbackHandler(function(data) {
		callback(data);
	});
	e.setErrorHandler(sejs_myErrorHandler);
	e.recalculateCart(se_domain, se_cfid, se_cftoken, shippingMethod, state, country, promoCode);
}
function sejs_updateShippingMethods(shippingMethods)
{
	var shipMethods = shippingMethods.SHIPPINGMETHODS;
	var country = shippingMethods.SHIPPINGCOUNTRY;
	var state = shippingMethods.SHIPPINGSTATE;
	var shippingMethod = shippingMethods.SHIPPINGMETHOD;
	var shipMethodField = document.getElementById("shippingMethodSelect");
	var shipMethodSelectedIndex = 0;

	sejs_removeAllOptions(shipMethodField);
	for (var i = 0; i < shipMethods.length; i++) {
		sejs_addOption(shipMethodField, shipMethods[i].OPTIONVALUE, shipMethods[i].OPTIONDISPLAY);
		var shippingMethodOptionValue = String(shipMethods[i].OPTIONVALUE).split("|")[0];
		if(shippingMethodOptionValue == String(shippingMethod))
			shipMethodSelectedIndex = i;
	}

	//re-populate shipping methods drop-down

	//set default value
	shipMethodField.selectedIndex = shipMethodSelectedIndex;
	var shipMethods0 = String(shipMethods[0].OPTIONVALUE);

	if(
		(!shipMethods.length || (shipMethods.length == 1 && (shipMethods0 == '0' || shipMethods0 == '')))
		&& (
			((country.toUpperCase() == 'US' || country.toUpperCase() == 'CA') && state.length > 0)
			|| (country.toUpperCase() != 'US' && country.toUpperCase() != 'CA')
		)
	) {
		sejs_updateShippingMethodsDivs(1,0);
	}
	else if (shipMethods.length > 1 && shippingMethod > 0 && shipMethodField.selectedIndex == 0) {
		sejs_updateShippingMethodsDivs(0,1);
	}
	else
	{
		sejs_updateShippingMethodsDivs(0,0);
	}
}
function sejs_adjustShippingMethods(inStorePickupItems, cartItems, shippingCountryDivId, shippingStateDivId, shippingMethodDivId, promoCodeDivId){
	var shippingCountry = document.getElementById(shippingCountryDivId).value;
	var shippingState = document.getElementById(shippingStateDivId).value;
	var shippingMethod = document.getElementById(shippingMethodDivId).value;
	var promoCode = document.getElementById(promoCodeDivId).value;

	sejs_getShippingMethod(inStorePickupItems, shippingCountry, shippingState, cartItems, shippingMethod, promoCode, sejs_updateShippingMethods, sejs_updateCartSummary, true);
}
function sejs_updateCartSummary(cartTotal)
{
	setFocusField();
	var cartSummaryHtml = cartTotal["summary"];
	var promoCodeHtml = cartTotal["promo"];
	document.getElementById('secartsummary').innerHTML = cartSummaryHtml;
	document.getElementById('sepromocode').innerHTML = promoCodeHtml;
	if(!promoCodeHtml.length || !_sejs_isPromoCodeChanged) sejs_hidediv('sepromocode');
	else sejs_showdiv('sepromocode');
}
function sejs_myErrorHandler(statusCode, statusMsg)
{
	alert('Status: ' + statusCode + ', ' + statusMsg);
	setFocusField();
}
function sejs_getCartTotals(shippingMethod, state, country, promoCode){
	try {
		_setFocusField.disabled=1;
		$('.seforminputbutton').attr('disabled', 'disabled');
	} catch(e){}
	sejs_getCartSummary(shippingMethod, country, state, promoCode, sejs_updateCartSummary, true);
}
function sejs_changeInfo(info){
	var e = new cart();
	e.setHTTPMethod('POST');
	e.setErrorHandler(sejs_myErrorHandler);
	e.changeInfo(se_domain, se_cfid, se_cftoken, 'info', info);
}
// the following function uses jQuery for AJAX
function sejs_changeContactStatus(contact){
	se$.ajax({
		type : "GET",
		url : "customtags/cfc/ajax/customer.cfc?method=updateContactStatus&variable=contactStatus&value=" + contact + "&domain=" + se_domain + "&cfid=" + se_cfid + "&cftoken=" + se_cftoken
	});
	se$("#seacccontactstatus").show();
	setTimeout(" se$('#seacccontactstatus').hide()", 3000);
}

/* --- END AJAX Functions --- */

function sejs_breakout_of_frame(){if (window != top) top.location.href = location.href;}


function sejs_set_cookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure )
{
  var cookie_string = name + "=" + escape ( value );
  if ( exp_y )
  {
	var expires = new Date ( exp_y, exp_m, exp_d );
	cookie_string += "; expires=" + expires.toGMTString();
  }
  if ( path )
		cookie_string += "; path=" + escape ( path );
  if ( domain )
		cookie_string += "; domain=" + escape ( domain );
  if ( secure )
		cookie_string += "; secure";
  document.cookie = cookie_string;
}

function sejs_get_cookie ( cookie_name )
{
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
  if ( results )
	return ( unescape ( results[2] ) );
  else
	return null;
}
//instantiates js file for Yakima Configurator on page, which overloads the a->click event for id: yakima_configurator
function sejs_insertYakimaConfigurator() {
	se$(document).ready(function() {
		var body = se$('body');
		body.append('<script type="text/javascript" src="http://yakima.com/dealers/yakima_configurator.js"></script>');
	});
}

// attaches function to onload event; akin to $(document).ready()
function sejs_appendOnLoad(f) {
	if (window.addEventListener) {
		window.addEventListener('load', f, false);
	} else if (window.attachEvent) {
		window.attachEvent('onload', f);
	}
}

// form submission check functions/variables
var sejs_formSubmitted = false;

//when a form is submitted, prevents double submission of forms; works in all browsers, all submission combinations
function sejs_formsubmit_single() {
	sejs_disable_page_controls();
	if(!sejs_formSubmitted) {
		sejs_formSubmitted = true;
		return true;
	}
	return false;
}

//used for disabling double form submission. Must overload form>submit function to take advantage of this
document.write('<div id="sepage_disable" style="background-color:none;opacity:0.0;filter:alpha(opacity=0); position:absolute;z-index:99999;display:none;"></div>');

function sejs_enable_page_controls() {
	se$('#sepage_disable').hide();
	se$("input[type='image'],input[type='submit']").removeClass("sebuttondisabled");
}

function sejs_disable_page_controls() {
	se$('#sepage_disable').width(se$('body').width()).height(se$('body').height()).css(se$('body').offset()).show();
	se$('#sepage_disable').focus();
	se$("input[type='image'],input[type='submit']").addClass("sebuttondisabled");
}
/*---------Important Do not use the legacy scripts listed below. -------------
They are not supported with SmartEtailing's G2 Codebase.
Please remove all references to the scripts listed below. */
function newWin(fileName,winName,winAtt){thisWin = window.open(fileName , winName, winAtt); thisWin.focus();}function myWin(filename,win_width,win_height,win_name){pupUp=window.open(filename,win_name,'width='+win_width+',height='+win_height+',top=35,left=35,menubar=no,scrollbars=yes,resizable=yes');pupUp.focus();}function newImage(arg) {if (document.images) {rslt = new Image();rslt.src = arg;return rslt;}}function changeImages() {if (document.images && (preloadFlag == true)) {for (var i=0; i<changeImages.arguments.length; i+=2) {document[changeImages.arguments[i]].src = changeImages.arguments[i+1];}}}var preloadFlag = false; function preloadImages() {if (document.images) {preloadFlag = true;}}function MM_swapImgRestore() {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_preloadImages() {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_findObj(n, d) {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); return x;}function MM_swapImage() {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 Left(str, n){if (n <= 0)
		return "";
	else if (n > String(str).length)
		return str;
	else
		return String(str).substring(0,n);
}
function Right(str, n){
	if (n <= 0)
	   return "";
	else if (n > String(str).length)
	   return str;
	else {
	   var iLen = String(str).length;
	   return String(str).substring(iLen, iLen - n);
	}
}
function seClassifiedsPostAdValidate(theForm) {
	theForm.price.value = theForm.price.value.replace(/[^\d\.]/gi,"");
	if(!isNumeric(theForm.price.value)) {
		alert('Please enter a valid decimal price. Do not include a currency symbol.');
		return false;
	}
	return true;
}
