function doNotDelete(){
	alert('This function should never be called.');
}

var timeOn = null;
numMenus = 7;
document.onmouseover = hideAllMenus;
document.onclick = hideAllMenus;

//prevent js errors from showing (doesn't work in IE)
window.onerror = null;

// initialize hacks whenever the page loads
window.onload = initializeHacks;



//JONK's getAcuElementById------
// some browser sniffing:
document.version = parseFloat(navigator.appVersion);
document.hostApplication = navigator.appName.substring(0,3);
document.browserClass = parseInt(document.version);
			
if(document.browserClass < 4) 
{
 // redirect -- no CSS support
 // if you used &lt;script language=javascript1.2&gt; 
 // this won't be necessary
 // ALL this code will be ignored!
}
else      // isolate this setup from "modern" browsers!!
if(document.browserClass == 4) // might need to check NN5 browsers as well
{

	if(document.hostApplication == "Net") // got netscape?
	{
		  // need to "fake" the style attribute
		  // so we add a little misdirection
		  // by creating an object that will
		  // intercept the property setting.
		  // we make NN think it's setting properties 
		  // in A style object, when it is actually
		  // redirected to set the property to the actual layer
		   // and you might have thought it couldn't be done...
		 function _style()
		 {
		  this.layerRef = null;    // this will be set when <B style="COLOR: black; BACKGROUND-COLOR: #ffff66">getElementByID</B> is called

		  /* we don't actually need these -- it's just pseudocode
		  this.visibility = "";
		  this.top = 0;
		  this.left = 0;
		  */
						   
		   // very cool method in NN (only) -- 
		   // since these aren't "real" object properties
		   // it's more like a watchdog
		   // for more info -- check Netscape's docs
		  this.watch("visibility", 
		     function(id, old, nval) 
		      {  // set the "real" property of the layer here
		       eval("this.layerRef." + id + " = '" + nval + "'");
		       return nval; });
		        // you must return either old or nval
		  this.watch("top",
		     function(id, old, nval) {
		       eval("this.layerRef." + id + " = '" + nval + "'");
		      return nval;});
		  this.watch("left",
		     function(id, old, nval) {
		       eval("this.layerRef." + id + " = '" + nval + "'");
		      return nval;});
						  
		   // note: all the inline functions are exactly the same
		   //  you can cut'n'paste for each property you need to watch!
		}

	 // here we set up the "appearance" of a style property

	 Layer.prototype.style = new _style();
	  // each time a new layer is created, a new _style() object
	  // is attached to it
				    
	} // end if NN

	 // here, getElementById is getting declared by BOTH IE4 and NN4 browsers
	document.getAcuElementById = function(name)
	{
		if(document.hostApplication == "Net") // netscape 4
		{
			if (document.browserClass == 4){
				var lyr = eval("document." + name);
						   
			 // only need to do this once, but
			 // what the hey...
			 if(lyr.style != null) lyr.style.layerRef = lyr;
								    
			return lyr;
			}else{
				return document.layers('" + name + "');
			}
		}
		  else // IE
		  {
			return eval("document.all." + name);
		  }
  }
}else // end browserClass == 4
	{
	if(document.hostApplication == "Net"){
		document.getAcuElementById = function(name){
				if(!eval("document." + name)){
					return document.getElementById(name);
				}else{
					return eval("document." + name);
				}
			}
	}else
	{
		document.getAcuElementById = function(name){
				return document.getElementById(name);
			}
	}
}
//END JONK's getAcuElementById---------


function showMenu(menuNumber, eventObj) {
    hideAllMenus();
	if(document.layers) {
	img = getImage("img" + menuNumber);
 	x = getImagePageLeft(img);
 	y = getImagePageTop(img);
 	menuTop = y + 22; // LAYER TOP POSITION - should be set to the height of the image button
	eval('document.layers["menu'+menuNumber+'"].top="'+menuTop+'"');
 	eval('document.layers["menu'+menuNumber+'"].left="'+x+'"');
	}
	eventObj.cancelBubble = true;
    var menuId = 'menu' + menuNumber;
    if(changeObjectVisibility(menuId, 'visible')) {
		return true;
    } else {
		return false;
    }
}

