
var HDMISubmitted
var HDMIScroll
var HDMIbIE
var HDMIbNetscape
var HDMIbIEMac
var HDMImenuHoldMS
var HDMImenuDelayMS
var HDMInShowMenuStart = 0
var HDMIMinutesToTimeout = -1
var HDMILastAction
var HDMIBeenChanged = false
var HDMIscroll = (window.scrollTo) ? 1 : 0;
var HDMISubmitOnReactivate = false
var HDMIDollarSign = '$'
var HDMIDot = "."

/* None worked or were implemented
document.onactivate = HDMIReactivate()
document.onfocusin = HDMIReactivate()
window.onfocus=HDMIReactivate()
*/

function HDMILoad() {
/*Called from the body onload, and the calendar as the latter happens before the former*/
	HDMIBrowserSniffer()
	HDMISubmitted = false;
	HDMIScroll = (window.scrollTo) ? 1 : 0;
	/* maybe controllable - numbers too small */
	HDMImenuHoldMS = 100
	HDMImenuDelayMS = 100
	HDMIInitializeCalendar()
	HDMIBeenChanged = false
	HDMIMouseOffmenu = true
	HDMICheckHideMenu()
	HDMILoadScroll()
}

function HDMISetSubmitOnReactivate() {
	HDMISubmitOnReactivate = true
	return true
}

function HDMIReactivate () {
	if (HDMISubmitOnReactivate) {
		HDMISubmitOnReactivate = false
		HDMISubmit()
	}
	return true
}

function HDMILoadScroll() {
  if (!HDMIscroll) return;
	var MaintainScroll;
	MaintainScroll=HDMIMM_findObj('HDMIMaintainScroll');
	if (MaintainScroll) {
		var xy = MaintainScroll.value;
	  var ar = xy.split("_");
	  if (ar.length == 2)
	  {
	  	scrollTo(parseInt(ar[0]), parseInt(ar[1]));
	  }
	}
}

function HDMIClick() {
	HDMILastAction = new Date()
	HDMIHideCalendar()
	HDMIHideMenuName('HDMImenuBarSide')
	HDMIHideMenuName('HDMImenuBarReport')
	HDMIHideMenuName('HDMImenuBarTop')
	HDMIHideMenuName('HDMImenuBar')
}

function HDMIBrowserSniffer() {

/*Found the following on the web - see if it works better*/
// Browser sniffer. Written by PerlScriptsJavaScripts.com

	var v3;
	var op;
	var ie4;
	var ie5;
	var nn4;
	var nn6;
	var isMac;
	var aol;
	v3 = 0; op = 0; ie4  = 0; ie5 = 0; nn4 = 0; nn6 = 0; 
	isMac = 0; aol = 0;

	if(document.images){
	    if(navigator.userAgent.indexOf("Opera") != -1){
	        op = 1;
	    } else {
	        if(navigator.userAgent.indexOf("AOL") != -1){
	            aol = 1;
	        } else {
	            ie4 = (document.all && !document.getElementById);
	            nn4 = (document.layers);
	            ie5 = (document.all && document.getElementById);
	            nn6 = (document.addEventListener);
	        }
	    }
	} else {
	    v3 = 1;	
	}

	if(navigator.userAgent.indexOf("Mac") != -1){
	    isMac = 1;
	}

	if (ie5) 
	{
		HDMIbNetscape = false;
		HDMIbIE = true;
		if (isMac) HDMIbIEMac = true
		else HDMIbIEMac = false;
	}
	else
	{
		/* treat like netscape if not above*/
		HDMIbNetscape = true;
		HDMIbIE = false;
		HDMIbIEMac = false;
	}	
}

function HDMISubmitCheck() {
  if (HDMIScroll) {
		var MaintainScroll;
		MaintainScroll=HDMIMM_findObj('HDMIMaintainScroll');
	  if (MaintainScroll) {
			var x, y;
			x = 0;
			y = 0;
			if (document.body.scrollTop) {
				x = document.body.scrollLeft;
				y = document.body.scrollTop;
			}
			else {
				if (typeof(pageYOffset) != 'undefined') {
					x = pageXOffset;
					y = pageYOffset;
				}
				else
				{
					if (document.documentElement.scrollTop) {
						x = document.documentElement.scrollLeft;
						y = document.documentElement.scrollTop;
					}
				}
			}
		  var store = x + "_" + y;
			MaintainScroll.value=store; 
		}
	}
  if (HDMISubmitted) {
    alert("You have already submitted this form. Please wait....");
    document.MM_returnValue = false;
    return false;
  }
  else {
    HDMISubmitted = true;
    document.MM_returnValue = true;
    return true;
  }
}

function HDMISetGoToAddToOrder(nOn)
{
	var objGoToAddToOrder;
	objGoToAddToOrder = HDMIMM_findObj("HDMIGoToAddToOrder");
	if (objGoToAddToOrder) {
		objAddToOrder.value = nOn
	}
}

function HDMIResetSearch(nContent) {
	var i, objSearch;
	HDMISetGoToAddToOrder(1);
	objSearch = HDMIMM_findObj("HDMISearch0");
	if (objSearch) {
		objSearch.value = ""
		return true
	}
	for (i=0;i<nContent.length;i++) {
		objSearch = HDMIMM_findObj("HDMISearch" + nContent.substr(i, nContent.length-i));
		if (objSearch) {
			objSearch.value = ""
			return true
		}
	}
}

var iCount = 0

function HDMISetField(fieldName, value) {	
	var objField
	if (fieldName) {
		objField = HDMIMM_findObj(fieldName);
		if (objField) {
			objField.value = value;
			if (fieldName.toLowerCase().substr(0,10) == "idcategory") HDMIResetSearch(fieldName.substr(10, fieldName.length-10));
		}
	}
}

function HDMISubmit(fieldName, value, fieldName2, value2, fieldName3, value3, fieldName4, value4) {
  document.MM_returnValue = false;
	if (HDMISubmitCheck()) {	
		var objField
		if (fieldName) {
			objField = HDMIMM_findObj(fieldName);
			if (objField) {
				objField.value = value;
				if (fieldName.toLowerCase().substr(0,10) == "idcategory") HDMIResetSearch(fieldName.substr(10, fieldName.length-10));
			}
		}
		if (fieldName2) {
	  	objField = HDMIMM_findObj(fieldName2);
		  if (objField) {
	  		objField.value = value2;
		  	if (fieldName2.toLowerCase().substr(0,10) == "idcategory") HDMIResetSearch(fieldName.substr(10, fieldName.length-10));
		  }
		}
		if (fieldName3) {
	  	objField = HDMIMM_findObj(fieldName3);
		  if (objField) {
	  		objField.value = value3;
		  	if (fieldName3.toLowerCase().substr(0,10) == "idcategory") HDMIResetSearch(fieldName.substr(10, fieldName.length-10));
		  }
		}
		if (fieldName4) {
	  	objField = HDMIMM_findObj(fieldName4);
		  if (objField) {
	  		objField.value = value4;
		  	if (fieldName4.toLowerCase().substr(0,10) == "idcategory") HDMIResetSearch(fieldName.substr(10, fieldName.length-10));
		  }
		}
	
		var myForms = document.forms;
		for (i=0;i<myForms.length;i++)
		{
			if (myForms[i].name == "HDMI")
			{
				myForms[i].submit();
		    document.MM_returnValue = true;
			}
		}
	}
	//return document.MM_returnValue;
}


function HDMIPayPalSubmit() {
	var myForms = document.forms;
	for (i=0;i<myForms.length;i++)
	{
		if (myForms[i].name == "PayPal" || myForms[i].name == "Paypal")
		{
			myForms[i].submit();
	    document.MM_returnValue = true;
		}
	}
}

function HDMISetTimeout(nMinutes) {
	HDMILastAction = new Date()
	HDMIMinutesToTimeout = nMinutes
	HDMICheckTimeout()
}

function HDMINoteChange() {
	HDMIBeenChanged = true
	HDMILastAction = new Date()
	HDMICheckTimeout()
}

function HDMICheckTimeout() {
	if (HDMIMinutesToTimeout > 0 && HDMIBeenChanged) {
		var since = new Date()
		since.dateAdd("n", -HDMIMinutesToTimeout)
		if (since >=  HDMILastAction) {
			if (!HDMISubmitted) {
				/* Decided not to confirm - most likely scenario is that they change the page then leave - if wait until they confirm, their session may well be over and the changes effectively lost if they do not take a cookied
				if (confirm("Your session has been inactive for " + HDMIMinutesToTimeout + " minutes.\n\nPress OK to submit your changes.\n\nPress cancel to continue for another" + HDMIMinutesToTimeout + " minutes."))
					HDMISubmit('Checkout', 'forced')
				else setTimeout("HDMICheckTimeout()", HDMIMinutesToTimeout * 60000);
				*/
				HDMISubmit('Checkout', 'forced')
			}
		}
		else setTimeout("HDMICheckTimeout()", Math.ceil(HDMILastAction.getTime()-since.getTime()));
	}
}

