<!-- <( UTILITIES.JS )> [22 APR 2003]

/* fncFindDom
 * =====================
 * Returns the dom dependant on the browser type
 *
 * Return value:
 * none
 *
 * Parameters:
 * strId - string object id
 * blnStyle - boolean return with .style
 */

 function fncFindDom(strId,blnStyle) {
   if (blnStyle) {
     if (objClient.dom) return (document.getElementById(strId).style);
	 else if (objClient.ie) return (document.all[strId].style);
             else if (objClient.ns) return (document.layers[strId]);
   } else {
     if (objClient.dom) return (document.getElementById(strId));
	 else if (objClient.ie) return (document.all[strId].style);
             else if (objClient.ns) return (document.layers[strId]);
   }
 }
 
/* fncOpenWindow
 * =====================
 * Opens a new popup window with passed parameters, focus
 *
 * Return value:
 * none
 *
 * Parameters:
 * strURL - string URL in new window
 * strName - string window name
 * strFeatures - string window features
 */
 
 function fncOpenWindow(strURL,strName,intWidth,intHeight,strFeatures) {
   var intLeft = (screen.width/2)-(intWidth/2);
   var intTop = (screen.height/2)-(intHeight/2);
   var winPopup = window.open(strURL,strName,"width="+intWidth+",height="+intHeight+","+strFeatures+",left="+intLeft+",top="+intTop);
   winPopup.focus();
   return winPopup;
 }
 

/* fncPreloadImg
 * =====================
 * Preloads specified image (image object, image source)
 *
 * Return value:
 * none
 *
 * Parameters:
 * strImgObj - string image object
 * strImgSrc - string image source
 */
 
 function fncPreloadImg(strImgObj,strImgSrc) {
   if (document.images) {
     eval(strImgObj+' = new Image();');
     eval(strImgObj+'.src = "'+strImgSrc+'";');
   }
 }
 
/* fncPreloadImgs
 * =====================
 * Preloads specified images (image array, pairs - image object, image source)
 * sets global gBlnPreloaded to true when complete
 *
 * Return value:
 * none
 *
 * Parameters:
 * array of images in pairs (image object, image source)
 */
 
 // global var set to false until all images are loaded
 var gBlnPreloaded = false;
 
 function fncPreloadImgs() {
   if (document.images) {
     var intImgLength = arguments.length;
     for (var x=0; x<intImgLength; x+=2) {
       var strImgObj = arguments[x];
       var strImgSrc = arguments[x+1];
       fncPreloadImg(strImgObj,strImgSrc);
     }
     gBlnPreloaded = true;
   }
 }
 
/* fncImgRoll
 * =====================
 * Changes specified images (image over, image out)
 *
 * Return value:
 * none
 *
 * Parameters:
 * strImgName - string image over
 * strImgOut - string image out
 */
 
 function fncImgRoll(strImgName,strImgOut) {
   if (document.images && (gBlnPreloaded == true)) {
     document[strImgName].src = strImgOut;
   }
 }
 
/* fncLoadStyles
 * =====================
 * Loads style sheets based on platform/browser
 *
 * Return value:
 * none
 *
 * Parameters:
 * none
 */
 
 function fncLoadStyles() {
   if (objClient.css1) document.write("<link href='"+gstrCSSPath+"global.css' rel='stylesheet' type='text/css'>");
   if (objClient.ns && objClient.win) document.write("<link href='"+gstrCSSPath+"nswin.css' rel='stylesheet' type='text/css'>");
   return true;
 }
 
/* fncWriteHTML
 * =====================
 * Writes HTML to div
 *
 * Return value:
 * none
 *
 * Parameters:
 * strObj - string layer object
 * strHTML - string HTML to replace
 */
 
 function fncWriteHTML(strObj,strHTML) {
   var obj = fncFindDom(strObj,0);
   obj.innerHTML = strHTML;
 }

/* fncHandleMouseEvents
 * =====================
 * Function to capture mouse events and set functions
 *
 * Return value:
 * none
 *
 * Parameters:
 * none
 */

 function fncHandleMouseEvents(){
   if (objClient.ns4up) {
     window.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP); 
	 window.onmousemove = fncMousePosition;
   }
   if (objClient.ns4up) {
     document.onmousemove = fncMousePosition;
   }
 }

/* fncMousePosition
 * =====================
 * Function to capture mouse position
 *
 * Return value:
 * none
 *
 * Parameters:
 * eventNS - mouse event passed in ns
 */

 var mouseX = '';
 var mouseY = '';
 function fncMousePosition(eventNS) {
   if (objClient.ns4up) {
     mouseX = eventNS.pageX;
	 mouseY = eventNS.pageY;
   } else {
     mouseX = document.body.scrollLeft + eval(event.clientX);
	 mouseY = document.body.scrollTop + eval(event.clientY);
   }
 }

/* fncScrollPosition
 * =====================
 * Returns current scroll position of the window (top or left)
 *
 * Return value:
 * specified scroll position
 *
 * Parameters:
 * blnLeftTop - bool find window left or top scroll position (true = left/ false = top)
 */
 
 function fncScrollPosition(blnLeftTop) {
   if (objClient.ns4up) {
     if (blnLeftTop) return window.pageXOffset;
	 else return window.pageYOffset;
   } else {
     if (blnLeftTop) return document.body.scrollLeft;
	 else return document.body.scrollTop;
   }
 }
 
/* fncElementPosition
 * =====================
 * Returns elements position (including offset of scroll position of the window (top or left))
 *
 * Return value:
 * specified elements position
 *
 * Parameters:
 * objElement - object element or layer
 * strLftTpRghtBttm - element left, top, right, bottom coordinates (enter as -> l,t,r,b)
 */

 function fncElementPosition(objElement,strLftTpRghtBttm) {
   // set scroll pos in vars, if main menu moves relative to scroll position (var menuRelAbs -> set in html) is true
   var scrollPosX = (menuRelAbs)?fncScrollPosition(true):0;
   var scrollPosY = (menuRelAbs)?fncScrollPosition(false):0;
   if (objClient.ns4up) {
	 if (strLftTpRghtBttm == 'l') return (objElement.left+scrollPosX);
	 else if (strLftTpRghtBttm == 't') return (objElement.top+scrollPosY);
	 // NOTE: ns returns value including borders for bottom coordinate, ie does not
	 // NOTE: ns will not calculate width or height of dynamic layer (must add manually)
	 else if (strLftTpRghtBttm == 'r') return (objElement.document.width+objElement.left+scrollPosX);
	 else if (strLftTpRghtBttm == 'b') return (objElement.document.height+objElement.top+scrollPosY);
   } else {
     if (strLftTpRghtBttm == 'l') return (objElement.style.pixelLeft+scrollPosX);
	 else if (strLftTpRghtBttm == 't') return (objElement.style.pixelTop+scrollPosY);
	 else if (strLftTpRghtBttm == 'r') return (objElement.clientWidth+objElement.style.pixelLeft+scrollPosX);
	 else if (strLftTpRghtBttm == 'b') return (objElement.clientHeight+objElement.style.pixelTop+scrollPosY);
   }
 }
 