// MENU MOUSE OVER 
function menuOver() {
 clearTimeout(timeOn);
}

// MENU MOUSE OUT 
function menuOut() {
 if(document.layers) {
 	timeOn = setTimeout("hideAllMenus()", 400);
  }
}

function hideAllMenus() {
    for(counter = 1; counter <= numMenus; counter++) {
		changeObjectVisibility('menu' + counter, 'hidden');
    }
}

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
		styleObject.visibility = newVisibility;
		return true;
    } else {
	//we couldn't find the object, so we can't change its visibility
		return false;
    }
} 

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
		// W3C DOM
		return document.getElementById(objectId).style;
    }else if (document.all && document.all(objectId)) {
		// MSIE 4 DOM
		return document.all(objectId).style;
    }else if (document.layers && document.layers[objectId]) {
		// NN 4 DOM.. note: this won't find nested layers
		return document.layers[objectId];
    }else {
		return false;
    }
} 

// SET BACKGROUND COLOR 
function getImage(name) {
  if (document.layers) {
    return findImage(name, document);
  }
  return null;
}

function findImage(name, doc) {
  var i, img;
  for (i = 0; i < doc.images.length; i++)
    if (doc.images[i].name == name)
      return doc.images[i];
  for (i = 0; i < doc.layers.length; i++)
    if ((img = findImage(name, doc.layers[i].document)) != null) {
      img.container = doc.layers[i];
      return img;
    }
  return null;
}

function getImagePageLeft(img) {
  var x, obj;
  if (document.layers) {
    if (img.container != null)
      return img.container.pageX + img.x;
    else
      return img.x;
  }
  return -1;
}

function getImagePageTop(img) {
  var y, obj;
  if (document.layers) {
    if (img.container != null)
      return img.container.pageY + img.y;
    else
      return img.y;
  }
  return -1;
}

/*function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
		styleObject.left = newXCoordinate;
		styleObject.top = newYCoordinate;
		return true;
    } else {
	// we couldn't find the object, so we can't very well move it
		return false;
    }
} */



// ***********************
// hacks and workarounds *
// ***********************

// setup an event handler to hide popups for generic clicks on the document
function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv')) {
			window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
}

function createFakeEventObj() {
    // create a fake event object for older browsers to avoid errors in function call
    // when we need to pass the event object to functions
    if (!window.event) {
	window.event = false;
    }
}