/* Javascript from DreamWeaver with names modified to avoid conflicts */

function HDMIMM_preloadImages() { //v2.0
  if (document.images) {
    var imgFiles = HDMIMM_preloadImages.arguments;
    if (document.preloadArray==null) document.preloadArray = new Array();
    var i = document.preloadArray.length;
    with (document) for (var j=0; j<imgFiles.length; j++) if (imgFiles[j].charAt(0)!="#"){
      preloadArray[i] = new Image;
      preloadArray[i++].src = imgFiles[j];
  } }
}

function HDMIMM_openBrWindow(theURL,winName,features) { //v2.0
	var newWindow, theURExpanded=theURL + '&Popup=' + winName;
  if (!features || features=="") {
    newWindow=window.open(theURExpanded,winName,'scrollbars=yes,resizable=yes,location=yes,menubar=yes,toolbar=yes,status=yes');
  } else {
    newWindow=window.open(theURExpanded,winName,features);
  }
	if (window.focus) {newWindow.focus()}
  window.event.returnValue =false;
}

function HDMIMM_swapImage() { //v3.0
  var i,j=0,x,a=HDMIMM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=HDMIMM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function HDMIMM_swapImgRestore() { //v3.0
  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 HDMIMM_swapImageLayer() { //v2.0
  var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.HDMIMM_swapImgData;
  for (i=0; i < (HDMIMM_swapImageLayer.arguments.length-2); i+=3) {
    objStr = HDMIMM_swapImageLayer.arguments[(navigator.appName == 'Netscape')?i:i+1];
    if ((objStr.indexOf('document.layers[')==0 && document.layers==null) ||
        (objStr.indexOf('document.all[')   ==0 && document.all   ==null))
      objStr = 'document'+objStr.substring(objStr.lastIndexOf('.'),objStr.length);
    obj = eval(objStr);
    if (obj != null) {
      swapArray[j++] = obj;
      swapArray[j++] = (oldArray==null || oldArray[j-1]!=obj)?obj.src:oldArray[j];
      obj.src = HDMIMM_swapImageLayer.arguments[i+2];
  } }
  document.HDMIMM_swapImgData = swapArray; //used for restore
}

function HDMIHDMIMM_swapImgRestoreLayer() { //v2.0
  if (document.HDMIMM_swapImgData != null)
    for (var i=0; i<(document.HDMIMM_swapImgData.length-1); i+=2)
      document.HDMIMM_swapImgData[i].src = document.HDMIMM_swapImgData[i+1];
}

function HDMIMM_displayStatusMsg(msgStr)  { //v3.0
	status=msgStr; document.MM_returnValue = true;
}

function HDMIMM_findObj(n, d) { //v3.0
  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);}
  /* Removed this IE shortcut as was not working for AddProduct if(!(x=d[n])&&d.all) x=d.all[n];*/
  var elements = d.getElementsByName(n);
  for (i=0;!x&&i<elements.length;i++) x=elements[i];
  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=HDMIMM_findObj(n,d.layers[i].document);
  return x;
}

function HDMIMM_ValidateForm()
{
}

/* HDMI Cascading menu interface */

var HDMIfirstLevelMenu
var HDMIMouseOut = new Array()
var HDMIMouseOffmenu = true
 
function HDMINoteOut(BarOut) {
	HDMIMouseOut[BarOut] = true;
	setTimeout('HDMICheckHideMenu()', menuHoldMS);
	HDMIMouseOffmenu = true
}

function HDMINoteIn(BarIn) {
	HDMIMouseOut[BarIn] = false;
	HDMIMouseOffmenu = false
}

function HDMISetMouseOffmenu() {
	setTimeout('HDMICheckHideMenu()', menuHoldMS);
	HDMIMouseOffmenu = true
}
 
function HDMISetMouseOnmenu() {
	HDMIMouseOffmenu = false
}

function HDMICheckHideMenu() {
	if (HDMIMouseOffmenu) 	{
		HDMIHideMenuName('HDMImenuBarSide')
		HDMIHideMenuName('HDMImenuBarReport')
		HDMIHideMenuName('HDMImenuBarTop')
		HDMIHideMenuName('HDMImenuBar')
		/*An absolute cheat for SSI - see dll's journal 2007/11/16*/
		var testObj = HDMIMM_findObj('Bar1')
		if (testObj) HDMIHideMenu(Bar1.parentNode)
	}
}

/*To make more generic, make anything visible that has an attribute value hideme set to 1*/
function HDMIshowSelect(isOn) {
	var hideme;
	var myForms = document.forms;
	for (i=0;i<myForms.length;i++) {
		if (myForms[i].name != "Link") {
			myCols = myForms[i].elements
			for (j=0; j<myCols.length; j++) {
				hideme = myCols[j].getAttribute("hideme")
				if (hideme) {
					if (hideme == 1) {
						if (isOn) myCols[j].style.visibility = "visible"
						else myCols[j].style.visibility = "hidden";
					}
				}
			}
		}
	}
}

function HDMIInitMenu() {
	/* Apparently not needed in cascading menus - believe it just hides the menu
 */
 		
}
 