/* fncElementPosition
 * =====================
 * Returns elements position (including offset of scroll position of the window (top or left))
 *
 * Return value:
 * specified elements position
 *
 * Parameters:
 * objElement - object element or layer
 */
 
 //init global vars to find current element position
 var curElementLeft = 0, curElementTop = 0, curElementRight = 0, curElementBot = 0;
 function fncSetElementsPosition(objElement) {
   curElementLeft = fncElementPosition(objElement,'l');
   curElementTop = fncElementPosition(objElement,'t');
   curElementRight = fncElementPosition(objElement,'r');
   curElementBot = fncElementPosition(objElement,'b');
 }
 
/* fncTableCellLinkOver/Out
 * =====================
 * changes an elements background color and cursor
 *
 * Return value:
 * none
 *
 * Parameters:
 * objElement - object element or layer
 * strColor - string background color
 */
	
 function fncTableCellOver(objElement,strColor) {
    objElement.style.backgroundColor=strColor;
    objElement.style.cursor = "hand";
 }
	
 function fncTableCellOut(objElement,strColor) {
    objElement.style.backgroundColor=strColor;
    objElement.style.cursor = "default";
 }
 
/* fncGoUrl
 * =====================
 * Changes an elements background color and cursor
 *
 * Return value:
 * none
 *
 * Parameters:
 * strUrl - string url
 */
	
 function fncGoUrl(strUrl) {
	window.location = strUrl;
 }

/* fncHighlightContent
 * =====================
 * Highlights content in a textarea or input [text] object 
 *
 * Return value:
 * none
 *
 * Parameters:
 * strForm - string object form name
 * strObj - string object textarea name
 */
 
function fncHighlightContent(strForm,strObj) {
    var obj = eval("document."+strForm+"."+strObj);
    obj.select();
    obj.focus();
}

/* fncCopyContent
 * =====================
 * Copies content from a textarea or input [text] to the clipboard [IE only]
 *
 * Return value:
 * none
 *
 * Parameters:
 * strForm - string object form name
 * strObj - string object textarea name
 */
 
 function fncCopyContent(strForm,strObj) {
    var obj = fncFindDom(strObj,0);
    highlightContent(strForm,strObj);
    textRange = obj.createTextRange();
    textRange.execCommand("RemoveFormat");
    textRange.execCommand("Copy");
    // alert("The content has been copied to your clipboard.\nUse 'CTRL-V' to paste the text.");
 } 
 
/* ============================================
 * Layer function control 
 * ============================================ */
 
/* fncToggleLayer
 * =====================
 * Shows/hides layer passed in not removing space
 *
 * Return value:
 * none
 *
 * Parameters:
 * objElement - object element or layer
 */
 
 function fncToggleLayer(strLayer) {
    var objLayer = fncFindDom(strLayer,1);
    if (objLayer.visibility == "hide" || objLayer.visibility == "hidden") {
        objLayer.visibility = "visible";
    } else {
        objLayer.visibility = "hidden";
    }
 }
 
/* fncToggleBlockLayer
 * =====================
 * Shows/hides layer passed in removing space taken up [IE 5+, NS 6+]
 *
 * Return value:
 * none
 *
 * Parameters:
 * objElement - object element or layer
 */
 
 function fncToggleBlockLayer(strLayer) {
    var objLayer = fncFindDom(strLayer,1);
    if (objLayer.display == "none") {
        objLayer.display = "block";
    } else {
        objLayer.display = "none";
    }
 }
  
 
/* ============================================
 * String checking functions pre-RegEx browsers 
 * ============================================ */

/* fncIsAlpha
 * =====================
 * Checks if string is only alpha characters
 *
 * Return value:
 * true/false
 *
 * Parameters:
 * strString - string passed to test
 */
 
 var straCode = new String('a').charCodeAt(0);
 var strACode = new String('A').charCodeAt(0);
 var strzCode = new String('z').charCodeAt(0);
 var strZCode = new String('Z').charCodeAt(0);
 
 function fncIsAlpha(strString) {
   var alpha = true;
   for (x=0; x<strString.length; x++) {
     var charStr = strString.charAt(x);
	 var charCode = charStr.charCodeAt(0);
	 if (charStr == "" || (charCode >= straCode && charCode <= strzCode) || (charCode >= strACode && strZCode)) {
	 } else { alpha = false; }
   }
   return alpha;
 }
 
/* fncIsNumeric
 * =====================
 * Checks if string is only numeric characters
 *
 * Return value:
 * true/false
 *
 * Parameters:
 * strString - string passed to test
 */
 
 function fncIsNumeric(strString) {
   for (x=0; x<strString.length; x++) {
     var charStr = strString.charAt(x);
	 if (isNaN(parseInt(charStr))) return false;
   }
   return true;
 }
 
/* fncIsAlphaNumeric
 * =====================
 * Checks if string is only numeric characters
 *
 * Return value:
 * true/false
 *
 * Parameters:
 * strString - string passed to test
 */
 
 function fncIsAlphaNumeric(strString) {
   for (x=0; x<strString.length; x++) {
     if (!fncIsAlpha(strString.charAt(x)) && !fncIsNumeric(strString.charAt(x)))
	   return false;
   }
   return true;
 }
 
/* fncIsBlank
 * =====================
 * Checks if string is empty
 *
 * Return value:
 * true/false
 *
 * Parameters:
 * strString - string passed to test
 */
 
 function fncIsBlank(strString) {
   if (strString == '' || strString == ' ' || strString == '\t' || strString == '\n') return true;
   return false;
 }
 
// end hide -->
























 var bName = navigator.appName;
 var bVer = parseInt(navigator.appVersion);
 var NS6 = (bName == "Netscape" && bVer >= 5);
 var NS4 = (bName == "Netscape" && bVer >= 4 && bVer < 5);
 var IE4 = (bName == "Microsoft Internet Explorer" && bVer >= 4);
 var NS3 = (bName == "Netscape" && bVer < 4);
 var IE3 = (bName == "Microsoft Internet Explorer" && bVer < 4);
 window.onerror = null;
 var menuActive = 0
 var menuOn = 0
 var onLayer
 var StartTimeOn = null;
 var timeOn = null // LAYER SWITCHING CODE
 if (NS4 || IE4 || NS6) {
	 if (navigator.appName == "Netscape" && !document.getElementById){
	 layerStyleRef="layer.";
	 layerRef="document.layers";
	 styleSwitch="";
	 /*layerVis="show";
	 layerHid="hide";*/
	 }
	 else if (!document.all && document.getElementById) {
	 layerStyleRef="layer.style.";
	 layerRef="document.getElementById";
	 styleSwitch=".style";
	 /*layerVis="visible";
	 layerHid="hidden";*/
	 }
	 else {
	 layerStyleRef="layer.style.";
	 layerRef="document.all";
	 styleSwitch=".style";
	 /*layerVis="visible";
	 layerHid="hidden";*/
	 }
	layerVis="";
	layerHid="none";

 }

// SHOW MENU TIMER

function shLayerTimer(layerName){
	//layerName)",2000)
	//eval(setTimeout + '"shLayer())')
	//if (StartTimeOn==null)
	//	{
	//		StartTimeOn = 1;
	//		setTimeout("shLayer('"+layerName+"')", 1000);
	//	}
	//else
	//{
	  shLayer(layerName);
	// }
}