function resizeBlankDiv() {
    // resize blank placeholder div so IE 5 on mac will get all clicks in window
    if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
	&& (navigator.platform.indexOf('Mac') != -1)
	&& getStyleObject('blankDiv')) {
	getStyleObject('blankDiv').width = document.body.clientWidth - 20;
	getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

function explorerMacResizeFix () {
    location.reload(false);
}

/*function mClk(src){ 
	if(event.srcElement.tagName=='TD')
		src.children.tags('A')[0].click();
}*/

function addEvent(obj, evtName, fn) {
	try{removeEvent(obj, evtName, fn)}catch(e){}
	if (obj.addEventListener) {
		obj.addEventListener(evtName, fn, false);
	} else if (obj.attachEvent) {
		obj.attachEvent('on' + evtName, fn);
	} else {
		obj['on' + evtName] = fn;
	}
}
						
function removeEvent(obj, evtName, fn) {
	try {
		if (obj.removeEventListener) {
			obj.removeEventListener(evtName, fn, false);
		} else if (obj.detachEvent) {
			obj.detachEvent('on' + evtName, fn);
		} else {
			obj['on' + evtName] = null;
		}
	} catch(e){}
}
//update date validation- validates date format mm/dd/yyyy or m/d/yyyy, and 29, 30, 31 days as appropriate
function validateDateRegExp(oField){
	if (oField.value !=null && oField.value != ""){
		var datereg = new RegExp("^(((0[4,6,9]|[4,6,9]|11)\/(0[1-9]|[1-9]|[1,2][0-9]|30))|((0[1,3,5,7,8]|[1,3,5,7,8]|1[0,2])\/(0[1-9]|[1-9]|[1,2][0-9]|3[0,1]))|((02|2)\/(0[1-9]|[1-9]|[1,2][0-9])))\/(19|20)\\d\\d$");
		var matchdate = datereg.exec(oField.value);
		if(matchdate == null){
			alert("Invalid Format.\nDefault date set.");
			oField.value = todaysDate(3).toString();
			return false;
		}
		else {
			return true;}}
	else {
		return true;}
}

function validEmail(str){
	if ((str.indexOf(".") > 2) && (str.indexOf("@") > 0) && (str.indexOf(" ") == -1)){
	return true;}
	else
	{alert("Inavlid email address");
	return false;}
}

//update for javascript show/hide for faq
function showfaq (faqid){
	var question = document.getElementById(faqid);
	if (question.className =="off") {
		question.className = "on";}
	else {
		question.className = "off";}
}
//show/hide auction images
function showStockImages(stockno){
	var images = document.getElementById(stockno + 'images');
	if (images.className == "off"){
		images.className="on";}
	else {
		images.className = "off";}
}
//basic show/hide
function showhide (elid){
	var el = document.getElementById(elid);
	if (el.className =="off") {
		el.className = "on";}
	else {
		el.className = "off";}
}

//check either/or amount fields
function checkAmountFields(oForm, arFields, arTitles){
	var sMessage = "Please fill one the following fields:\n";
	var oneValue = false;
	for(var i = 0;i<arFields.length;i++){
		if(oForm[arFields[i]].value == "" || oForm[arFields[i]].value == 0){
			sMessage += "\n" + arTitles[i];
		}
		else{
			oneValue=true;
		}
	}
	if(oneValue){
		return true;	
	}else {
		alert(sMessage);
		return false;
	}
}

//check either/or amount fields
function checkSelect(oForm, arFields, arTitles){
	var sMessage = "Please select one the following fields:\n";
	var oneValue = false;
	for(var i = 0;i<arFields.length;i++){
		if(oForm[arFields[i]].checked==false){
			sMessage += "\n" + arTitles[i];
		}
		else{
			oneValue=true;
		}
	}
	if(oneValue){
		return true;	
	}else {
		alert(sMessage);
		return false;
	}
}


//get the value of a parameters from the query string
function getQueryParam(name)
{
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null ){
    return "";}
  else{
    return results[1];}
}

//- for auto date footer
today=new Date();
var y0=today.getFullYear();

function prints(){
	showhide('prints');
	//hideObject(document.getAcuElementById('prints'),'visibility');
	parent.print();
	//showObject(document.getAcuElementById('prints'),'visibility');
	showhide('prints');
	
}


function openContactWindow(URL, windowTitle)
{
	var sWidth;
	var sHeight;
	
	sWidth = 400;
	sHeight = 650;

	var wide = screen.width;
	var high = screen.height;
	var xCoordinate = ((wide / 2) - (sWidth / 2));
	var yCoordinate = ((high / 2) - (sHeight / 2));
	var w = window.open(URL,windowTitle,"width=" + sWidth + ",height=" + sHeight + ",left=" + xCoordinate + ",top=" + yCoordinate + ",resizable=no,status=no,menubar=no,scrollbars=auto,innerheight=" + sHeight + ",innerwidth=" + sWidth + ",screenx=" + xCoordinate + ",screeny=" + yCoordinate + ",toolbar=no");
	w.focus();
	w.opener = window;
}

function getSelectedRadio(buttonGroup) {
   if (buttonGroup[0]) { 
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } 
   }
	return -1;
} 



//check either/or group fields
function checkRequiredLblGroupFields(oForm, arFields, arTitles){
	var sMessage = "Please fill one the following fields:\n";
	var oneValue = false;
	for(var i = 0;i<arFields.length;i++){
		if(oForm[arFields[i]].value == "" || oForm[arFields[i]].value == 0){
			sMessage += "\n" + arTitles[i];
		}
		else{
			oneValue=true;
		}
	}
	if(oneValue){
		return true;	
	}else {
		alert(sMessage);
		return false;
	}
}