function HDMIShowMenu(name, menuBarNameIn) {
	var menuBarName = menuBarNameIn
	if (!menuBarName) menuBarName = 'HDMImenuBar'
	if (HDMIMouseOut[name]) 	{
		HDMIMouseOut[name] = false;
		return;
	}
	/*Had to add the menuBarName because there are 2 of them 
		When using ie 5.0, the bar top and left offset is not correct UNTIL alert is called - width and height are correct.
	 	tried:	HideMenu(bar)
	 					Extracting values in multiple ways
	 					setting the focus
	 					using getBoundingClientRect - also only worked after alert is called
 					window.resizeBy(0,0)
 					window.focus
 					window.moveBy(0,0)
 					window.scrollBy(0,0)
 	turned out setting the classname messed up the offset calls - also if called Hidemenu prior to taking the values, worked only the first time
 	*/
	var myMenuBar = document.getElementById(menuBarName)
	var bar = document.getElementById(name)
	var bt, bh, bl, bw
	bt = bar.offsetTop
	bh = bar.offsetHeight
	bl = bar.offsetLeft
	bw = bar.offsetWidth
 	var l, r, t, b, t0, l0
	t0 = 0
	l0 = 0
 	t = 0
 	l = 0
 	/* Some modifications from CasecadeMenus.js - replacing
 	if (HDMIbIE) {
 		var parent;
	 	parent = bar.offsetParent;
	 	while (parent != null) {
	   	t = t + parent.offsetTop;
	   	l = l + parent.offsetLeft;
	   	parent = parent.offsetParent;
	  }
    t = t + bt
    b = t + bh
    l = l + bl
  }
  else {
    bt = myMenuBar.offsetTop + bt
    b = bt + bh
  	l = l0 + myMenuBar.offsetLeft + bl
  }
  r = l + bw
    with */
 	if (HDMIbIE) {
     t = myMenuBar.offsetTop
	   b = t + myMenuBar.offsetHeight + bt
  	 t = b - bh
   } else {
     t = myMenuBar.offsetTop + bt
     b = t + bh
   }
 	 l = l0 + myMenuBar.offsetLeft + bl
 	 r = l + bw
    
	HDMIHideMenu(myMenuBar)
	if (menuBarName == 'HDMImenuBarTop') {
		HDMIHideMenuName('HDMImenuBarSide')
		HDMIHideMenuName('HDMImenuBarReport')
	}
	else
	if (menuBarName == 'HDMImenuBarSide') {
		HDMIHideMenuName('HDMImenuBarTop')
		HDMIHideMenuName('HDMImenuBarReport')
	}
	else
	if (menuBarName == 'HDMImenuBarReport') {
		HDMIHideMenuName('HDMImenuBarTop')
		HDMIHideMenuName('HDMImenuBarSide')
	}
	else {
		HDMIHideMenuName('HDMImenuBar')
		/*An absolute cheat for SSI*/
		/*HDMIHideMenu(Bar1.parentNode) not in HDMI specific*/
	}
	
	
 /*Getting rid of selects that may override the menus*/
	HDMIshowSelect(false);
 	bar.className="HDMIbarOver"
 	var menuName=bar.getAttribute("menu")
 	if (!menuName) return;
 	var obj = document.getElementById(menuName)
 	if (!obj) return;
 	HDMIfirstLevelMenu = obj
  /*To make this potentially more generic, have option to start EITHER directly below, or off to the right
   - set HDMInShowMenuStart to 0 for below and 1 for the right
   Not sufficient as the management side has some menus off to the right, and some below, so will first
   look for a menu attribute*/
 	var BarnShowMenuStart=myMenuBar.getAttribute("ShowMenuStart")
 	if (BarnShowMenuStart) HDMInShowMenuStart = BarnShowMenuStart
 	if (HDMInShowMenuStart == 0) {
	  if (HDMIbIE) {
	 	  if (HDMIbIEMac) {
	   	  r = r + 10
		 	  t = t - (myMenuBar.offsetHeight + bh)/2
		 	 	obj.style.pixelTop = 0
		 	 	obj.style.pixelLeft = 0
	 	  }
 	 	  obj.style.pixelTop = b
 	 	  obj.style.pixelLeft = l
	  }
	  else {
	    obj.style.top = b + "px"
      obj.style.left = l + "px"
	  }
  }
  else {
	  if (HDMIbIE) {
	 	  if (HDMIbIEMac) {
	   	  r = r + 10
		 	  t = t - (myMenuBar.offsetHeight + bh)/2
		 	 	obj.style.pixelTop = 0
		 	 	obj.style.pixelLeft = 0
	 	 }
 	 	 obj.style.pixelTop = t
 	 	 obj.style.pixelLeft = r
	  }
	  else {
	    obj.style.top = t + "px"
      obj.style.left = r + "px"
	  }
  }
  obj.style.visibility = "visible"
 	/* required for scrolling */
 	if (HDMIScroll) {
		var MaintainScroll
		MaintainScroll=HDMIMM_findObj('HDMIMaintainScroll')
  	if (MaintainScroll) {
			var x, y
			x = 0
			y = 0
			if (document.body.scrollTop) {
				x = document.body.scrollLeft
				y = document.body.scrollTop
			}
			else {
				if (typeof(pageYOffset) != 'undefined') {
					x = pageXOffset
					y = pageYOffset
				}
			}
	  	var store = x + "_" + y
			MaintainScroll.value=store
		}
	}
}
 
 function HDMIhighlight(menuNumber, ItemNumber, typeIn) {
 	 var type=typeIn
 	 if (!type) type=''
   var PElement = document.getElementById("HDMImenu" + type + menuNumber)
 	 var obj
 	 var objName="HDMImenuItem" + type + menuNumber + "_" + ItemNumber
 	 
   if(PElement.hasChildNodes() == true) { 
   	 var Elements = PElement.childNodes
     for(var i=0;i<Elements.length;i++)
     {
        if (Elements[i].id == objName)
        	obj = Elements[i];
        else {
        	if (Elements[i].className != "HDMImenuItem") {
        		if (Elements[i].className == "HDMIItemMouseOver") {
        			HDMIHideMenu (document.getElementById("HDMImenu" + type + menuNumber))
        		}
	          Elements[i].className = "HDMImenuItem"
	        }
	      }
     }
   }
   if (obj) {
  	 HDMIShowSubMenu(obj)
	   window.defaultStatus = obj.title
   }
 }
    
 function HDMIHideMenuName(menuName) {
 	 var obj = document.getElementById(menuName)
 	 if (obj) HDMIHideMenu(obj)
 }
 
 function HDMIHideMenu(obj) {
 	 if (obj)
 	 {
     if(obj.hasChildNodes()==true) {
        var child = obj.childNodes
        var bar, barOver, childMenu, childMenuName
                       
        for(var j =0;j<child.length;j++) {
          if (child[j].id && (child[j].className=="HDMIbarOver" || child[j].className=="HDMImenuItem" || child[j].className=="HDMIItemMouseOver")) {
          	bar = document.getElementById(child[j].id)
          	barOver = false
          	if (child[j].className=="HDMIbarOver") {
          		bar.className="HDMIbar"
          		barOver = true
          	}
          	if (child[j].className=="HDMIItemMouseOver") {
          		bar.className="HDMImenuItem"
          		barOver = true
          	}
            childMenuName = child[j].getAttribute("menu")
  	        if(childMenuName != null) {
      	      childMenu = document.getElementById(childMenuName)
      	      if (childMenu) {
	        	    if(childMenu.hasChildNodes()==true && barOver==true) {
  	        	    HDMIHideMenu(childMenu)
    	      	  }
      	    		childMenu.style.visibility = "hidden" 
      	    	}
            }
          }
      	}    
      }
		 /*re-instating neversend selects*/
		 if (obj.id == "HDMImenuBarTop" || obj.id == "HDMImenuBarSide" || obj.id == "HDMImenuBarReport" || obj.id == "HDMImenuBar") HDMIshowSelect(true);
    }
 }
 
 function HDMICheckPosition(obj) {
 	 // For IE on the Mac, the menus slip out of sight and need to be repositioned
 	 var rs, ts
   if(obj.hasChildNodes()==true) {
      var child = obj.childNodes     
               
      for(var j =0;j<child.length;j++) {
        if (child[j].id && (child[j].className=="HDMIbarOver" || child[j].className=="HDMImenuItem" || child[j].className=="HDMIItemMouseOver")) {
        	var bar = document.getElementById(child[j].id)
          var childMenuName = child[j].getAttribute("menu")
	        if(childMenuName != null) {
    	      var childMenu = document.getElementById(childMenuName)
       	    CheckPosition(childMenu) 
          }
        }
    	}    
    }
	 	ts = obj.style.pixelTop 
   	rs = obj.style.pixelLeft
	 	obj.style.pixelTop = 0
	 	obj.style.pixelLeft = 0
	 	obj.style.pixelTop = ts
	 	obj.style.pixelLeft = rs
 }
 
function HDMIShowSubMenu(obj) {
   var r, t, PMenu
	 var ts, rs
   PMenu = obj.parentNode
	 if (HDMIbIEMac) {
	 	 t = PMenu.style.pixelTop + obj.offsetTop
	 	 r = PMenu.style.pixelLeft + PMenu.offsetWidth
	 }
	 else {
     t = PMenu.offsetTop + obj.offsetTop
	   b = t + obj.offsetHeight
  	 l = PMenu.offsetLeft + obj.offsetLeft
   	 r = l + PMenu.offsetWidth
   }
   HDMIHideMenu(PMenu)
   
   obj.className="HDMIItemMouseOver"
	 if (HDMIbIEMac)
	 	 CheckPosition(firstLevelMenu)
   if(obj.getAttribute("menu") != null) {
   	 var menuName=obj.getAttribute("menu")
   	 var menu = document.getElementById(menuName)
     if (HDMIbIEMac) {
     		menu.style.pixelTop = 0
     		menu.style.pixelLeft = 0
     }
     /* If the right will be more than 900, show to left*/
     menu.style.top = t + "px"
     if (r + PMenu.offsetWidth > 1000) {
     	 menu.style.left = (l-PMenu.offsetWidth) + "px"
     }
     else {
     	 menu.style.left = r + "px"
     }
     menu.style.visibility = "visible"
  }
} 

/*Modified so NeverSends could product a list of categories when using cascading menus*/
function HDMIpSetMenuSelection(catType, text)
{
  document.MM_returnValue = false;
	if (HDMISubmitCheck()) {	
		var myForms = document.forms
		var catTypeMid
		if (catType.substring(0, 6) == 'Bottom') catTypeMid = 'Mid' + catType.substring(6)
		HDMIResetSearch(catType)
		for (i=0;i<myForms.length;i++) {
			if (myForms[i].name == "HDMI") {
				myCols = myForms[i].elements
				for (j=0; j<myCols.length; j++) {
					if (myCols[j].name == "idCategory" + catType) {
						myCols[j].value = text
					}
					if (myCols[j].name == "idCategory" + catTypeMid) {
						myCols[j].value = text
					}
				}
				document.MM_returnValue = true
				myForms[i].submit()
			}
		}
	}
}

/*Quantity*/

function HDMIupArrowClick(inputName, incrementAmount) {
	var inputObject = HDMIMM_findObj(inputName);
	if (inputObject) {
		inputObject.value = inputObject.value - incrementAmount + 2*incrementAmount;
		HDMIArrowChangeQuantity(inputName)
	}
}

function HDMIdownArrowClick(inputName, incrementAmount) {
	var inputObject = HDMIMM_findObj(inputName);
	if (inputObject) {
		var newValue = inputObject.value - incrementAmount;
		if (newValue <= 0) newValue = "";
		inputObject.value = newValue;
		HDMIArrowChangeQuantity(inputName)
	}
}

function HDMIClearClick(inputName) {
	var inputObject = HDMIMM_findObj(inputName);
	if (inputObject) {
		inputObject.value = "";
		HDMIArrowChangeQuantity(inputName)
	}
}