// SHOW MENU
function shLayer(layerName){
 img = getImage("img"+layerName);
 x = getImagePageLeft(img);
 y = getImagePageTop(img);
 menuTop = y + 35 ; // LAYER TOP POSITION
 CompanyL = x + 1 ; // 'Company' LAYER LEFT POSITION
 SolutionsL = x + 100 ;  // 'Solutions' LAYER LEFT POSITION
 NewsL = x + 201 ;  // 'News' LAYER LEFT POSITION
 CustomersL = x + 268 ;  // 'Customers' LAYER LEFT POSITION
 PartnersL = x + 370 ;  // 'Partners' LAYER LEFT POSITION
 SupportL = x + 462 ;  // 'Support' LAYER LEFT POSITION
 ContactL = x + 547 ;  // 'Contact' LAYER LEFT POSITION
if (NS4 || IE4 || NS6) {
 if (timeOn != null) {
 clearTimeout(timeOn)
 hideLayer(onLayer)
 }
 if (NS4 || IE4) {
 eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.display="'+layerVis+'"');
 eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.top="'+menuTop+'"');
 eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.left=x');
 }
 if (NS6) {
 eval(layerRef+'("'+layerName+'")'+styleSwitch+'.display="'+layerVis+'"');
 eval(layerRef+'("'+layerName+'")'+styleSwitch+'.top="'+menuTop+'"');
 eval(layerRef+'("'+layerName+'")'+styleSwitch+'.left=x');
 }
 onLayer = layerName
 }
}

// HIDE MENU
function hideLayer(layerName){
// StartTimeOn = null;
 if (menuActive == 0) {
 if (NS4 || IE4) {
 eval(layerRef+'["'+layerName+'"]'+styleSwitch+'.display="'+layerHid+'"');
 }
 if (NS6) {
 eval(layerRef+'("'+layerName+'")'+styleSwitch+'.display="'+layerHid+'"');
 }
 }
}// TIMER FOR BUTTON MOUSE OUT
function btnTimer() {
 timeOn = setTimeout("btnOut()",1000)
}// BUTTON MOUSE OUT
function btnOut(layerName) {
 if (menuActive == 0) {
 hideLayer(onLayer)
 }
}// MENU MOUSE OVER
function menuOver(itemName) {
 clearTimeout(timeOn)
 menuActive = 1
}// MENU MOUSE OUT
function menuOut(itemName) {
 menuActive = 0
 timeOn = setTimeout("hideLayer(onLayer)", 400)

 }// SET BACKGROUND COLOR
function setBgColor(layer, color) {
  if (NS6){
    eval('document.getElementById("'+layer+'").style.backgroundColor="'+color+'"');
  }
  else if (NS4){
    eval('window.document.layers["'+layer+'"].document.bgColor="'+color+'"');
	eval('window.document.layers["'+layer+'"].saveColor="'+color+'"');
  }
  else if (IE4){
    eval('document.all.'+layer+'.style.backgroundColor="'+color+'"');
  }
}

function getImage(name) {
  if (NS4 || NS6) {
    return findImage(name, document);
  }
  if (IE4 || NS6)
    return eval('document.all.' + name);
  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 (NS4 || NS6) {
    if (img.container != null)
      return img.container.pageX + img.x - 1;
    else
      return img.x - 1;
  }*/
  //if (IE4) {
    x = 0;
    obj = img;
    while (obj.offsetParent != null) {
      x += obj.offsetLeft;
      obj = obj.offsetParent;
    }
    x += obj.offsetLeft;
    return x;
  //}
  return -1;
}

function getImagePageTop(img) {
  var y, obj;
  /*if (NS4 || NS6) {
    if (img.container != null)
      return img.container.pageY + img.y;
    else
      return img.y;
  }
  if (IE4) {*/
    y = 0;
    obj = img;
    while (obj.offsetParent != null) {
      y += obj.offsetTop;
      obj = obj.offsetParent;
    }
    y += obj.offsetTop;
    return y;
  //}
  return -1;
}












































var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 2;

