function trim(str) {
	return str.replace(/^\s*|\s*$/g,"");
}

function checkEnter(evt) {
	evt = (evt) ? evt : ((window.event) ? event : null);
	if (evt) {
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if (elem) {
			var charCode = (evt.CharCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
			if (charCode == 13) {
				return false;
			} else {
				return true;
			}
		}
	}
}

function submitProductSearch() {
	var oKeywords = document.getElementById("searchKeywords");
		if (oKeywords) {
			var k = trim(oKeywords.value);
			if (k != "") {
				location.href = "/catalog/searchResults.asp?keywords=" + escape(k);				
			}
	}
}

function submitProductSearch1() {
	var oForm = document.forms[0];	
	if (oForm) {
		var keywords = oForm.catalog_search_text.value;
		keywords = trim(keywords);
		if (keywords != "") {
			oForm.action = "/catalog/searchResults.asp?keywords=" + escape(keywords);		
			oForm.method = "post";
			oForm.submit();			
		}
	}
}

function isFloat(val) {
	var test = "0123456789,.";
	for (var i=0; i<val.length; i++) {
		var c = val.substring(i,i+1);
		if (test.indexOf(c) == -1) {
			return false;
		}
	}
	return true;	
}

function isCurrency(val) {
	return isFloat(val);
}

function submitSearch(f){
	f.search_clicked.value = "true";
	f.submit();
}

function selectModel(id) {
	var oModelObj = $(id);
	var modelId = oModelObj.options[oModelObj.selectedIndex].value;
	if (modelId != "") {
		location.href = "/catalog/model.asp?model=" + modelId;	
	}
}

/**
 *  displayErrors
 */
function displayErrors(msg,errors) {
	var str = msg + "\n\n";
	var num = 0;
	for (var i=0; i<errors.length; i++) {
		num++;
		if (i > 0) {
			str += "\n";
		}
		str += (num + ". " + errors[i]);		
	}
	str += "\n\n  ";
	alert(str);
}


/**
 *  removeAllOptions
 */
function removeAllOptions(selectObj) {
	var startIdx = selectObj.options.length-1;
	for (var j=startIdx; j>= 0; j--) {
		selectObj.remove(j);
	}
}

/**
 *  addOption
 */
function addOption(selectObj, oText, oValue, oSelected) {
	var oOption = document.createElement("OPTION");
	selectObj.options.add(oOption);
	if (is_ie) {
			oOption.innerText = oText;
	} else {
			oOption.text = oText;
	}
	oOption.value = oValue;
	oOption.selected = oSelected;
}

/**
 *  showTab
 */
function showTab(tab) {
    var current = $("currentTab").value;  
    var currentTab = $(current);
    var currentTabContent = $(current + "Content");
    var clickedTab = $(tab);
    var clickedTabContent = $(tab + "Content");
    currentTab.className = "";
    currentTabContent.style.display = "none";
    clickedTab.className = "currentTab";
    clickedTabContent.style.display = "block";	
    $("currentTab").value = tab;
}

function changeTabs(tab) {
	if (tab != "") {
		showTab(tab);
	}
}

var count1 = 0;
var count2 = 0;

/**
 *  insertOptionBefore
 */
function insertOptionBefore(elSel,elText,elValue)
{
  if (elSel.selectedIndex >= 0) {
    var elOptNew = document.createElement('option');
    elOptNew.text = elText;
    elOptNew.value = elValue;
    var elOptOld = elSel.options[elSel.selectedIndex];  
    try {
      elSel.add(elOptNew, elOptOld); // standards compliant; doesn't work in IE
    }
    catch(ex) {
      elSel.add(elOptNew, elSel.selectedIndex); // IE only
    }
  }
}

/**
 *  removeOptionSelected
 */
function removeOptionSelected(elSel)
{
  var i;
  for (i = elSel.length - 1; i>=0; i--) {
    if (elSel.options[i].selected) {
      elSel.remove(i);
    }
  }
}

/**
 *  appendOptionLast
 */
function appendOptionLast(elSel,elText,elValue)
{
  var elOptNew = document.createElement('option');
  elOptNew.text = elText;
  elOptNew.value = elValue;

  try {
    elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
  }
  catch(ex) {
    elSel.add(elOptNew); // IE only
  }
}

/**
 *  removeOptionLast
 */
function removeOptionLast(elSel)
{
  if (elSel.length > 0)
  {
    elSel.remove(elSel.length - 1);
  }
}


/**
 * Calls the update cart function
 */
function updateCart(oForm){
  oForm.action += "?action=UPDATE";
	oForm.submit();
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

// moveOptionsAcross
//
// Move selected options from one select list to another
//
function moveOptionsAcross(fromList, toList) {
  var fromSelectList = document.getElementById(fromList);
  var toSelectList = document.getElementById(toList);	
	var selectOptions = fromSelectList.getElementsByTagName('option');
	
  for (var i = 0; i < selectOptions.length; i++) {
     var opt = selectOptions[i];
     if (opt.selected) {
      fromSelectList.removeChild(opt);
      toSelectList.appendChild(opt);

 // originally, this loop decremented from length to 0 so that you
 // wouldn't have to worry about adjusting the index.  However, then
 // moving multiple options resulted in the order being reversed from when
 // was in the original selection list which can be confusing to the user.
 // So now, the index is adjusted to make sure we don't skip an option.
      i--;
     }
   }
}

// moveOptionsUp
//
// move the selected options up one location in the select list
//
function moveOptionsUp(selectId) {
 var selectList = document.getElementById(selectId);
 var selectOptions = selectList.getElementsByTagName('option');
 for (var i = 1; i < selectOptions.length; i++) {
  var opt = selectOptions[i];
  if (opt.selected) {
   selectList.removeChild(opt);
   selectList.insertBefore(opt, selectOptions[i - 1]);
     }
    }
}

// moveOptionsDown
//
// move the selected options down one location in the select list
//
function moveOptionsDown(selectId) {
 var selectList = document.getElementById(selectId);
 var selectOptions = selectList.getElementsByTagName('option');
 for (var i = selectOptions.length - 2; i >= 0; i--) {
  var opt = selectOptions[i];
  if (opt.selected) {
   var nextOpt = selectOptions[i + 1];
   opt = selectList.removeChild(opt);
   nextOpt = selectList.replaceChild(opt, nextOpt);
   selectList.insertBefore(nextOpt, opt);
     }
    }
}




//*********************************************************************************************
//AJAX
//*********************************************************************************************
function refreshFeaturedProducts() {
	var show = function() {
		new Effect.Appear("featuredProductsDiv",{duration:0.75});
	}
	var update = function() {
		new Ajax.Updater("featuredProductsDiv","/ajax/featured.asp",{asynchronous:true,onComplete:show});		
	}	
	new Effect.Fade("featuredProductsDiv",{duration:0.35,afterFinish:update});
}

function refreshNewProducts() {
	var show = function() {
		new Effect.Appear("newProductsDiv",{duration:0.75});
	}
	var update = function() {
		new Ajax.Updater("newProductsDiv","/ajax/new.asp",{asynchronous:true,onComplete:show});		
	}	
	new Effect.Fade("newProductsDiv",{duration:0.35,afterFinish:update});	
}