function HDMIArrowChangeQuantity(inputName) {
  HDMINoteChange();
	if (inputName.indexOf("NoStandingOrderProds") >= 0) HDMIChangeQuantity(inputName.replace("NoStandingOrderProds", ""))
}

/* Frequency */


function HDMISetFrequencyStart(idStr)
{
	HDMIBeenChanged = true
	HDMILastAction = new Date()
	HDMICheckTimeout()
	var iFrequency, objStart, objFrequency, i, j, k, startMessage, iStart, iStartWant, objStartWeek, objStepWeek, iStartWeek, iStepWeek;
	objFrequency = HDMIMM_findObj("Frequency" + idStr);
	iStartWeek=0;
	iStepWeek=1;
	if (objFrequency) 
	{
		iFrequency = objFrequency.value;
		objStart = HDMIMM_findObj("LastDelivered" + idStr);
		if (objStart)
		{
			iStart = objStart.value;
			if (iFrequency > 0)
			{
				objStartWeek = HDMIMM_findObj("StartWeek" + idStr);
				if (objStartWeek) iStartWeek = objStartWeek.value;
				iStartWeek = Math.floor(iStartWeek)
				objStepWeek = HDMIMM_findObj("StepWeek" + idStr);
				if (objStepWeek) iStepWeek = objStepWeek.value;
				iStepWeek = Math.floor(iStepWeek)
				if (isNaN(iStart)) iStartWant = 0;
				else if (iStart >= Math.floor(iFrequency / iStepWeek)) iStartWant = Math.floor(iFrequency / iStepWeek)-1;
				else iStartWant = iStart;
				objStart.options.length = Math.floor(iFrequency / iStepWeek);
				j = -1;
				for (i=iStartWeek; i< iFrequency; i = i + iStepWeek)
				{
					j++;
					objStart.options[j].value = i;
					if (i == 0)
						objStart.options[j].text = "This Week";
					else if (i == 1)
						objStart.options[j].text = "2nd Week";
					else if (i == 2)
						objStart.options[j].text = "3rd Week";
					else
						objStart.options[j].text = (i+1) + "th Week";
				}
			}
			else
			{
				objStart.options.length = -iFrequency * 4;
				k = 0;
				iStartWant = 0;
				for (i=0; i< -iFrequency; i++)
				{
					for (j=0; j<4; j++)
					{
						objStart.options[k].value = i + "|" + j;
						if (j == 0)
							startMessage = "1st Week";
						else if (j == 1)
							startMessage = "2nd Week";
						else if (j == 2)
							startMessage = "3rd Week";
						else
							startMessage = "Last Week";
						if (i == 0)
						{
							if (iFrequency == -1)
								objStart.options[k].text = startMessage + " of Month";
							else
								objStart.options[k].text = startMessage + " This Month";
							if ( i == 0 && j == 0) objStart.text = objStart.options[k].text;
						}
						else if (i == 1)
							objStart.options[k].text = startMessage + " Next Month";
						else
							objStart.options[k].text = startMessage + " Month " + i;
						if (objStart.options[k].value == iStart) 
						{
							iStart = k;
							iStartWant = k;
						}
						k++;
					}
				}
			}
			objStart.selectedIndex = -1; //To get Netscape to update text
			
			objStart.value = objStart.options[iStartWant].value;
			objStart.text = objStart.options[iStartWant].text;
			objStart.selectedIndex = iStartWant;
			objStart.options[iStartWant].selected = true;
			
			/*Need quantity calculations as well*/
			HDMIChangeQuantity(idStr)
		}
	}
}

function HDMISetWeekDeliver(idStr) {
	var objFrequency, iFrequency, objStart, iStart, objbDeliverythisWeek, objWeek, i, objQuantity, iQuantity, j, k;
	objFrequency = HDMIMM_findObj("Frequency" + idStr);
	if (objFrequency) {
		iFrequency = Math.round(objFrequency.value);
		objStart = HDMIMM_findObj("LastDelivered" + idStr);
		if (objStart) {
			iStart = objStart.value;
			objbDeliverythisWeek = HDMIMM_findObj('bDeliverythisWeek');
			if (!objbDeliverythisWeek || objbDeliverythisWeek.value=='False') {
				objWeek = HDMIMM_findObj('WeekQuantity0' + idStr);
				//if (objWeek) objWeek.innerHTML='n/a'
				i = 1
			}
			else
				i = 0;
			objQuantity = HDMIMM_findObj('NoStandingOrderProds' + idStr);
			if (objQuantity) {
				iQuantity = objQuantity.value
				if (isNaN(iQuantity)) iQuantity = objQuantity.innerHTML
				if (iQuantity.length == 0) iQuantity = 0
				for (j=i;j<10;j=j+1) {
					objWeek = HDMIMM_findObj('WeekQuantity' + j + idStr);
					if (objWeek) objWeek.innerHTML=0;
				}
				if (iFrequency >= 0) {
					iStart = Math.round(iStart)
					if (iStart < i) iStart = iStart + iFrequency
					i = i + iStart
					for (k=iStart;k<=10;k=k+iFrequency){
						objWeek = HDMIMM_findObj('WeekQuantity' + k + idStr);
						if (objWeek) objWeek.innerHTML=iQuantity;
					}
				}
				else {
				  for (i=i; i<=10; i++)
				  {
						var objWeekDate = HDMIMM_findObj('DateWeek' + i);
						if (objWeekDate) {
							var myDate = new Date(objWeekDate.title)
							var iMonth = myDate.getMonth();
							var param = iStart.split('|')
							varMatchMonth = iMonth
							if (param[0] == 1) {
								varMatchMonth = varMatchMonth + 1
								if (varMatchMonth > 11) varMatchMonth = 0
							}
							else if (param[0] == 2) {
								varMatchMonth = varMatchMonth + 2
								if (varMatchMonth = 12) varMatchMonth = 0
								else if (varMatchMonth = 13) varMatchMonth = 1
							}
							else if (param[0] > 2) varMatchMonth = -1
							if (varMatchMonth >= 0) {
								var nDaysMonth = getNumberDays(varMatchMonth)
								for (k=i;k<=10;k++) {
									objWeekDate = HDMIMM_findObj('DateWeek' + k);
									if (objWeekDate) {
										myDate = new Date(objWeekDate.title)
										var newMonth = myDate.getMonth();
										if (newMonth != varMatchMonth && param[0] == 0) {
											varMatchMonth = varMatchMonth + 1
											if (varMatchMonth > 11) varMatchMonth = 0
											nDaysMonth = getNumberDays(varMatchMonth)
										}
										if (newMonth == varMatchMonth) {
											var iDay = myDate.getDate();
											if ((param[1] == 0 && iDay <= 7) || (param[1] == 1 && iDay <= 14 && iDay > 7) || (param[1] == 2 && iDay <= 21 && iDay > 14) || (param[1] == 3 && iDay >= nDaysMonth-6)) {
												objWeek = HDMIMM_findObj('WeekQuantity' + k + idStr);
												if (objWeek) objWeek.innerHTML=iQuantity;
											}
										}
									}
								}
							return
							}
						}
					}
				}
			}
		}
	}	
}

function HDMIReadPrice(price) {
	HDMIDollarSign = price.substring(0,1)
	HDMIDot = price.substring(price.length - 3, price.length - 2)
	return Math.round(price.substring(1, price.length - 3)) + Math.round(price.substring(price.length - 2))/100
}

function HDMIGetMoney(price) {
	//Cheat to convert to character
	var localPrice = '$' + Math.round(price * 100)
	localPrice = localPrice.substring(1)
	if (Math.round(price * 100) == 0) return ''
	return HDMIDollarSign + localPrice.substring(0,localPrice.length-2) + HDMIDot + localPrice.substring(localPrice.length-2)
}

function HDMIChangeQuantity(idStr)
{
	HDMIBeenChanged = true
	HDMILastAction = new Date()
	HDMICheckTimeout()
	HDMISetWeekDeliver(idStr)
	var objQuantity = HDMIMM_findObj('NoStandingOrderProds' + idStr);
	var objPrice = HDMIMM_findObj('Price' + idStr);
	var objExtendedPrice = HDMIMM_findObj('ExtendedPrice' + idStr);
	if (objQuantity && objPrice && objExtendedPrice) {
		var quantity = objQuantity.value
		if (isNaN(quantity)) quantity = objQuantity.innerHTML
		var price =(HDMIReadPrice(objPrice.innerHTML) * quantity)
		objExtendedPrice.innerHTML = HDMIGetMoney(price)
	}
	
	var nContent = idStr.split('|')[1]
	HDMIRecalculateWeeks(nContent)	
}