//check checkbox group
function checkRequiredLblCheckFields(oForm, checks, groupname, label){
	var oneValue = false;
	for(var i = 0;i<checks.length;i++){
		if(checks[i].checked==true){
			oneValue=true;
		}
	}
	if(oneValue){
		return "";	
	}else {
		document.getAcuElementById(label).style.color='red';
		return groupname + "\n";
	}
}

//check fields w/labels, returns list of missing fields
function checkRequiredLblFields(oForm, arFields, arTitles){
	var sMessage = "";
	var passes = true;
	for(var i = 0;i<arFields.length;i++){
		if(oForm[arFields[i]].value == "" || oForm[arFields[i]].value == 0){
			sMessage +=  arTitles[i] + "\n";
			document.getAcuElementById("lbl_" + arFields[i]).style.color='red';
			passes=false;
		}
	}
	if(passes){
		return "";	
	}else {
		return sMessage;
	}
}

function checkEmailFormat(field) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(field.value)){
		return (true);
	}else{
		return (false);}
}

function showOneInGroup(groupdiv, show){
	var divs = document.getElementById(groupdiv).childNodes;
	var i;
	for(i=0; i<divs.length; i++) {
		if (divs[i].id == show){
			divs[i].style.display = 'block';}
		else{
			divs[i].style.display = 'none';}
	}
}

function openLinkWindow(URL, windowTitle, windowWidth, windowHeight)
{
	var wide = screen.width;
	var high = screen.height;
	var xCoordinate = ((wide / 2) - (windowWidth / 2));
	var yCoordinate = ((high / 2) - (windowHeight / 2));
	var w = window.open(URL,windowTitle,"width=" + windowWidth + ",height=" + windowHeight + ",left=" + xCoordinate + ",top=" + yCoordinate + ",resizable=yes,status=yes,menubar=yes,scrollbars=yes,innerheight=" + windowHeight + ",innerwidth=" + windowWidth + ",screenx=" + xCoordinate + ",screeny=" + yCoordinate + ",toolbar=no");
	w.focus();
	w.opener = window;
	w.resizeTo (windowWidth, windowHeight);
	
}

//for results paging
function populateDropdowns(form, currentperpage, currentpage, totalresults, ppfrom, ppstep, ppto, pplist) 
{
  var lst2 = form.pg;
  if (lst2 != null){
      for (i=lst2.length; i>=1; i--) 
      {
        lst2.options[i] = null;
      }
      lst2.options.length = 1;
      index = 2;
      pages = totalresults / currentperpage -1;
      for (i=0; i<pages; i++) 
        {
            var opt = document.createElement('option');
            opt.value = index;
            opt.text  = index;
            lst2.options[index-1] = opt;
            if ((currentpage > 0) && (index == currentpage))
            {
                lst2.options[index-1].selected = true;
            }
            index = index + 1;
         }
    }
  var lst = form.pp;
  if (lst != null){    
      if(ppfrom!='' &&  ppstep!='' && ppstep!=''){
          var val;
          var index, i;
          i=0;
          for (val=ppfrom; val<=ppto; val=val+ppstep) 
          {
              var opt = document.createElement('option');
              opt.value = val;
              opt.text  = val;
              lst.options[i] = opt;
              if (val == currentperpage)
              {
                lst.options[i].selected = true;
              }
              i++;
          }
      }else{
          var pparray = pplist.split('|');
          var num= pparray.length;
          var i;
          var val;
          for (i=0; i<num; i++) 
          {
              var opt = document.createElement('option');
              if (pparray[i] =='All'){
                val=totalresults;
              }
              else{
                val=pparray[i];
              }
              opt.value = val;
              opt.text  = pparray[i];
              lst.options[i] = opt;
              if (val == currentperpage)
              lst.options[i].selected = true;
            }
      }
  }
}