var gNow = new Date();
var ggWinCal;
isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false;
isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_WinCal, p_month, p_year, p_format) {
	if ((p_month == null) && (p_year == null))	return;

	if (p_WinCal == null)
		this.gWinCal = ggWinCal;
	else
		this.gWinCal = p_WinCal;
	
	if (p_month == null) {
		this.gMonthName = null;
		this.gMonth = null;
		this.gYearly = true;
	} else {
		this.gMonthName = Calendar.get_month(p_month);
		this.gMonth = new Number(p_month);
		this.gYearly = false;
	}

	this.gYear = p_year;
	this.gFormat = p_format;
	this.gBGColor = "white";
	this.gFGColor = "black";
	this.gTextColor = "black";
	this.gHeaderColor = "black";
	this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;
Calendar.print = Calendar_print;

function Calendar_get_month(monthNo) {
	return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
	/* 
	Check for leap year ..
	1.Years evenly divisible by four are normally leap years, except for... 
	2.Years also evenly divisible by 100 are not leap years, except for... 
	3.Years also evenly divisible by 400 are leap years. 
	*/
	if ((p_year % 4) == 0) {
		if ((p_year % 100) == 0 && (p_year % 400) != 0)
			return Calendar.DOMonth[monthNo];
	
		return Calendar.lDOMonth[monthNo];
	} else
		return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

function Calendar_print() {
	ggWinCal.print();
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
	/* 
	Will return an 1-D array with 1st element being the calculated month 
	and second being the calculated year 
	after applying the month increment/decrement as specified by 'incr' parameter.
	'incr' will normally have 1/-1 to navigate thru the months.
	*/
	var ret_arr = new Array();
	
	if (incr == -1) {
		// B A C K W A R D
		if (p_Month == 0) {
			ret_arr[0] = 11;
			ret_arr[1] = parseInt(p_Year) - 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) - 1;
			ret_arr[1] = parseInt(p_Year);
		}
	} else if (incr == 1) {
		// F O R W A R D
		if (p_Month == 11) {
			ret_arr[0] = 0;
			ret_arr[1] = parseInt(p_Year) + 1;
		}
		else {
			ret_arr[0] = parseInt(p_Month) + 1;
			ret_arr[1] = parseInt(p_Year);
		}
	}
	
	return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
	var vCode = "";
	var vHeader_Code = "";
	var vData_Code = "";
	
	// Begin Table Drawing code here..
	vCode = vCode + "<TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\">";
	
	vHeader_Code = this.cal_header();
	vData_Code = this.cal_data();
	vCode = vCode + vHeader_Code + vData_Code;
	
	vCode = vCode + "</TABLE>";
	
	return vCode;
}

Calendar.prototype.show = function() {
	var vCode = "";
	
	this.gWinCal.document.open();

	// Setup the page...
	this.wwrite("<html>");
	this.wwrite("<head><title>Calendar</title>");
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwriteA("<FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwriteA(this.gMonthName + " " + this.gYear);
	this.wwriteA("</B><BR>");

	// Show navigation buttons
	var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
	var prevMM = prevMMYYYY[0];
	var prevYYYY = prevMMYYYY[1];

	var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
	var nextMM = nextMMYYYY[0];
	var nextYYYY = nextMMYYYY[1];
	this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem.replace(/'/g, "\\'") + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
		");" +
		"\"><<<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem.replace(/'/g, "\\'") + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\"><<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem.replace(/'/g, "\\'") + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\">><\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem.replace(/'/g, "\\'") + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
		");" +
		"\">>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for the month..
	vCode = this.getMonthlyCalendarCode();
	this.wwrite(vCode);

	this.wwrite("</font></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.showY = function() {
	var vCode = "";
	var i;
	var vr, vc, vx, vy;		// Row, Column, X-coord, Y-coord
	var vxf = 285;			// X-Factor
	var vyf = 200;			// Y-Factor
	var vxm = 10;			// X-margin
	var vym;				// Y-margin
	if (isIE)	vym = 75;
	else if (isNav)	vym = 25;
	
	this.gWinCal.document.open();

	this.wwrite("<html>");
	this.wwrite("<head><title>Calendar</title>");
	this.wwrite("<style type='text/css'>\n<!--");
	for (i=0; i<12; i++) {
		vc = i % 3;
		if (i>=0 && i<= 2)	vr = 0;
		if (i>=3 && i<= 5)	vr = 1;
		if (i>=6 && i<= 8)	vr = 2;
		if (i>=9 && i<= 11)	vr = 3;
		
		vx = parseInt(vxf * vc) + vxm;
		vy = parseInt(vyf * vr) + vym;

		this.wwrite(".lclass" + i + " {position:absolute;top:" + vy + ";left:" + vx + ";}");
	}
	this.wwrite("-->\n</style>");
	this.wwrite("</head>");

	this.wwrite("<body " + 
		"link=\"" + this.gLinkColor + "\" " + 
		"vlink=\"" + this.gLinkColor + "\" " +
		"alink=\"" + this.gLinkColor + "\" " +
		"text=\"" + this.gTextColor + "\">");
	this.wwrite("<FONT FACE='" + fontface + "' SIZE=2><B>");
	this.wwrite("Year : " + this.gYear);
	this.wwrite("</B><BR>");

	// Show navigation buttons
	var prevYYYY = parseInt(this.gYear) - 1;
	var nextYYYY = parseInt(this.gYear) + 1;
	
	this.wwrite("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0'><TR><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\" alt='Prev Year'><<<\/A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"javascript:window.print();\">Print</A>]</TD><TD ALIGN=center>");
	this.wwrite("[<A HREF=\"" +
		"javascript:window.opener.Build(" + 
		"'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
		");" +
		"\">>><\/A>]</TD></TR></TABLE><BR>");

	// Get the complete calendar code for each month..
	var j;
	for (i=11; i>=0; i--) {
		if (isIE)
			this.wwrite("<DIV ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");
		else if (isNav)
			this.wwrite("<LAYER ID=\"layer" + i + "\" CLASS=\"lclass" + i + "\">");

		this.gMonth = i;
		this.gMonthName = Calendar.get_month(this.gMonth);
		vCode = this.getMonthlyCalendarCode();
		this.wwrite(this.gMonthName + "/" + this.gYear + "<BR>");
		this.wwrite(vCode);

		if (isIE)
			this.wwrite("</DIV>");
		else if (isNav)
			this.wwrite("</LAYER>");
	}

	this.wwrite("</font><BR></body></html>");
	this.gWinCal.document.close();
}

Calendar.prototype.wwrite = function(wtext) {
	this.gWinCal.document.writeln(wtext);
}

Calendar.prototype.wwriteA = function(wtext) {
	this.gWinCal.document.write(wtext);
}

Calendar.prototype.cal_header = function() {
	var vCode = "";
	
	vCode = vCode + "<TR>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='14%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
	vCode = vCode + "<TD WIDTH='16%'><FONT SIZE='2' FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
	vCode = vCode + "</TR>";
	
	return vCode;
}

Calendar.prototype.cal_data = function() {
	var vDate = new Date();
	vDate.setDate(1);
	vDate.setMonth(this.gMonth);
	vDate.setFullYear(this.gYear);

	var vFirstDay=vDate.getDay();
	var vDay=1;
	var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
	var vOnLastDay=0;
	var vCode = "";

	/*
	Get day for the 1st of the requested month/year..
	Place as many blank cells before the 1st day of the month as necessary. 
	*/

	vCode = vCode + "<TR>";
	for (i=0; i<vFirstDay; i++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT SIZE='2' FACE='" + fontface + "'> </FONT></TD>";
	}

	// Write rest of the 1st week
	for (j=vFirstDay; j<7; j++) {
		vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
			"<A HREF=\"JavaScript: self.opener.document." + this.gReturnItem + ".value='" + this.format_data(vDay) + 	"';window.close();\">" + 
				this.format_day(vDay) + 
			"</A>" + 
			"</FONT></TD>";
		vDay=vDay + 1;
	}
	vCode = vCode + "</TR>";

	// Write the rest of the weeks
	for (k=2; k<7; k++) {
		vCode = vCode + "<TR>";

		for (j=0; j<7; j++) {
		//
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT SIZE='2' FACE='" + fontface + "'>" + 
				"<A HREF=\"JavaScript:self.opener.document." + this.gReturnItem + ".value='" + this.format_data(vDay) + "';window.close();\">" + 
				this.format_day(vDay) + 
				"</A>" + 
				"</FONT></TD>";
			vDay=vDay + 1;

			if (vDay > vLastDay) {
				vOnLastDay = 1;
				break;
			}
		}

		if (j == 6)
			vCode = vCode + "</TR>";
		if (vOnLastDay == 1)
			break;
	}
	
	// Fill up the rest of last week with proper blanks, so that we get proper square blocks
	for (m=1; m<(7-j); m++) {
		if (this.gYearly)
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
		else
			vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) + 
			"><FONT SIZE='2' FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
	}
	
	return vCode;
}

Calendar.prototype.format_day = function(vday) {
	var vNowDay = gNow.getDate();
	var vNowMonth = gNow.getMonth();
	var vNowYear = gNow.getFullYear();

	if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
		return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
	else
		return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
	var i;

	// Return special formatting for the weekend day.
	for (i=0; i<weekend.length; i++) {
		if (vday == weekend[i])
			return (" BGCOLOR=\"" + weekendColor + "\"");
	}
	
	return "";
}

Calendar.prototype.format_data = function(p_day) {
	var vData;
	var vMonth = 1 + this.gMonth;
	vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
	var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
	var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
	var vY4 = new String(this.gYear);
	var vY2 = new String(this.gYear.substr(2,2));
	var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;
	//this.gFormat = "YYYY-MM-DD";
    switch (this.gFormat) {
		case "MM\/DD\/YYYY" :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
			break;
		case "MM\/DD\/YY" :
			vData = vMonth + "\/" + vDD + "\/" + vY2;
			break;
		case "MM-DD-YYYY" :
			vData = vMonth + "-" + vDD + "-" + vY4;
			break;
		case "MM-DD-YY" :
			vData = vMonth + "-" + vDD + "-" + vY2;
			break;

		case "DD\/MON\/YYYY" :
			vData = vDD + "\/" + vMon + "\/" + vY4;
			break;
		case "DD\/MON\/YY" :
			vData = vDD + "\/" + vMon + "\/" + vY2;
			break;
		case "DD-MON-YYYY" :
			vData = vDD + "-" + vMon + "-" + vY4;
			break;
		case "DD-MON-YY" :
			vData = vDD + "-" + vMon + "-" + vY2;
			break;

		case "DD\/MONTH\/YYYY" :
			vData = vDD + "\/" + vFMon + "\/" + vY4;
			break;
		case "DD\/MONTH\/YY" :
			vData = vDD + "\/" + vFMon + "\/" + vY2;
			break;
		case "DD-MONTH-YYYY" :
			vData = vDD + "-" + vFMon + "-" + vY4;
			break;
		case "DD-MONTH-YY" :
			vData = vDD + "-" + vFMon + "-" + vY2;
			break;

		case "DD\/MM\/YYYY" :
			vData = vDD + "\/" + vMonth + "\/" + vY4;
			break;
		case "DD\/MM\/YY" :
			vData = vDD + "\/" + vMonth + "\/" + vY2;
			break;
		case "DD-MM-YYYY" :
			vData = vDD + "-" + vMonth + "-" + vY4;
			break;
		case "YYYY-MM-DD" :
			vData = vY4 + "-" + vMonth + "-" + vDD;
			break;
		case "DD-MM-YY" :
			vData = vDD + "-" + vMonth + "-" + vY2;
			break;

		default :
			vData = vMonth + "\/" + vDD + "\/" + vY4;
	}

	return vData;
}

function Build(p_item, p_month, p_year, p_format) {
	var p_WinCal = ggWinCal;
	gCal = new Calendar(p_item, p_WinCal, p_month, p_year, p_format);

	// Customize your Calendar here..
	gCal.gBGColor="white";
	gCal.gLinkColor="black";
	gCal.gTextColor="black";
	gCal.gHeaderColor="darkgreen";

	// Choose appropriate show function
	if (gCal.gYearly)	gCal.showY();
	else	gCal.show();
}

function show_calendar() {
	/* 
		p_item	: Return Item.
		p_month : 0-11 for Jan-Dec; 12 for All Months.
		p_year	: 4-digit year
		p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
	*/

	p_item = arguments[0];
	if (arguments[1] == null)
		p_month = new String(gNow.getMonth());
	else
		p_month = arguments[1];
	if (arguments[2] == "" || arguments[2] == null)
		p_year = new String(gNow.getFullYear().toString());
	else
		p_year = arguments[2];
	if (arguments[3] == null)
		p_format = "MM/DD/YYYY";
	else
		p_format = arguments[3];

	vWinCal = window.open("", "Calendar", 
		"width=250,height=250,status=no,resizable=no,top=200,left=200");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, p_month, p_year, p_format);
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar(p_item, p_year, p_format) {
	// Load the defaults..
	if (p_year == null || p_year == "")
		p_year = new String(gNow.getFullYear().toString());
	if (p_format == null || p_format == "")
		p_format = "MM/DD/YYYY";

	var vWinCal = window.open("", "Calendar", "scrollbars=yes");
	vWinCal.opener = self;
	ggWinCal = vWinCal;

	Build(p_item, null, p_year, p_format);
}













































function LookOnlyDefault(frm_name){
	if(document.forms[frm_name].search_IS_DEFAULT.checked === true){
		document.forms[frm_name].search_NAME_EN.disabled = true;
		document.forms[frm_name].search_TAG.disabled = true;
		document.forms[frm_name].search_ENABLED.disabled = true;
	}
	else{
		document.forms[frm_name].search_NAME_EN.disabled = false;
		document.forms[frm_name].search_TAG.disabled = false;
		document.forms[frm_name].search_ENABLED.disabled = false;
	}
}

function apply_rich_editor_text(frm_name, field_name)

{
	if (typeof(save_in_textarea_all)!='undefined' && (typeof(text_areas_already_saved) == 'undefined'))
		{
			text_areas_already_saved = true;
			save_in_textarea_all();
		}
	return '';
}

function check_text_mandatory(frm_name, field_name, field_caption)
{
	apply_rich_editor_text(frm_name, field_name);
	if ((typeof(FCKeditorAPI) != 'undefined')  && (instance = FCKeditorAPI.GetInstance(field_name)))
	 {
  		if (instance.GetHTML()=='')
			{
				return '"' + field_caption + '" is mandatory \n';
	   		}
	 }
	else
	if (typeof(document.forms[frm_name].elements[field_name])=='undefined')
		return '';
	else
	if ((typeof(document.forms[frm_name].elements[field_name].value) != 'undefined') &&
		(typeof(document.forms[frm_name].elements[field_name].value.length) != 'undefined')){

			if ((typeof(get_rich) != 'undefined') && (typeof(get_editor_id) != 'undefined')){
				editor_id = get_editor_id(field_name);
				if (editor_id){
					rich_content = get_rich(field_name);
					//alert(rich_content);
					if (rich_content)
						return '';
					return '"' + field_caption + '" is mandatory \n';
				}
			}
			if (document.forms[frm_name].elements[field_name].value.length == 0)
				return '"' + field_caption + '" is mandatory \n';
		}
    return '';
}

function check_radio_mandatory(frm_name, field_name, field_caption)

{
	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
	res = true;
	if (typeof(document.forms[frm_name].elements[field_name].length) != 'undefined')
	   {
	    if ((document.forms[frm_name].elements[field_name][0].type=='hidden') &&
			(document.forms[frm_name].elements[field_name].length==2))
			return '';
	    res = false;
	    for (i = 0; i < document.forms[frm_name].elements[field_name].length; i++)
		{
			if (document.forms[frm_name].elements[field_name][i].checked)
			  {
				res = true;
				break;

			  }
		 }
	  }
	 else
	if (!document.forms[frm_name].elements[field_name].checked)
		  res = false;
	if (!res)
		return '"' + field_caption + '" is mandatory\n';
	return '';
}


function text_email_check(frm_name, field_name, field_caption)

{
	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
	acc_l = document.forms[frm_name].elements[field_name].value.length;
	if (acc_l > 0)
		{
			e_len = document.forms[frm_name].elements[field_name].value.length;
     		at_pos = document.forms[frm_name].elements[field_name].value.indexOf('@');
	 		dot_pos = document.forms[frm_name].elements[field_name].value.indexOf('.');
     		if ((at_pos <0) || (dot_pos <0) || ((dot_pos - at_pos) == 1)   ||
				(document.forms[frm_name].elements[field_name].value.charAt(e_len-1) == '.'))
				return 'Value entered for "' +field_caption + '" doesn\'t seem to be a correct e-mail\n';
			}
	return '';
}

function generic_mandatory_check(frm_name, field_name, field_caption){
	var tpy;
	tpy = null;
	if (typeof(document.forms[frm_name].elements[field_name])!='undefined'){
		if (typeof(document.forms[frm_name].elements[field_name].type) != 'undefined')
			tpy=document.forms[frm_name].elements[field_name].type;
		else{
			if (typeof(document.forms[frm_name].elements[field_name].length) != 'undefined')
				tpy = document.forms[frm_name].elements[field_name][0].type;
		}
	}

	if(tpy == undefined || tpy == null )
		return '';
	if (tpy=='unknown')
	 return '';
	if (tpy=='radio'){

		return check_radio_mandatory(frm_name, field_name, field_caption);
	}
	if ((tpy=='text') || (tpy=='password') || (tpy=='select-one') || (tpy=='select') || (tpy=='hidden') || (tpy=='file') ||  (tpy=='textarea'))
		return check_text_mandatory(frm_name, field_name, field_caption);
	if (tpy=='checkbox')
		return check_radio_mandatory(frm_name, field_name, field_caption);
	return tpy + "\n";
}




function get_payment_value(frm_name)

{
	if (typeof(document.forms[frm_name].elements['PMETH']) == 'undefined')
		return false;
	pmeth_field = document.forms[frm_name].elements['PMETH'];
	var pmeth_value = 0;
	if (typeof(pmeth_field.value)=='undefined')
		{
			for(i=0; i< pmeth_field.length; i++)
				if (pmeth_field[i].checked)
					{
						pmeth_value = pmeth_field[i].value;
						break;
					}
		}
	else
		pmeth_value = pmeth_field.value;
	return pmeth_value;
}

function cc_validation(frm_name, field_name, field_caption)
{

	pmeth_value = get_payment_value(frm_name);
	if (!pmeth_value)
		return check_text_mandatory(frm_name, 'CC', 'Credit Card');

	if (pmeth_value != CC_CHOICE_VALUE)
		return '';

	if (typeof(document.forms[frm_name].elements[cc_field_name]) == 'undefined')
		return '';

	var cc_field = document.forms[frm_name].elements[cc_field_name];
	var acc_l = cc_field.value.length;

	if (acc_l<=0)
		return 'The credit card number can not be empty\n';
	if (acc_l < 15)
      {
	      	return 'The credit card number is too short.\n';
      }


     for (i=0; i<acc_l; i++)
	  {
	      ch = cc_field.value.charAt(i);
	       if ((ch<'0') ||(ch>'9'))
	  			return 'Credit card number should not contain any characters except digits!\n';
     }

	if (typeof(document.forms[frm_name].elements['CCTYPE']) == 'undefined')
		return 'Credit Card Type field is missing. Please call tech. support!';

	var cc_type = document.forms[frm_name].elements['CCTYPE'];
	chars_arr = new Array();
	chars_arr[visa_val]='4';
	chars_arr[mastercard_val]='5';
	chars_arr[amex_val]='3';
	chars_arr[discover_val]='6';
    req_char = 0;
	if (chars_arr[cc_type.value])
		req_char = chars_arr[cc_type.value];
	if (req_char && (cc_field.value.charAt(0) != req_char))
	      return 'Credit Card Type field is missing. Please call tech. support!\n';
	return '';
}


function cvv_validation(frm_name, field_name, CC_CHOICE_VALUE)

{
	pmeth_value = get_payment_value(frm_name);
	if (!pmeth_value)
		return check_text_mandatory(frm_name, field_name, 'CVV2');

	if (pmeth_value != CC_CHOICE_VALUE)
		return '';

	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
	res = check_text_mandatory(frm_name, field_name, 'CVV2');
	if (res!='')
		return res;

	cvv_field = document.forms[frm_name].elements[field_name];


	acc_l = cvv_field.value.length;
    for (i=0; i<acc_l; i++)
		{
      		 ch = cvv_field.value.charAt(i);
		     if ((ch<'0') ||(ch>'9'))
		  		return 'CVV2 number should not contain any characters except digits!\n';
		}
	return '';
}


function state_valiation(frm_name, field_name, prefix, usa_value, canada_value)

{
	tmp = field_name.split('][');
	if (tmp.length==3)
		country_field_name = tmp[0]+']['+ tmp[1] +'][' + prefix + 'COUNTRY]';
	else
		country_field_name = prefix + 'COUNTRY';
	if (
			(typeof(document.forms[frm_name].elements[prefix + 'COUNTRY']) == 'undefined')	||
			(typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		)
		return'';

	var country_field = document.forms[frm_name].elements[country_field_name];
	var this_field = document.forms[frm_name].elements[field_name];

	ex_word = ' ';
	if (prefix =='SHIP')
		ex_word = ' (shipping information) '

	if 	(
		(country_field.value == usa_value) &&
    	((this_field.selectedIndex==0)|| (this_field.selectedIndex>54))
   		)
   			return 'State'+ex_word+'is mandatory  if USA is selected \n';
	if  ((country_field.value == canada_value) && (this_field.selectedIndex<56))
		   return 'Province'+ex_word+'is mandatory if Canada is selected\n';
	return '';
}


function get_ship_is_bill_value(frm_name)

{
	if (typeof(document.forms[frm_name].elements['SHIPISBILL']) == 'undefined')
		return false;
	ship_is_bill = document.forms[frm_name].elements['SHIPISBILL'];
	if (typeof(ship_is_bill.length)=='undefined')
		return ship_is_bill.value;
	for(i=0; i< ship_is_bill.length; i++)
		{
			if (ship_is_bill[i].checked)
				return ship_is_bill[i].value;
		}
	return false;

}

function shipping_field_mandatory(frm_name, shipisbill_value, field_name, field_caption)

{
	sh_value = get_ship_is_bill_value(frm_name);
	if (!sh_value)
		return 'Shipping method selection is missing. Call tech support!';
	if (sh_value == shipisbill_value)
		return '';
	if ( (typeof(document.forms[frm_name].shipping_hidden)!='undefined')  &&
		 (document.forms[frm_name].shipping_hidden.value!=0))
		return '';
	return check_text_mandatory(frm_name, field_name, field_caption +' (shipping information) ');
}

function ship_state_valiation(frm_name, field_name, shipisbill_value, usa_value, canada_value)

{
	sh_value = get_ship_is_bill_value(frm_name);
	if (!sh_value)
		return 'Shipping method selection is missing. Call tech support!\n';
	if (sh_value == shipisbill_value)
		return '';
	if ( (typeof(document.forms[frm_name].shipping_hidden)!='undefined')  &&
		 (document.forms[frm_name].shipping_hidden.value!=0))
		return '';

	return state_valiation(frm_name, field_name, 'SHIP', usa_value, canada_value)
}


function zipcode_validation(frm_name, field_name,  field_caption, prefix, usa_value)

{
	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
			return '';

	tmp = field_name.split('][');
	if (tmp.length==3)
		country_field_name = tmp[0]+']['+ tmp[1] +'][' + prefix + 'COUNTRY]';
	else
		country_field_name = prefix + 'COUNTRY';
	if ((typeof(document.forms[frm_name].elements[country_field_name]) == 'undefined'))
			return text_number_check(frm_name, field_name, field_caption);

	zip_field = document.forms[frm_name].elements[field_name];
	if (zip_field.value.length > 10)
		return 'ZIP code cannot be longer then 10 characters\n';

	country_field = document.forms[frm_name].elements[country_field_name];

	if (country_field.value==usa_value)
		return text_number_check(frm_name, field_name, field_caption);

	acc_l = zip_field.value.length;
	if (acc_l > 0)
		{
	      for (i=0; i<acc_l; i++)
		  {
		      ch = zip_field.value.charAt(i);
		      flg=false;
		      if ((ch>='A') &&(ch<='Z'))
		         flg= true;
		      if ((ch>='a') &&(ch<='z'))
		         flg= true;
		      if ((ch>='0') &&(ch<='9'))
		         flg= true;
		      if (ch=='-')
		         flg= true;
		      if (ch==' ')
		         flg= true;
		      if (!flg)
	  			return 'Field '+field_caption+' should be alpha numeric \n';
		  }
		}
	return '';
}

function ship_zipcode_validation(frm_name, field_name,  field_caption, shipisbill_value, usa_value)
{
	sh_value = get_ship_is_bill_value(frm_name);
	if (!sh_value)
		return 'Shipping method selection is missing. Call tech support!\n'
	if (sh_value == shipisbill_value)
		return '';
	if ( (typeof(document.forms[frm_name].shipping_hidden)!='undefined')  &&
		 (document.forms[frm_name].shipping_hidden.value!=0))
		return '';
	return zipcode_validation(frm_name, field_name,  field_caption, 'SHIP', usa_value)
}

function oracle_mandatory(frm_name, field_name, field_caption, oracle_value)

{
	pmeth_value = get_payment_value(frm_name);
	if (!pmeth_value)
		return '';
	if (pmeth_value != oracle_value)
		return '';
	return check_text_mandatory(frm_name, field_name, field_caption);
}


function intagio_mandatory(frm_name, field_name, field_caption, intagio_value)

{
	pmeth_value = get_payment_value(frm_name);
	if (!pmeth_value)
		return '';
	if (pmeth_value != intagio_value)
		return '';
	return check_text_mandatory(frm_name, field_name, 'INTAGIO User ID and password are mandatory');
}


function itex_mandatory(frm_name, field_name, field_caption, itex_value)

{
	pmeth_value = get_payment_value(frm_name);
	if (!pmeth_value)
		return '';
	if (pmeth_value != itex_value)
		return '';
	return check_text_mandatory(frm_name, field_name, 'ITEX User ID and password are mandatory');
}

function text_number_check(frm_name, field_name, field_caption)

{
	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
	if (typeof(document.forms[frm_name].elements[field_name].value) == 'undefined')
		return '';
	acc_l = document.forms[frm_name].elements[field_name].value.length;
	if (acc_l > 0)
	  {
	    for (i=0; i<acc_l; i++)
		{
		  	ch = document.forms[frm_name].elements[field_name].value.charAt(i);
	    	if (((ch<'0') ||(ch>'9')) && (ch!='-') && (ch!='.'))
			  	{
					return '"' + field_caption + '" should be numberic\n';
				}
		}
	  }
	return '';
}

function dd_mandatory_check(frm_name, field_name, field_caption)

{
  if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
  if (document.forms[frm_name].elements[field_name].value < 0)
		return '"' + field_caption + '" is mandatory\n';
  return '';
}

function date_format_check(frm_name, field_name, field_caption)

{
	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
	if (document.forms[frm_name].elements[field_name].value.length == 0)
		return '';
	if ( (document.forms[frm_name].elements[field_name].value.length != 10) ||
		 (document.forms[frm_name].elements[field_name].value.charAt(2) != '-') ||
		 (document.forms[frm_name].elements[field_name].value.charAt(5) != '-')
	   )
		  return 'Invalid date format for "' + field_caption + '", must be MM-DD-YYYY\n';
	  if (eval(document.forms[frm_name].elements[field_name].value.substr(6, 4) +
	  		   document.forms[frm_name].elements[field_name].value.substr(0, 2) +
			   document.forms[frm_name].elements[field_name].value.substr(3, 2)) == 0)
	 	 return  'Invalid date format for "' + field_caption + '", only digits are allowed \n';
	return '';
}


///added by Andrew
function time_format_check(frm_name, field_name, field_caption)

{
	if (typeof(document.forms[frm_name].elements[field_name]) == 'undefined')
		return '';
	if (document.forms[frm_name].elements[field_name].value.length == 0)
		return '';

	timeval = document.forms[frm_name].elements[field_name].value;
	//var timeformat=new RegExp("^\\d{1,2}:\\d{1,2}:*\\d{0,2}$", "g");
var timeformat=new RegExp("^\\d{1,2}:\\d{1,2}", "g");
	if (timeval.search(timeformat)==-1) //if match failed
		return 'Invalid time format for "' + field_caption + '", must be HH:MM (hours and minutes separated by ":", only digits are allowed) \n';

	return '';
}
////////


function get_element_by_id(element_id){
	var DOM=(document.getElementById)?true:false;
 	var IE4=(document.all)?true:false;
 	var element = (DOM)?document.getElementById(element_id):((IE4)?document.all[element_id]:null);
 	return element;
}


function set_inner_html(element_id, text){
	element = get_element_by_id(element_id);
 	if (element)
 		element.innerHTML = text;
}

function SetVisibleById(element_id, show) {
 var DOM=(document.getElementById)?true:false;
 var IE4=(document.all)?true:false;
 var divstyle = (DOM)?document.getElementById(element_id).style:((IE4)?document.all[element_id].style:null);
  if (show == 2) {
	divstyle.display='inline';
 } else if (show == 1) {
 	divstyle.display='';
 } else if (show == 0) {
 	divstyle.display='none';
 }
}

function SetVisibleFormFieldByName(formName,elementName, show) {

 var DOM=(document.getElementById)?true:false;
 var IE4=(document.all)?true:false;
 var element = document.forms[formName].elements[elementName];
  if (show == 2) {
	element.style.display='inline';
 } else if (show == 1) {
 	element.style.display='';
 } else if (show == 0) {
 	element.style.display='none';
 }
}



//Toggles the visibility of the element with the given name
//If visible, make hidden. If hidden, make visible.
function ShowHideById(element_id) {
 var divstyle = document.getElementById(element_id).style;
 if (divstyle.display != 'none')
 	divstyle.display = 'none';
 else
 	divstyle.display = '';
}


function toggle_visible(element_id1, element_id2)

{
	ShowHideById(element_id1);
	ShowHideById(element_id2);
}


function setCookie(name, value, expires, path, domain, secure) {
		var curCookie = name + "=" + escape(value) +
				((expires) ? "; expires=" + expires.toGMTString() : "") +
				((path) ? "; path=" + path : "") +
				((domain) ? "; domain=" + domain : "") +
				((secure) ? "; secure" : "");
		document.cookie = curCookie;
	}

// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function getCookie(name) {
		var dc = document.cookie;
		var prefix = name + "=";
		var begin = dc.indexOf("; " + prefix);
		if (begin == -1) {
			begin = dc.indexOf(prefix);
			if (begin != 0) return null;
		} else
			begin += 2;
		var end = document.cookie.indexOf(";", begin);
		if (end == -1)
			end = dc.length;
		return unescape(dc.substring(begin + prefix.length, end));
	}


function deleteall(form_name)
	{
		document.forms[form_name].elements['ac'].value = 'delete';
		if ( confirm('Delete is irreversible, are you sure?') )
	   		document.forms[form_name].submit();
	}

function deleteall_NEW(form_name)
	{
		document.forms[form_name].elements['ac'].value = 'delete';
		if ( confirm('Delete is irreversible, are you sure?') )
	   		document.forms[form_name].submit();
	}


function updateall(form_name)

{
	if ((typeof(mandatory_fields_arr) != 'undefined') && (typeof(mandatory_fields_names_arr) != 'undefined'))
		{
			for (i=0; i<mandatory_fields_arr.length; i++)
				{
					if (!check_text_mandatory(form_name, mandatory_fields_arr[i], mandatory_fields_names_arr[i]))
						return;
				}
		}

	document.forms[form_name].elements['ac'].value = 'update';
	document.forms[form_name].submit();
}

function select_all(table_name)
	{
		if (typeof(document.all['SELECTED['+table_name+'][]'])=='undefined')
			alert('"Select all" is not available on this page')
		if (typeof(document.all['SELECTED['+table_name+'][]'].checked) != 'undefined'){
			document.all['SELECTED['+table_name+'][]'].checked = !document.all['SELECTED['+table_name+'][]'].checked;
			return;
		}
		len = 0;
		if (typeof(document.all['SELECTED['+table_name+'][]'].length) != 'undefined')
			len = document.all['SELECTED['+table_name+'][]'].length;
		for (i=0; i<len; i++)
			if (typeof(document.all['SELECTED['+table_name+'][]'][i].checked) != 'undefined')
				document.all['SELECTED['+table_name+'][]'][i].checked = !document.all['SELECTED['+table_name+'][]'][i].checked;
	}


function add_mandatory_field(field_name, field_caption)

{
	i = 0;
	if (typeof(mandatory_fields_arr) != 'undefined')
		i = mandatory_fields_arr.length;
	mandatory_fields_arr[i] = field_name;
	mandatory_fields_names_arr[i] = field_caption;

}

var mandatory_fields_arr = new Array();
var mandatory_fields_names_arr = new Array();

function do_clone(form_name)
{
	document.forms[form_name].ac.value = 'clone';
	document.forms[form_name].submit();
}

function OpenWindowXY(url, name, l, t, w, h){
	popupWin=window.open(url, name, 'scrollbars=yes,width='+w+',height='+h+',left='+l+',top='+t);
}

function OpenWindow(url, name)
{
	 popupWin=window.open(url, name, 'scrollbars=yes,width=600,height=400,left=50,top=100');
}

// functions for wor with CSS classes - Vallar_FE
function GetClassCSS(element_id){
		var DOM=(document.getElementById)?true:false;
        var IE4=(document.all)?true:false;
		var element = (DOM)?document.getElementById(element_id):((IE4)?document.all[element_id]:null);
		return element.className;
}

function GetClassCSS_CurrentItem(element){
		return element.className;
}

function GetClassRule(theClass,element){
	 var DOM=(document.getElementById)?true:false;
     var IE4=(document.all)?true:false;
	 var cssRules = (IE4)?'rules':((DOM)?'cssRules':null);
	 if(cssRules != null){
	   for (var S = 0; S < document.styleSheets.length; S++){
	     for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
	        if (document.styleSheets[S][cssRules][R].selectorText.toLocaleLowerCase() == theClass.toLocaleLowerCase()) {
	            return document.styleSheets[S][cssRules][R].style[element];
	        }
	     }
	   }
	 }
}

function ChangeCSS(theClass,element,value) {
	 var DOM=(document.getElementById)?true:false;
     var IE4=(document.all)?true:false;
	 var cssRules = (IE4)?'rules':((DOM)?'cssRules':null);
	 if(cssRules != null){
	   for (var S = 0; S < document.styleSheets.length; S++){
	     for (var R = 0; R < document.styleSheets[S][cssRules].length; R++) {
	        if (document.styleSheets[S][cssRules][R].selectorText.toLocaleLowerCase() == theClass.toLocaleLowerCase()) {
	            document.styleSheets[S][cssRules][R].style[element] = value;
	            return true;
	        }
	     }
	   }
	 }
}


	function HideTemplates(){
		if(GetClassRule('.template_link_to_file','display')!='none'){
			ChangeCSS('.template_link_to_file','display','none');
			ChangeCSS('.template_link_to_file_img','display','block');
			setCookie('templates_hide', '1');
		}
		else{
			ChangeCSS('.template_link_to_file','display','block');
			ChangeCSS('.template_link_to_file_img','display','none');
			setCookie('templates_hide', '0');
		}
	}

    function popup(fileName,x,y,wn) {
            smallWin = window.open(fileName,'more_imgs'+wn,'scrollbars=yes,status=no,resizable=yes,width=' + x + ',height=' + y + '');
          }


    function submit_and_go(next_page){
	if (confirm('This will also save current changes, continue?'))
		{
			document.main_interface_form.NEXT_PAGE.value = next_page;
			document.main_interface_form.submit();
		}
	}

	function ChangePlusPict(plusPict,minusPict,val){

	}

	var xml_perLevelIDS = new Array();

	function xml_AddPerLevelIDS(ids,level){
		ids = ids.split(',');
		if(xml_perLevelIDS[level] == undefined){
			xml_perLevelIDS[level] = new Array()
		}
		if(ids.length > 0 && xml_perLevelIDS[level]){
			for(i = 0; i<ids.length; i++){
				xml_perLevelIDS[level][xml_perLevelIDS[level].length] = ids[i];
			}
		}
	}

	function HideIDS(id_string,level){
	 var DOM=(document.getElementById)?true:false;
     var IE4=(document.all)?true:false;
		if(xml_perLevelIDS[level] == undefined){
			return '';
		}
		ids = id_string.split(',');
		if(ids.length > 0 && xml_perLevelIDS[level]){
			for(i = 0; i<xml_perLevelIDS[level].length; i++){
				element_id = xml_perLevelIDS[level][i];
				element = (DOM)?document.getElementById(element_id):((IE4)?document.all[element_id]:null);
				element.style.display = 'none';
			}

			for(i = 0; i<ids.length; i++){
				element_id = ids[i];
				element = (DOM)?document.getElementById(element_id):((IE4)?document.all[element_id]:null);
				if(element.style.display == 'none'){
				element.style.display = '';
				}
				else{
				element.style.display = 'none'
				}
			}
		}
	}


function set_radio_value(form_name, field_name, value){
	if (typeof(document.forms[form_name].elements[field_name]) == 'undefined')
		return;
	if ((typeof(document.forms[form_name].elements[field_name].checked) == 'undefined') &&
		(typeof(document.forms[form_name].elements[field_name].length) != 'undefined')){
		for(i=0; i<document.forms[form_name].elements[field_name].length; i++)
			if (document.forms[form_name].elements[field_name][i].value == value){
				document.forms[form_name].elements[field_name][i].checked = true;
				break;
			}
		return;
	}
	if (typeof(document.forms[form_name].elements[field_name].checked) != 'undefined')
		document.forms[form_name].elements[field_name].checked = document.forms[form_name].elements[field_name].value == value;
}