function HDMIRecalculateWeeks(nContent) {
	var totals = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
	var myElements = document.getElementsByTagName("div")
	for (i=0;i<myElements.length;i++) {
		if (myElements[i].id.indexOf('WeekQuantity') == 0 && myElements[i].id.indexOf('|' + nContent) > 0) {
			j = myElements[i].id.substring(12,13)
			objPrice = HDMIMM_findObj('Price' + myElements[i].id.substring(13));
			objQuantity = HDMIMM_findObj('NoStandingOrderProds' + myElements[i].id.substring(13));
			if (objPrice && !isNaN(myElements[i].innerHTML)) {
				totals[j] += HDMIReadPrice(objPrice.innerHTML) * myElements[i].innerHTML
			}
		}
	}
	var objTotal
	for (j=0;j<10;j=j+1) {
		objTotal = HDMIMM_findObj('Total' + j + nContent)
		if (objTotal) objTotal.innerHTML = HDMIGetMoney(totals[j])
	}
}

/* Calendar stuff*/

/* Parameters that can be set without asp - would be valid*/
var HDMIdCurDate = new Date();
var HDMIdCurMonth
var HDMIdCurDayOfMonth
var HDMIdCurYear
var HDMIobjPrevElement = new Object();
var HDMIobjCalCelArray = new Array(7);
var HDMIsPrevMonthPointer;
var HDMIsNextMonthPointer;

/* Parameters that require asp for store or customer*/
var HDMIaMonthName
var HDMIStartMonth
var HDMIStartYear
var HDMIStartDay
var HDMIOrderDatesPast
var HDMIOrderDatesProcessing
var HDMIOrderDatesCurrent
var HDMIOrderDatesFuture
var HDMIOrderDatesHolidays
var HDMIOrderDatesStoreHolidays
var HDMIOrderDatesEmpty
var HDMIOrderDatesFutureDefined
var HDMIOrderDatesFutureAdded
var HDMIOrderDatesSubscriptions
var HDMIOrderNoDeliveries
var HDMIEndYear
var HDMIEndMonth
var HDMIEndDay
var HDMIOrderDatesPastColor
var HDMIOrderDatesCurrentColor
var HDMIOrderDatesFutureColor
var HDMIOrderDatesFutureDefinedColor
var HDMIOrderDatesFutureAddedColor
var HDMIOrderDatesProcessingColor
var HDMIOrderDatesHolidaysColor
var HDMIOrderDatesStoreHolidaysColor
var HDMIOrderDatesEmptyColor
var HDMIOrderDatesSubscriptionsColor
var HDMIOrderNoDeliveriesColor

function HDMIInitializeCalendar() {

	HDMIdCurMonth = HDMIdCurDate.getMonth();
	HDMIdCurDayOfMonth = HDMIdCurDate.getDate();
	HDMIdCurYear = HDMIdCurDate.getFullYear();
	HDMIobjPrevElement = new Object();
	HDMIobjCalCelArray = new Array(7);

}

function HDMIfToggleColor(myElement) {
	var toggleColor = "#ff0000";
	if (myElement.id == "HDMIcalDateText") {
		if (myElement.color == toggleColor) {
			myElement.color = "";
		} else {
				myElement.color = toggleColor;
		}
	} else if (myElement.id == "HDMIcalCell") {
		for (var i in myElement.children) {
			if (myElement.children[i].id == "HDMIcalDateText") {
				if (myElement.children[i].color == toggleColor) {
					myElement.children[i].color = "";
				} else {
					myElement.children[i].color = toggleColor;
	      }
      }
    }
 	}
}

function HDMIfSetSelectedDay(sTag, myElement){
	if (myElement.id == "HDMIcalCell" + sTag) {
		var mycol=myElement.childNodes;
		for (i=0;i<mycol.length;i++)
		{
			if (mycol[i].id == "HDMIcalDateText" + sTag)
			{
				if (!isNaN(parseInt(mycol[i].innerHTML)))
				{
					if (!myElement.bgColor == "")
					{
						var bIgnore = HDMIdCurDate.getFullYear() == HDMIpGetYear(sTag) && HDMIdCurDate.getMonth() == HDMIpGetMonth(sTag)-1 && HDMIdCurDate.getDate() == mycol[i].innerHTML
						if (bIgnore) {
							var myDate = HDMIfGetDate(HDMIdCurDate.getFullYear(), HDMIdCurDate.getMonth()+1, HDMIdCurDate.getDate())
							if (HDMIfGetIndex(HDMIOrderDatesPast , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesCurrent , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesFuture , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesHolidays , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesStoreHolidays , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesEmpty , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesFutureDefined , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesSubscriptions , myDate) >= 0) bIgnore = false;
							if (HDMIfGetIndex(HDMIOrderDatesFutureAdded , myDate) >= 0) bIgnore = false;
						}
						if (!bIgnore) {
							myElement.bgColor = HDMIOrderDatesProcessingColor;
							HDMIobjPrevElement.bgColor = "";
							HDMIpSetcalSelectedDate(sTag, HDMIpGetMonth(sTag) + "/" + mycol[i].innerHTML + "/" + HDMIpGetYear(sTag));
							HDMIobjPrevElement = myElement;
							var myForms = document.forms;
							for (j=0;j<myForms.length;j++)
							{
								if (myForms[j].name == "HDMI")
								{
									myForms[j].submit();
								}
							}
						}	
					}
				}
			}
		}
	}
}

function HDMIfGetDaysInMonth(iMonth, iYear) {
var dPrevDate = new Date(iYear, iMonth, 0);
if (dPrevDate.getDate() < 20)
{
	var iTestMonth = iMonth+1;
	var iTestYear = iYear;
	if (iTestMonth > 12)
	{
		iTestMonth = 1;
		iTestYear = iYear+1;
	}
	varNewDate = new Date(iTestYear, iTestMonth, 0);
	var timeDiff = varNewDate - dPrevDate;
	timeDiff = timeDiff/86400000;
	return timeDiff;
}
return dPrevDate.getDate();
}

function HDMIfBuildCal(iYear, iMonth, iDayStyle) {
// Builds array for month display
	var aMonth = new Array(7);
	aMonth[0] = new Array(7);
	aMonth[1] = new Array(7);
	aMonth[2] = new Array(7);
	aMonth[3] = new Array(7);
	aMonth[4] = new Array(7);
	aMonth[5] = new Array(7);
	aMonth[6] = new Array(7);
	HDMIobjCalCelArray[0] = new Array(7);
	HDMIobjCalCelArray[1] = new Array(7);
	HDMIobjCalCelArray[2] = new Array(7);
	HDMIobjCalCelArray[3] = new Array(7);
	HDMIobjCalCelArray[4] = new Array(7);
	HDMIobjCalCelArray[5] = new Array(7);
	HDMIobjCalCelArray[6] = new Array(7);
	var dCalDate = new Date(iYear, iMonth-1, 1);
	var iDayOfFirst = dCalDate.getDay();
	var iDaysInMonth = HDMIfGetDaysInMonth(iMonth, iYear);
	var iVarDate = 1;
	var i, d, w;
	if (iDayStyle == 2) {
	aMonth[0][0] = "Sunday";
	aMonth[0][1] = "Monday";
	aMonth[0][2] = "Tuesday";
	aMonth[0][3] = "Wednesday";
	aMonth[0][4] = "Thursday";
	aMonth[0][5] = "Friday";
	aMonth[0][6] = "Saturday";
	} else if (iDayStyle == 1) {
	aMonth[0][0] = "Sun";
	aMonth[0][1] = "Mon";
	aMonth[0][2] = "Tue";
	aMonth[0][3] = "Wed";
	aMonth[0][4] = "Thu";
	aMonth[0][5] = "Fri";
	aMonth[0][6] = "Sat";
	} else {
	aMonth[0][0] = "Su";
	aMonth[0][1] = "Mo";
	aMonth[0][2] = "Tu";
	aMonth[0][3] = "We";
	aMonth[0][4] = "Th";
	aMonth[0][5] = "Fr";
	aMonth[0][6] = "Sa";
	}
	for (d = 0; d < iDayOfFirst; d++)
		aMonth[1][d] = '&nbsp;';
	for (d = iDayOfFirst; d < 7; d++) {
	aMonth[1][d] = iVarDate;
	iVarDate++;
	}
	for (w = 2; w < 7; w++)
	{
		for (d = 0; d < 7; d++)
		{
			if (iVarDate <= iDaysInMonth)
			{
				aMonth[w][d] = iVarDate;
				iVarDate++;
	    }
	    else
	    {
				aMonth[w][d] = '&nbsp;';
	    }
	  }
	}
	return aMonth;
}

function HDMIfGetDate(iYear, iMonth, iDay) {
	sYear = String(iYear);
	sMonth = String(iMonth);
	if (iMonth < 10) sMonth = "0" + sMonth;
	sDay = String(iDay);
	if (iDay < 10) sDay = "0" + sDay;
	return sYear + sMonth + sDay;
}

function HDMIfGetIndex(aArray, sDate) {
	for (i=0; i<aArray.length; i++)	{
		if (aArray[i] == sDate) return i;
	}
	return -1;
}

function HDMIfDrawCal(sTag, iYear, iMonth, iDayStyle) {

  if (isNaN(iYear)) iYear = HDMIdCurYear
  if (isNaN(iMonth)) iMonth = HDMIdCurMonth
	var myMonth;
	var myDate;
	var myString;
	var myStringWeek;
	var myStyle;
	
	if (iDayStyle != 2 && iDayStyle !=1) {
		HDMIaMonthName = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
		if (HDMIbNetscape) {
			HDMIsPrevMonthPointer = "[<&lt;m]"
		}
		else {
			//HDMIsPrevMonthPointer = "[<<m]"
			HDMIsPrevMonthPointer = "[<&lt;m]"
			//HDMIsPrevMonthPointer = "[<&lt;m]" this made the mirror look OK, but we'll check when we get to servers
		}
		HDMIsNextMonthPointer = "[m>>]"
	}
	else {
		HDMIaMonthName = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];//
		if (HDMIbNetscape) {
			HDMIsPrevMonthPointer = "[<&lt;month]"
		}
		else {
			//HDMIsPrevMonthPointer = "[<<month]"
			HDMIsPrevMonthPointer = "[<&lt;month]"
		}
		HDMIsNextMonthPointer = "[month>>]"
	}
	myMonth = HDMIfBuildCal(iYear, iMonth, iDayStyle);
	myString = "<table id=\"HDMICalendarCells" + sTag + "\" name=\"HDMICalendarCells" + sTag + "\" class=\"HDMICalDayTable\" cellspacing=\"0\"><tr><td class=\"HDMICalDayLabel\">" + myMonth[0][0] + "</td><td class=\"HDMICalDayLabel\">" + myMonth[0][1] + "</td><td class=\"HDMICalDayLabel\">" + myMonth[0][2] + "</td><td class=\"HDMICalDayLabel\">" + myMonth[0][3] + "</td><td class=\"HDMICalDayLabel\">" + myMonth[0][4] + "</td><td class=\"HDMICalDayLabel\">" + myMonth[0][5] + "</td><td class=\"HDMICalDayLabel\">" + myMonth[0][6] + "</td></tr>";
	for (w = 1; w < 7; w++) {
		myStringWeek = "<tr id=\"HDMIcalRow" + sTag + "\">";
		for (d = 0; d < 7; d++) { 
			myStringWeek = myStringWeek + "<td class=\"HDMICalDayText\" id=\"HDMIcalCell" + sTag + "\" onMouseOver=\"HDMIfToggleColor(this);\" onMouseOut=\"HDMIfToggleColor(this);\" onclick=\"HDMIfSetSelectedDay('" + sTag + "', this);\"";
			if (!isNaN(myMonth[w][d])) {
				myDate = HDMIfGetDate(iYear, iMonth, myMonth[w][d]);
				myStyle = ""
				if (HDMIfGetIndex(HDMIOrderDatesSubscriptions, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesSubscriptionsColor;	myStyle = " style=\"CURSOR:Pointer'\"" }			
				if (HDMIfGetIndex(HDMIOrderDatesStoreHolidays, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesStoreHolidaysColor;myStyle = " style=\"CURSOR:Pointer'\"" }
				if (HDMIfGetIndex(HDMIOrderDatesHolidays, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesHolidaysColor;	myStyle = " style=\"CURSOR:Pointer'\"" }
				if (HDMIfGetIndex(HDMIOrderNoDeliveries, myDate) >= 0) myStringWeek = myStringWeek + " bgColor=" + HDMIOrderNoDeliveriesColor;
				if (HDMIfGetIndex(HDMIOrderDatesProcessing, myDate) >= 0) myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesProcessingColor;
				if (HDMIfGetIndex(HDMIOrderDatesCurrent, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesCurrentColor;	myStyle = " style=\"CURSOR:Pointer'\"" }			
				if (HDMIfGetIndex(HDMIOrderDatesPast, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesPastColor;	myStyle = " style=\"CURSOR:Pointer'\"" }
				if (HDMIfGetIndex(HDMIOrderDatesFuture, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesFutureColor;	myStyle = " style=\"CURSOR:Pointer'\"" }			
				if (HDMIfGetIndex(HDMIOrderDatesFutureAdded, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesFutureAddedColor;	myStyle = " style=\"CURSOR:Pointer'\"" }			
				if (HDMIfGetIndex(HDMIOrderDatesFutureDefined, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesFutureDefinedColor;	myStyle = " style=\"CURSOR:Pointer'\"" }			
				if (HDMIfGetIndex(HDMIOrderDatesEmpty, myDate) >= 0) { myStringWeek = myStringWeek + " bgColor=" + HDMIOrderDatesEmptyColor;myStyle = " style=\"CURSOR:Pointer'\"" }
				myStringWeek = myStringWeek + "><font id=\"HDMIcalDateText" + sTag + "\" onclick=\"HDMIfSetSelectedDay('" + sTag + "', this);\"" + myStyle + ">" + myMonth[w][d] + "</font>";
			} else {
				myStringWeek = myStringWeek + "><font id=\"HDMIcalDateText" + sTag + "\" onclick=\"HDMIfSetSelectedDay('" + sTag + "', this);\">&nbsp;&nbsp;</font>";
			}
			myStringWeek = myStringWeek + "</td>";
		}
		myStringWeek = myStringWeek + "</tr>";
		myString = myString + myStringWeek;
	}
	myString = myString + "</table>";
	document.write(myString);
	HDMIfSetValues(sTag, iYear, iMonth);
}

function HDMIfSetValues(sTag, iYear, iMonth)
{
	/*if (document.all) think this will not work because of tag
	{
		calMonthLabel.innerText=HDMIaMonthName[iMonth-1] + ' ' + iYear;
		if (iYear > HDMIStartYear || (iYear == HDMIStartYear && iMonth > HDMIStartMonth)) calLastMonth.innerText=HDMIsPrevMonthPointer;
		else calLastMonth.innerText='';
		if (iYear < HDMIEndYear || (iYear == HDMIEndYear && iMonth < HDMIEndMonth)) calNextMonth.innerText=HDMIsNextMonthPointer;
		else calNextMonth.innerText='';

		document.all.thisMonth.value = iMonth;
		document.all.thisYear.value = iYear;

	}
	else
	{		*/
		myElement = document.getElementById("HDMIcalLastMonth" + sTag);
		if (myElement)
		{
			if (iYear > HDMIStartYear || (iYear == HDMIStartYear && iMonth > HDMIStartMonth)) myElement.innerHTML=HDMIsPrevMonthPointer;
			else myElement.innerHTML='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
		}
		myElement = document.getElementById("HDMIcalNextMonth" + sTag);
		if (myElement)
		{
			if (iYear < HDMIEndYear || (iYear == HDMIEndYear && iMonth < HDMIEndMonth)) myElement.innerHTML=HDMIsNextMonthPointer;
			else myElement.innerHTML='&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
		}
		myElement = document.getElementById("HDMIcalMonthLabel" + sTag);
		if (myElement)
			myElement.innerHTML = HDMIaMonthName[iMonth-1] + ' ' + iYear;
		
		myElement = document.getElementById("HDMIthisMonth" + sTag);
		if (myElement)
			myElement.value = iMonth;
		myElement = document.getElementById("HDMIthisYear" + sTag);
		if (myElement)
			myElement.value = iYear;

		var myForms = document.forms;
		var myForm;
		for (i=0;i<myForms.length;i++)
		{
			if (myForms[i].name == "HDMI")
			{
				myForm = myForms[i];
				/* cannot use as general form, not specific for calendar
				var myCols = myForms[i].childNodes;
				for (j=0; j<myCols.length; j++)
				{
					if (myCols[j].id == "HDMIcalendartop" + sTag)
					{
						var myRows=myCols[j].rows;
						for (k=0; k<myRows[2].cells[0].childNodes.length; k++)
						{
							if (myRows[2].cells[0].childNodes[k].id == "HDMICalendarCells" + sTag)
							{
								var myCalTab = myRows[2].cells[0].childNodes[k];
								for (w=0; w<myCalTab.rows.length; w++)
								{
									myCells = myCalTab.rows[w].cells; 
									for(d=0; d<myCells.length; d++)
										HDMIobjCalCelArray[w][d] = myCells[d];
								}
							}
						}							
					}
				}*/
				var myCalTab = HDMIMM_findObj('HDMICalendarCells' + sTag)
				for (w=0; w<myCalTab.rows.length; w++)
				{
					myCells = myCalTab.rows[w].cells; 
					for(d=0; d<myCells.length; d++) {
						HDMIobjCalCelArray[w][d] = myCells[d];
					}
				}	
			}
		}
	//}
}

function HDMIpSetcalSelectedDate(sTag, text)
{
	var myForms = document.forms;
	var myForm;
	for (i=0;i<myForms.length;i++) {
		if (myForms[i].name == "HDMI") {
			myCols = myForms[i].elements;
			for (j=0; j<myCols.length; j++) {
				if (myCols[j].name == "HDMIChooseCalendarDate" + sTag) myCols[j].value = text;
			}
		}
	}
}

function HDMIpGetYear(sTag)
{
	var myForms = document.forms;
	var myForm;
	for (i=0;i<myForms.length;i++)
	{
		if (myForms[i].name == "HDMI")
		{
			myCols = myForms[i].elements;
			for (j=0; j<myCols.length; j++)
			{
				if (myCols[j].name == "HDMIthisYear" + sTag)
				{
					return myCols[j].value;
				}
			}
		}
	}
}

function HDMIpGetMonth(sTag)
{
	var myForms = document.forms;
	var myForm;
	for (i=0;i<myForms.length;i++)
	{
		if (myForms[i].name == "HDMI")
		{
			myCols = myForms[i].elements;
			for (j=0; j<myCols.length; j++)
			{
				if (myCols[j].name == "HDMIthisMonth" + sTag)
				{
					return myCols[j].value;
				}
			}
		}
	}
}

function HDMIfNextMonth(sTag, bPopup) {
	var iYear = HDMIpGetYear(sTag);
	var iMonth = parseInt(HDMIpGetMonth(sTag)) + 1;
	if (bPopup) {
		if (bPopup == 'True') HDMIJustChangeMonth = true
	}
	if (iMonth > 12) 
	{
		iMonth=1;
		iYear = parseInt(iYear) + 1;
	}
	HDMIfUpdateCal(sTag, iYear, iMonth);
}

function HDMIfLastMonth(sTag, bPopup) {
	var iYear = HDMIpGetYear(sTag);
	var iMonth = parseInt(HDMIpGetMonth(sTag)) - 1;
	if (bPopup) {
		if (bPopup == 'True') HDMIJustChangeMonth = true
	}
	if (iMonth <= 0) 
	{
		iMonth=12;
		iYear = parseInt(iYear)-1;
	}
	HDMIfUpdateCal(sTag, iYear, iMonth);
}

function HDMIfUpdateCal(sTag, iYear, iMonth) {
	var myElements;
	myMonth = HDMIfBuildCal(iYear, iMonth);
	HDMIobjPrevElement.bgColor = "";
	HDMIfSetValues(sTag, iYear, iMonth);
	for (w = 1; w < 7; w++) {
		for (d = 0; d < 7; d++) {
			/*if (document.all)
			{
				HDMIcalDateText[((7*w)+d)-7].innerText = " ";
				HDMIcalCell[((7*w)+d)-7].bgColor= "";
				if (!isNaN(myMonth[w][d])) {
					myDate = HDMIfGetDate(iYear, iMonth, myMonth[w][d]);
					if (HDMIfGetIndex(HDMIOrderDatesPast, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesPastColor;	
					if (HDMIfGetIndex(HDMIOrderDatesFuture, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesFutureColor;		
					if (HDMIfGetIndex(HDMIOrderDatesFutureDefined, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesFutureDefinedColor;	
					if (HDMIfGetIndex(HDMIOrderDatesFutureAdded, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesFutureAddedColor;					
					if (HDMIfGetIndex(HDMIOrderDatesEmpty, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesEmptyColor;							
					if (HDMIfGetIndex(HDMIOrderDatesCurrent, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesCurrentColor;		
					if (HDMIfGetIndex(HDMIOrderDatesProcessing, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesProcessingColor;	
					if (HDMIfGetIndex(HDMIOrderNoDeliveries, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderNoDeliveriesColor;				
					if (HDMIfGetIndex(HDMIOrderDatesHolidays, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesHolidaysColor;						
					if (HDMIfGetIndex(HDMIOrderDatesStoreHolidays, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesStoreHolidaysColor;	
					if (HDMIfGetIndex(HDMIOrderDatesSubscriptions, myDate) >= 0) HDMIcalCell[((7*w)+d)-7].bgColor = HDMIOrderDatesSubscriptionsColor;
					HDMIcalDateText[((7*w)+d)-7].innerText = myMonth[w][d];
				} else {
					HDMIcalDateText[((7*w)+d)-7].innerText = " ";
	    	}
	    }
			else
			{*/
				myElements = HDMIobjCalCelArray[w][d].childNodes;
				for (k=0; k<myElements.length; k++)
				{
					if (myElements[k].id == "HDMIcalDateText" + sTag)
						myElement = myElements[k];
				}
				HDMIobjCalCelArray[w][d].bgColor= "";
				if (!isNaN(myMonth[w][d])) {
					myDate = HDMIfGetDate(iYear, iMonth, myMonth[w][d]);
					if (HDMIfGetIndex(HDMIOrderDatesPast, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesPastColor;	
					if (HDMIfGetIndex(HDMIOrderDatesFuture, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesFutureColor;		
					if (HDMIfGetIndex(HDMIOrderDatesFutureDefined, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesFutureDefinedColor;	
					if (HDMIfGetIndex(HDMIOrderDatesFutureAdded, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesFutureAddedColor;	
					if (HDMIfGetIndex(HDMIOrderDatesEmpty, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesEmptyColor;							
					if (HDMIfGetIndex(HDMIOrderDatesCurrent, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesCurrentColor;				
					if (HDMIfGetIndex(HDMIOrderDatesProcessing, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesProcessingColor;		
					if (HDMIfGetIndex(HDMIOrderNoDeliveries, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderNoDeliveriesColor;					
					if (HDMIfGetIndex(HDMIOrderDatesHolidays, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesHolidaysColor;									
					if (HDMIfGetIndex(HDMIOrderDatesStoreHolidays, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesStoreHolidaysColor;	
					if (HDMIfGetIndex(HDMIOrderDatesSubscriptions, myDate) >= 0) HDMIobjCalCelArray[w][d].bgColor = HDMIOrderDatesSubscriptionsColor;				
					myElement.innerHTML = myMonth[w][d];
				} else {
					myElement.innerHTML = "&nbsp;";
	    	}
	    /*}*/
  	}
	}
}

var HDMIWhichToSet;
var HDMIDateFormat;
var HDMIShortDateFormat;
var HDMIJustChangeMonth;

HDMIJustChangeMonth = false

function HDMIHideCalendar()
{
	if (!HDMIJustChangeMonth)
	{
	  var Calendar = document.getElementById("HDMICalendar");
  	if (Calendar) 
  		Calendar.style.visibility = "hidden";
	  var CalendarLavel = document.getElementById("HDMICalendarLabel");
	  if (CalendarLavel) CalendarLavel.style.visibility = "hidden";
  }
  HDMIJustChangeMonth = false;
}


function HDMIShowCalendar(sTag, ToSet, DateFormatIn, ShortDateFormatIn)
{
	/*Only tested on IE*/
	HDMIWhichToSet = ToSet;
	HDMIDateFormat = DateFormatIn;
	HDMIShortDateFormat = ShortDateFormatIn;
  var Calendar = document.getElementById("HDMICalendar");
  if (Calendar) 
  {
  	var l, r, t;
  	
		var obj = document.getElementById(ToSet + "Img");
		var t0, l0;
		t0 = 0;
		l0 = 0;
		var parent;
		parent = obj.offsetParent;
		while (parent != null)
		{
	 	t0 = t0 + parent.offsetTop;
	 	l0 = l0 + parent.offsetLeft;
	 	parent = parent.offsetParent;
		}
	 	t = t0 + obj.offsetTop;
		l = l0 + obj.offsetLeft ;
		r = l + obj.offsetWidth;
   	 
		if (document.all)
		{
		 	 Calendar.style.pixelTop = 0
		 	 Calendar.style.pixelLeft = 0
		 	 Calendar.style.pixelTop = t
		 	 Calendar.style.pixelLeft = l;
		}
		else
		{
		 Calendar.style.top = t + "px"
		 Calendar.style.left = l + "px"
		}
     
		var myForms = document.forms;
		var oDate = new Date();
		HDMIOrderDatesProcessing = HDMIfGetDate(oDate.getFullYear(), oDate.getMonth(), oDate.getDate());
		var i, j;
		for (i=0;i<myForms.length;i++)
		{
				myCols = myForms[i].elements;
				for (j=0; j<myCols.length; j++)
				{
					if (myCols[j].name == HDMIWhichToSet)
					{
						var strDate = String(myCols[j].value + '');
						strDate = HDMITrim(strDate);
						var dWantDate;
						if (strDate == '') 
						{
							dWantDate = new Date();
						}
						else
						{
							if (HDMIShortDateFormat == 1)
							{
								var myMonth, myDay, myNewStrDate;
								var iTemp;
								iTemp = 0;
								if (strDate.charAt(1) == '/')
									iTemp = 1;
								else 
								{
									if (strDate.charAt(2) == '/')
										iTemp = 2;
								}
								if (iTemp > 0)
								{
									myDay = strDate.substring(0,iTemp);
									myNewStrDate = strDate.substring(iTemp+1, strDate.length);
									iTemp = 0;
									if (myNewStrDate.charAt(1) == '/')
										iTemp = 1;
									else 
									{
										if (myNewStrDate.charAt(2) == '/')
											iTemp = 2;
									}
									if (iTemp > 0)
									{
										myMonth = myNewStrDate.substring(0,iTemp);
										myNewStrDate = myNewStrDate.substring(iTemp+1, myNewStrDate.length);
										strDate = myMonth + '/' + myDay + '/' + myNewStrDate;
									}
								}
							}
							dWantDate = new Date(strDate);
						}
						HDMIOrderDatesProcessing = [HDMIfGetDate(dWantDate.getFullYear(), dWantDate.getMonth()+1, dWantDate.getDate())];
						HDMIfUpdateCal(sTag, dWantDate.getFullYear(), dWantDate.getMonth()+1);
					}
				}
		}
  	Calendar.style.visibility = "visible";
  }
  var CalendarLavel = document.getElementById("HDMICalendarLabel");
  if (CalendarLavel) CalendarLavel.style.visibility = "visible";
}

function HDMISetDate(year, month, day)
{
	var myForms = document.forms
	for (i=0;i<myForms.length;i++)
	{
			myCols = myForms[i].elements
			for (j=0; j<myCols.length; j++)
			{
				if (myCols[j].name == HDMIWhichToSet)
				{
					/*Default date format is mm/dd/yyyy
					0 - Default
					1 - long date type 1 Weekday Day month year
					2 - long date type 2 Weekday, Month day, year
					-1 - Weekday mm/dd/yyyy
					-2 - dd month yyyy*/
					myCols[j].value = GetHDMIDateFormat(HDMIDateFormat, year, month, day, HDMIShortDateFormat);
				}
			}
	}
  var Calendar = document.getElementById("HDMICalendar");
  if (Calendar) 
  {
  	Calendar.style.visibility = "hidden";
  }
}

function HDMIGetDateFormat(HDMIDateFormat, iYear, iMonth, iDay, HDMIShortDateFormat)
{
	var aWeekday = new Array(7);
	aWeekday[0] = "Sunday";
	aWeekday[1] = "Monday";
	aWeekday[2] = "Tuesday";
	aWeekday[3] = "Wednesday";
	aWeekday[4] = "Thursday";
	aWeekday[5] = "Friday";
	aWeekday[6] = "Saturday";
  var sYear = String(iYear);
  var sMonth = String(iMonth);
  if (iMonth < 10) sMonth = "0" + sMonth;
  var sDay = String(iDay);
  if (iDay < 10 && HDMIDateFormat == 0) sDay = "0" + sDay;
  if (iDay < 10 && HDMIDateFormat == -1) sDay = "0" + sDay;
  oDate = new Date(iYear, iMonth - 1, iDay);
  var sWeekday = aWeekday[oDate.getDay()];
  if (HDMIDateFormat == 1) return sWeekday + ' ' + sDay + ' ' + aMonthName[iMonth-1] + ' ' + sYear;
  if (HDMIDateFormat == 2) return sWeekday + ', ' + aMonthName[iMonth-1] + ' ' + sDay + ', ' + sYear;
  if (HDMIDateFormat == -1) return sWeekday + ' ' + HDMIGetShortDateFormat(sYear, sMonth, sDay, HDMIShortDateFormat);
  if (HDMIDateFormat == -2) return sDay + ' ' + aMonthName[iMonth-1] + ' ' + sYear;
  if (HDMIDateFormat == -3) return aMonthName[iMonth-1] + ' ' + sDay + ', ' + sYear;
  return HDMIGetShortDateFormat(sYear, sMonth, sDay, HDMIShortDateFormat);
}

function HDMIGetShortDateFormat(sYear, sMonth, sDay, HDMIShortDateFormat)
{ 
  if (HDMIShortDateFormat == 2) return sYear + '/' + sMonth + '/' + sDay;
  if (HDMIShortDateFormat == 1) return sDay + '/' + sMonth + '/' + sYear;  
  return sMonth + '/' + sDay + '/' + sYear;
}

/* Helper functions*/

function HDMITrim(TRIM_VALUE){
	if(TRIM_VALUE.length < 1){
		return"";
	}
	TRIM_VALUE = HDMIRTrim(TRIM_VALUE);
	TRIM_VALUE = HDMILTrim(TRIM_VALUE);
	if(TRIM_VALUE==""){
		return "";
	}
	else{
		return TRIM_VALUE;
	}
} //End Function

function HDMIRTrim(VALUE){
	var w_space = String.fromCharCode(32);
	var v_length = VALUE.length;
	var strTemp = "";
	if(v_length < 0){
		return"";
	}
	var iTemp = v_length -1;

	while(iTemp > -1){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
			strTemp = VALUE.substring(0,iTemp +1);
			break;
		}
		iTemp = iTemp-1;

	} //End While
	return strTemp;

} //End Function

function HDMILTrim(VALUE){
	var w_space = String.fromCharCode(32);
	if(v_length < 1){
		return"";
	}
	var v_length = VALUE.length;
	var strTemp = "";

	var iTemp = 0;

	while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
			strTemp = VALUE.substring(iTemp,v_length);
			break;
		}
		iTemp = iTemp + 1;
	} //End While
	return strTemp;
} //End Function


function dateAddExtention(p_Interval, p_Number){ 


   var thing = new String(); 
    
    
   //in the spirt of VB we'll make this function non-case sensitive 
   //and convert the charcters for the coder. 
   p_Interval = p_Interval.toLowerCase(); 
    
   if(isNaN(p_Number)){ 
    
      //Only accpets numbers  
      //throws an error so that the coder can see why he effed up    
      throw "The second parameter must be a number. \n You passed: " + p_Number; 
      return false; 
   } 

   p_Number = new Number(p_Number); 
   switch(p_Interval.toLowerCase()){ 
      case "yyyy": {// year 
         this.setFullYear(this.getFullYear() + p_Number); 
         break; 
      } 
      case "q": {      // quarter 
         this.setMonth(this.getMonth() + (p_Number*3)); 
         break; 
      } 
      case "m": {      // month 
         this.setMonth(this.getMonth() + p_Number); 
         break; 
      } 
      case "y":      // day of year 
      case "d":      // day 
      case "w": {      // weekday 
         this.setDate(this.getDate() + p_Number); 
         break; 
      } 
      case "ww": {   // week of year 
         this.setDate(this.getDate() + (p_Number*7)); 
         break; 
      } 
      case "h": {      // hour 
         this.setHours(this.getHours() + p_Number); 
         break; 
      } 
      case "n": {      // minute 
         this.setMinutes(this.getMinutes() + p_Number); 
         break; 
      } 
      case "s": {      // second 
         this.setSeconds(this.getSeconds() + p_Number); 
         break; 
      } 
      case "ms": {      // second 
         this.setMilliseconds(this.getMilliseconds() + p_Number); 
         break; 
      } 
      default: { 
       
         //throws an error so that the coder can see why he effed up and 
         //a list of elegible letters. 
         throw   "The first parameter must be a string from this list: \n" + 
               "yyyy, q, m, y, d, w, ww, h, n, s, or ms.  You passed: " + p_Interval; 
         return false; 
      } 
   } 
   return this; 
} 

Date.prototype.dateAdd = dateAddExtention; 

function getNumberDays(iMonth) {

	var dtDate = new Date()
	dtDate.setFullYear(dtDate.getYear(),iMonth,1);
	dtDate.dateAdd('m', 1)
	dtDate.dateAdd('d', -1)
	return dtDate.getDate()
}

function HDMIToggleCheck(FieldName) {
	var obj = HDMIMM_findObj(FieldName)
	if (obj) {
		if (obj.value == "on") obj.value=""
		else obj.value = "on"
	}
}

function HDMIToggleVisibility(FieldName) {
	var obj = HDMIMM_findObj(FieldName)
	if (obj) {
		if (obj.style.visibility == "visible") {
			obj.style.visibility="hidden"
			obj.style.display="none"
		}
		else {
			obj.style.visibility = "visible"
			obj.style.display="block"
		}
	}
}

function HDMITestJavaScriptOn() {
	alert('JavaScript alert')
}


