	function CustomInit () {
	jQuery.noConflict();
	startNav();
	changeShipping();
	jQuery('#scroller').jcarousel({
        visible: 4
    });
//resizeBody();
}

function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
if (obj.getAttribute && obj.value.length>mlength)
obj.value=obj.value.substring(0,mlength)
}
function ratingHover(imagename,rating) {

	var img1 = document.images['Rating1'].src; 
	var src1 = '/media/images/icons/rating_on.gif'; 
	var src2 = '/media/images/icons/rating_off.gif';


	jQuery('#ratings-overlay').hover(
		function(){
			jQuery('#ratings-overlay').show();
		},
                function() {
			jQuery('#ratings-overlay').hide();
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_off.gif');
			jQuery('#Rating3a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating4a').attr('src', '/media/images/icons/rating_off.gif');
			jQuery('#Rating5a').attr('src', '/media/images/icons/rating_off.gif');
                }
        );
	jQuery('#Rating1').hover(
                function() {
                        jQuery('#ratings-overlay').show();
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                },
                function() {

                }
        );
	jQuery('#Rating2').hover(
                function() {
                        jQuery('#ratings-overlay').show();
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
                },
                function() {

                }
        );
	jQuery('#Rating3').hover(
                function() {
			jQuery('#ratings-overlay').show();
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating3a').attr('src', '/media/images/icons/rating_on.gif');
                },
                function() {

                }
        );
	jQuery('#Rating4').hover(
                function() {
			jQuery('#ratings-overlay').show();
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating3a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating4a').attr('src', '/media/images/icons/rating_on.gif');
                },
                function() {

                }
        );
	jQuery('#Rating5').hover(
                function() {
			jQuery('#ratings-overlay').show();
			jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
			jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
			jQuery('#Rating3a').attr('src', '/media/images/icons/rating_on.gif');
			jQuery('#Rating4a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating5a').attr('src', '/media/images/icons/rating_on.gif');
                },
                function() {

                }
        );
	
	/* Start Ratings Overlay Hovers */
	jQuery('#Rating1a').hover(
                function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                },
				function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_off.gif');
                }
        );
	jQuery('#Rating2a').hover(
                function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
                },
				function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_off.gif');
                }
        );
	jQuery('#Rating3a').hover(
                function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating3a').attr('src', '/media/images/icons/rating_on.gif');
                },
				function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating3a').attr('src', '/media/images/icons/rating_off.gif');
                }
        );
	jQuery('#Rating4a').hover(
                function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating3a').attr('src', '/media/images/icons/rating_on.gif');
                        jQuery('#Rating4a').attr('src', '/media/images/icons/rating_on.gif');
                },
				function() {
                        jQuery('#Rating1a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating2a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating3a').attr('src', '/media/images/icons/rating_off.gif');
                        jQuery('#Rating4a').attr('src', '/media/images/icons/rating_off.gif');
                }
        );
	jQuery('#Rating5a').hover(
                function() {
					jQuery('#Rating1a').attr('src', '/media/images/icons/rating_on.gif');
					jQuery('#Rating2a').attr('src', '/media/images/icons/rating_on.gif');
					jQuery('#Rating3a').attr('src', '/media/images/icons/rating_on.gif');
					jQuery('#Rating4a').attr('src', '/media/images/icons/rating_on.gif');
                    jQuery('#Rating5a').attr('src', '/media/images/icons/rating_on.gif');
                },
				function() {
					jQuery('#Rating1a').attr('src', '/media/images/icons/rating_off.gif');
					jQuery('#Rating2a').attr('src', '/media/images/icons/rating_off.gif');
					jQuery('#Rating3a').attr('src', '/media/images/icons/rating_off.gif');
					jQuery('#Rating4a').attr('src', '/media/images/icons/rating_off.gif');
                    jQuery('#Rating5a').attr('src', '/media/images/icons/rating_off.gif');
                }
        );
}
// START: XPath

var XPath = new Object ();
XPath.selectSingleNodeString = function (node, expression, namespaces) { 
      expression = expression + "/text()";
      var returnNode = XPath.selectSingleNode (node, expression, namespaces);
      if (returnNode != null) {
            return returnNode.nodeValue; 
      }
      return "";
}
XPath.selectSingleNode = function (node, expression, namespaces) {

            // namespaces format:

            // "a='abc',b='def'"

            if (node.nodeType == 9) {

                        node = node.firstChild;      

            }

            var mozNamespaces = new Object ();

            var ownerDoc = node.ownerDocument;

            if (namespaces && namespaces != "") {

                        var splits = namespaces.split (",");

                        var c = splits.length;

                        var msxmlNamespaces = "";

                        for (var i=0; i<c; i++) {

                                    var namespace = splits[i].split ("=");

                                    var prefix = namespace[0];

                                    var uri = namespace[1].substr (1, namespace[1].length - 2);

                                    if (window.ActiveXObject && ownerDoc) {

                            //                    msxmlNamespaces += "xmlns:" + prefix + "='" + uri + "'";
						msxmlNamespaces += "xmlns:" + prefix + "='" + uri + "' ";

                                    }

                                    else if (ownerDoc.evaluate) {

                                                mozNamespaces[prefix] = uri;

                                    }

                        }

                        if (window.ActiveXObject && ownerDoc) {

                                    ownerDoc.setProperty ("SelectionNamespaces", msxmlNamespaces);

                        }

            }

            var nsResolver = function (prefix) {

                        if (mozNamespaces[prefix]) {

                                    return mozNamespaces[prefix];

                        }

                        return null;

            }

            if (window.ActiveXObject && ownerDoc) {

                        ownerDoc.setProperty("SelectionLanguage", "XPath");

                        var foundNode = ownerDoc.selectSingleNode(expression);

                        foundNode = (foundNode) ? foundNode : null;

                        return foundNode;

            }

            else if (ownerDoc.evaluate) {

                        var foundNode = ownerDoc.evaluate(expression, node, nsResolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null);

                       foundNode = (foundNode) ? foundNode.singleNodeValue : null;

                        return foundNode;

            }

            return null;

}
XPath._nextNode = function () {
      return this.iterateNext ();
}

XPath._item = function (i) {
      return this.snapshotItem (i);
}

XPath.iterateNodes = function (nodes, func) {
      if (!func) {
            return;
      }
      var thisNode = nodes.nextNode ();
      while (thisNode) {
            func (thisNode, nodes);
            thisNode = nodes.nextNode ();
      }
      thisNode = null;
      func = null;
      return nodes;
}

XPath.selectNodes = function (node, expression, namespaces, isSnapshot) {
      // namespaces format:
      // "a='abc',b='def'"
      // isSnapshot is optional and for DOM3 browser only. Default is false
      if (node.nodeType == 9) {
            node = node.firstChild;
      }
      var mozNamespaces = new Object ();
      var ownerDoc = node.ownerDocument;
      if (namespaces && namespaces != "") {
            var splits = namespaces.split (",");
            var c = splits.length;
            for (var i=0; i<c; i++) {
                  var namespace = splits[i].split ("=");
                  var prefix = namespace[0];
                  var uri = namespace[1].substr (1, namespace[1].length - 2);
                  if (window.ActiveXObject && ownerDoc) {
                        ownerDoc.setProperty ("SelectionNamespaces", "xmlns:" + prefix + "='" + uri + "'");
                  }
                  else if (ownerDoc.evaluate) {
                        mozNamespaces[prefix] = uri;
                  }
            }
      }
      var nsResolver = function (prefix) {
            if (mozNamespaces[prefix]) {
                  return mozNamespaces[prefix];
            }
            return [];
      }
      if (window.ActiveXObject && ownerDoc) {
            ownerDoc.setProperty("SelectionLanguage", "XPath");
            var foundNodes = ownerDoc.selectNodes(expression);
            foundNodes = (foundNodes) ? foundNodes : [];
            return foundNodes;
      }
      else if (ownerDoc.evaluate) {
            if (isSnapshot === true) {
                 var foundNodes = ownerDoc.evaluate(expression, node, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                  foundNodes = (foundNodes) ? foundNodes : [];
                  foundNodes.item = XPath._item;
                  foundNodes.length = foundNodes.snapshotLength;
                  return foundNodes;
            }
            else {
                 var foundNodes = ownerDoc.evaluate(expression, node, nsResolver, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
                  foundNodes = (foundNodes) ? foundNodes : [];
                  foundNodes.nextNode = XPath._nextNode;
                  return foundNodes;
            }
      }
	 return [];
var GlobalAjaxHandlers = {
      onFailure: function (ajaxRequest, xmlHttpRequest, xJson) {
            // put some meaningful message here
            alert ("The server returns a failure.");
      },
      onException: function(ajaxRequest, exception) {
            // put some meaningful message here
            alert ("An exception encountered when making the AJAX call");
      }
};
Ajax.Responders.register(GlobalAjaxHandlers);
}
// END: XPath

// Here's an example of how to specify namespaces
var namespaceExample = "rev5='http://schema.epublishing.com/rev5',site='http://schema.success.magazine.com/site'";

// An example call
function submitVote(url,param,pageId,rating) {
var requestUrl = url+"?"

requestUrl += param+"="+pageId+"&";
requestUrl += "rating="+rating;
new Ajax.Request(
      requestUrl,
      {
            method: 'post',
onSuccess: function (transport) {
                 var aMsg = XPath.selectSingleNodeString (transport.responseXML, "/site:document/rev5:system-messages/rev5:status[1]", namespaceExample);
		if (rating == '1') {
			document.images['Rating1'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating2'].src = '/media/images/icons/rating_off.gif';
                        document.images['Rating3'].src = '/media/images/icons/rating_off.gif';
                        document.images['Rating4'].src = '/media/images/icons/rating_off.gif';
                        document.images['Rating5'].src = '/media/images/icons/rating_off.gif';
		} else if (rating == '2') {
			document.images['Rating1'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating2'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating3'].src = '/media/images/icons/rating_off.gif';
                        document.images['Rating4'].src = '/media/images/icons/rating_off.gif';
                        document.images['Rating5'].src = '/media/images/icons/rating_off.gif';
		} else if (rating == '3') {
			document.images['Rating1'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating2'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating3'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating4'].src = '/media/images/icons/rating_off.gif';
                        document.images['Rating5'].src = '/media/images/icons/rating_off.gif';
		} else if (rating == '4') {
			document.images['Rating1'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating2'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating3'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating4'].src = '/media/images/icons/rating_on.gif';
                        document.images['Rating5'].src = '/media/images/icons/rating_off.gif';
		} else if (rating == '5') {
			document.images['Rating1'].src = '/media/images/icons/rating_on.gif';
			document.images['Rating2'].src = '/media/images/icons/rating_on.gif';
			document.images['Rating3'].src = '/media/images/icons/rating_on.gif';
			document.images['Rating4'].src = '/media/images/icons/rating_on.gif';
			document.images['Rating5'].src = '/media/images/icons/rating_on.gif';
		}
		$("rate-status-inline").innerHTML = "Your rating has been saved."
            },
	onFailure: function (ajaxRequest, xmlHttpRequest, xJson) {
            // put some meaningful message here
            $("rate-status-inline").innerHTML = "The server was not able to save your rating. Please try again later.";
      },
      onException: function(ajaxRequest, exception) {
            // put some meaningful message here
            $("rate-status-inline").innerHTML = "An exception occured while submitting your rating. Please try again later.";
      }
      }
);
}
function changeShipping () {
                var loadValue = jQuery('#shipCountry').val();
		if ((!loadValue) || (loadValue == '')) {
			jQuery('.international').hide('fast');
                        jQuery('.domestic').show('fast');
		}
		else if (loadValue == 'US') {
                        jQuery('.international').hide('fast');
                        jQuery('.domestic').show('fast');
                }
                else if (loadValue != 'US') {
                        jQuery('.domestic').hide('fast');
			jQuery('.international').show('fast');
                } 
                jQuery('#shipCountry').change(function() {
                 var thisValue = jQuery(this).val();
                        if (thisValue != 'US') {
                                jQuery('.international').show('fast');
                                jQuery('.domestic').hide('fast');
                                document.form1.Economy.checked = true;
                        } else {
                                jQuery('.domestic').show('fast');
                                jQuery('.international').hide('fast');
                                document.form1.Ground.checked = true;
                        }
            });

}
function newWindow(url,height,width) {
popupWindow = window.open(url,'popUpWindow','height='+height+',width='+width);
	}
function getParam(strParamName,pos){

  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if (
aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  param = unescape(strReturn);
}


		function checkIt(msg){
			if (confirm("Are you sure you want to " + msg + "?")) {
				return true;
			}
			else {
				return false;
			}
		}
		function MM_jumpMenu(prefix,targ,selObj,restore){ //v3.0
		  eval(targ+".location='"+prefix+selObj.options[selObj.selectedIndex].value+"'");
		  if (restore) selObj.selectedIndex=0;
		}

function populateList(selectbox,thearray)
     {
         for (i=0;i<thearray[0].length;i++)
         {
             var o = new Option(thearray[1][i].replace(/&quot;/g, '"'), thearray[0][i],false,false);
             selectbox.options[selectbox.length] = o;
         }
     }

     function resetToAll(selectbox)
     {
         selectbox.options.length = 0;
         var o = new Option('All values','',false,false);
         selectbox.options[selectbox.length] = o;
     }

     function resetToSection(selectbox)
     {
         selectbox.options.length = 0;
         var o = new Option('Please type at least 3 characters in the box to the left.','',false,false);
         selectbox.options[selectbox.length] = o;
     }

     function resetToRoot(selectbox)
     {
         selectbox.options.length = 0;
         var o = new Option('Please type at least 3 characters in the box to the left.','',false,false);
         selectbox.options[selectbox.length] = o;
     }

     function repopulate(selectbox,m,resetfunc)
     {
         selectbox.options.length = 0;
         if (m[0].length == 0)
         {
             eval(resetfunc + '(selectbox);');
             return false;
         }

         for (i=0;i<m[0].length;i++)
         {
             var o = new Option(m[1][i].replace(/&quot;/g, '"'), m[0][i],false,false);
             selectbox.options[selectbox.length] = o;
         }
     }

     function stripSpaces(x)
     {
         while (x.substring(0,1) == ' ') x = x.substring(1);
         while (x.substring(x.length-1,x.length) == ' ') x =
x.substring(0,x.length-1);
         return x;
     }

     function keypress(string,selectbox,thearray,resetfunc)
     {
         var len = string.length;
         if (len < 3)
         {
             eval(resetfunc + '(selectbox);');
             return;
         }
         string = stripSpaces(string);
         var m = new Array(new Array(),new Array());
         if (len > 0)
         {
             for (i=0;i<thearray[0].length;i++)
             {
                 if (thearray[1][i].toLowerCase().indexOf
(string.toLowerCase()) > -1)
                 {
                     m[1][m[1].length] = thearray[1][i];
                     m[0][m[0].length] = thearray[0][i];
                 }
             }
             repopulate(selectbox,m,resetfunc);
         }
         else
         {
             eval(resetfunc + '(selectbox);');
         }

         return false;
     }

     function testOptionValue (thisForm,thisObj) {
		var selectObj = thisObj.value;
		if ((selectObj != '1') && (selectObj != '2')) {
			thisForm.newsletterBeginPostDate.disabled=false;
			thisForm.newsletterEndPostDate.disabled=false;
		}
		else if ((selectObj = '1') || (selectObj = '2')) {
			thisForm.newsletterBeginPostDate.disabled=true;
			thisForm.newsletterEndPostDate.disabled=true;
		} 
	}
	
	function GetObjRef (objId) {
		var returnObj = null;
		if (document.getElementById) {
			returnObj = document.getElementById(objId);
		}
		else if (document.all) {
			returnObj = document.all[objId];
		}
		return returnObj;
	}
	
	function ShowObj (objId) {
		var returnObj = GetObjRef (objId);
		if (returnObj && returnObj.style) {
			returnObj.style.display = "block";
		}
	}
	function HideObj (objId) {
		var returnObj = GetObjRef (objId);
		if (returnObj && returnObj.style) {
			returnObj.style.display = "none";
		}
	}
	function ToggleObj (objId) {
		var returnObj = GetObjRef (objId);
		if (returnObj && returnObj.style) {
			if (returnObj.style.display == "block") {
				returnObj.style.display = "none";
			}
			else {
				returnObj.style.display = "block";
			}
		}
	}


/* New Scripts */

  function startNav() {
						
					jQuery("#popup-container").show("fast");
					jQuery('ul#nav-main').superfish({
						hoverClass	: "sfHover",
						delay		: 100,
						pathClass : 'current',
						animation : { height: 'show' },
						speed		: 1,
						onShow		: function(){ } /*new to v1.3.2*/
					});
					jQuery("#user-login").click(function () {
					  jQuery("form.form").slideDown("slow");
					});
					jQuery("#user-brief .close").click(function () {
					  jQuery("form.form").slideUp("slow");
					});
					 jQuery("#popup-container .close").click(function () {
						jQuery("#popup-container").hide("fast");
                                        });
					
										
				}
   function showHideLeftNav(thisObj,objId) {
	if (objId == 'AtoFsubsection') {
		jQuery('#GtoOsubsection').hide('fast');
		jQuery('#PtoZsubsection').hide('fast');
		jQuery('#'+objId+'').slideDown('fast');
		
	} else if (objId == 'GtoOsubsection') {
		jQuery('#AtoFsubsection').hide('fast');
                jQuery('#PtoZsubsection').hide('fast');
		jQuery('#'+objId+'').slideDown('fast');
	
	} else {
		jQuery('#GtoOsubsection').hide('fast');
                jQuery('#AtoFsubsection').hide('fast');
		jQuery('#'+objId+'').slideDown('fast');
	
	}
	setTimeout("resizeBody();",1000);
}
function resizeBody () {
	leftHeight = $('column-left');
	bodyHeight = $('body');
	midHeight = $('column-mid');
	rightHeight = $('column-right');
	
	// This line is necessary to correct for browser bugs 
	// Element.setStyle('column-mid', {height:''+midH+'px'} );
	var leftH = Element.getDimensions(leftHeight).height;
	var midH = Element.getDimensions(midHeight).height;
	var rightH = Element.getDimensions(rightHeight).height;
	var bodyH = Element.getDimensions(bodyHeight).height;
	
		if (midH > leftH) {
			if (midH > rightH) {
				Element.setStyle('column-left', {height:''+midH+'px'} );
				Element.setStyle('column-right', {height:''+midH+'px'} );
			} else {
				Element.setStyle('column-left', {height:''+rightH+'px'} );
				Element.setStyle('column-mid', {height:''+rightH+'px'} );   
			}
			Element.setStyle('footer', {display:'block'} );
		} else {
			
			if (leftH > rightH) {
				Element.setStyle('column-mid', {height:''+leftH+'px'} );
				Element.setStyle('column-right', {height:''+leftH+'px'} );
			} else {
				Element.setStyle('column-mid', {height:''+rightH+'px'} );
				Element.setStyle('column-left', {height:''+rightH+'px'} );   
			}
			Element.setStyle('footer', {display:'block'} );
		}
}

function ToggleImg(imagename,src1,src2){      
    if(document.images && document.images[imagename]){
        image1=new Image;
        image1.src=src1;
        if(document.images[imagename].src != image1.src){
            document.images[imagename].src = image1.src
        }
        else{
            document.images[imagename].src=src2
        }
    }
}

function ToggleClass (objId,classIdActive,classIdDefault,className) {
	var classObjActive = GetObjRef (classIdActive);
	var classObjDefault = GetObjRef (classIdDefault);
	var className = className;
	var returnObj = GetObjRef (objId);

	if (classObjActive && classObjActive != "") {
		if (classObjActive.className == className) {
			classObjActive.className = className+"-active";
			classObjDefault.className = className;
		}
		else {
			classObjActive.className = className;
			classObjDefault.className = className+"-active";
		}
	}
}
function ToggleClass2 (objId,className) {
	var className = className;
	var returnObj = GetObjRef (objId);
	
	if (returnObj.className == className) {
		returnObj.className = className+"-active";
	}
	else {
		returnObj.className = className;
	}
}

function closeNav(selectedId,selectedClass) {
	var x = document.getElementsByTagName('div');
	var d = selectedId;
	var c = selectedClass;
	for (var i=0;i<x.length;i++) {
		if (x[i].className == c+'-show') {
			x[i].className = c;
		} else if (x[i].className == c) {
			if (x[i].id == d) {
				x[i].className = c+'-show';
			} 
		}
	}
}
function ToggleMoreInfo (e) {
	var divMoreInfo = GetObjectRef ('view-hidden');
	if (e.cancelBubble) {
		e.cancelBubble = true;
	}
	if (divMoreInfo != null) {
			divMoreInfo.style.display = "block";
			SetObjectOffset (divMoreInfo, e);
	}
	return false;
}

function SetObjectOffset (obj, e) {
	var bodyWidth = -1;
	if (document.body.clientWidth) {
		bodyWidth = document.body.clientWidth;
	}
	else if (window.innerWidth) {
		bodyWidth = window.innerWidth;
	}
	
	var offsetY = -1;
	if (obj.offsetHeight) {
		offsetY = obj.offsetHeight;
	}
	
	//var offsetX = -1;
	//if (obj.offsetWidth) {
		//offsetX = obj.offsetWidth;
	//}
	
	if (bodyWidth > -1 && offsetY > -1) {
		// only use offset when we can obtain the bodyWidth and the offset
		var top = 0;
		//var left = 0;
		if (e.pageX) {
			top = e.pageY - offsetY;
			//left = e.pageX - offsetX;
		}
		else if (e.clientX) {
			var scrollTop = 0;
			if (document.body.scrollTop) {
				scrollTop = document.body.scrollTop;
			}
			top = e.clientY - offsetY + scrollTop - 50;
			// left = e.clientX - offsetX;
		}
		if (top < 0) {
			top = 0;
		}
		//if (left < 0) {
			//left = 0;
		//}
		topOffset = top + 30;
		obj.style.top = topOffset + "px";
		// obj.style.left = left + "px";
	}
	
}

function GetObjectRef (ObjId) {
	if (document.getElementById) {
		return document.getElementById (ObjId);
	}
	else if (document.all) {
		return document.all[ObjId];
	}
	else {
		return null;
	}
}

function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if (
aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return strReturn;
}

function getMonthLen(theYear, theMonth) {
	var oneHour = 1000 * 60 * 60
	var oneDay = oneHour * 24
	var thisMonth = new Date(theYear, theMonth, 1)
	var nextMonth = new Date(theYear, theMonth + 1, 1)
	var len = Math.ceil((nextMonth.getTime() - 
		thisMonth.getTime() - oneHour)/oneDay)
	return len
}

function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
             Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d + 2;
}
function validateEmail (thisForm) {
					  var errMsg = "";
					  var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
					  var email1Value = (thisForm.email1.value == "");
					  var email2Value = (thisForm.email2.value == "");
					  var email3Value = (thisForm.email3.value == "");
					  var email4Value = (thisForm.email4.value == "");
					  var email5Value = (thisForm.email5.value == "");
					  var isEmailFilled = (email1Value && email2Value && email3Value && email4Value && email5Value);
				
					  if (isEmailFilled) {
						errMsg += "Colleagues' E-mail Addresses\n";
					  }
					  if (thisForm.YourName.value == "") {
						errMsg += "Your Name\n";
					  }
					  if (!email1Value && !filter.test(thisForm.email1.value)) {
						 errMsg += "Please enter a valid first email address\n";
					  }
					  if (!email2Value && !filter.test(thisForm.email2.value)) {
						 errMsg += "Please enter a valid second email address\n";
					  }
					  if (!email3Value && !filter.test(thisForm.email3.value)) {
						 errMsg += "Please enter a valid third email address\n";
					  }
					  if (!email4Value && !filter.test(thisForm.email4.value)) {
						 errMsg += "Please enter a valid fourth email address\n";
					  }
					  if (!email5Value && !filter.test(thisForm.email5.value)) {
						 errMsg += "Please enter a valid fifth email address\n";
					  }
				
					  if (thisForm.Subject.value == "") {
						errMsg += "Subject\n";
					  }
				
					  if (errMsg != "") {
						alert (errMsg);
						return false;
					  } else {
						return true;
					  }
					}
	function validateEmailFrom (thisForm) {
                                          var errMsg = "";
                                          var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                                          var email1Value = (thisForm.email1.value == "");
                                          var email2Value = (thisForm.email2.value == "");
                                          var email3Value = (thisForm.email3.value == "");
                                          var email4Value = (thisForm.email4.value == "");
                                          var email5Value = (thisForm.email5.value == "");
					  var fromEmailValue = (thisForm.fromEmail.value == "");
                                          var isEmailFilled = (email1Value && email2Value && email3Value && email4Value && email5Value);

                                          if (isEmailFilled) {
                                                errMsg += "Colleagues' E-mail Addresses\n";
                                          }
                                          if (thisForm.YourName.value == "") {
                                                errMsg += "Your Name\n";
                                          }
                                          if (!email1Value && !filter.test(thisForm.email1.value)) {
                                                 errMsg += "Please enter a valid first email address\n";
                                          }
                                          if (!email2Value && !filter.test(thisForm.email2.value)) {
                                                 errMsg += "Please enter a valid second email address\n";
                                          }
                                          if (!email3Value && !filter.test(thisForm.email3.value)) {
                                                 errMsg += "Please enter a valid third email address\n";
                                          }
                                          if (!email4Value && !filter.test(thisForm.email4.value)) {
                                                 errMsg += "Please enter a valid fourth email address\n";
                                          }
                                          if (!email5Value && !filter.test(thisForm.email5.value)) {
                                                 errMsg += "Please enter a valid fifth email address\n";
                                          }
      					  if (!fromEmailValue && !filter.test(thisForm.fromEmail.value)) {
                                                 errMsg += "Please enter a valid from email address\n";
                                          }

                                          if (thisForm.Subject.value == "") {
                                                errMsg += "Subject\n";
                                          }

                                          if (errMsg != "") {
                                                alert (errMsg);
                                                return false;
                                          } else {
                                                return true;
                                          }
                                        }
				
		function validateComment (thisForm) {
		  var errMsg = "";
		  var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		
	
		  if (thisForm.title.value == "") {
			errMsg += "Title\n";
		  }
		  if (thisForm.body.value == "") {
			errMsg += "Comments\n";
		  }
	
		  if (errMsg != "") {
			alert (errMsg);
			return false;
		  } else {
			thisForm.submit();
			return true;
		  }
		}
	function validateProfile (thisForm) {
			
		  var errMsg = "";
		  var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		  if (thisForm.fname.value == "") {
			errMsg += "First Name\n";
		  }
		   if (thisForm.lname.value == "") {
			errMsg += "Last Name\n";
		  }
		  if (thisForm.email.value == "") {
			errMsg += "Your Email Address\n";
		  }
		  
		  if ((thisForm.email.value != "") && !filter.test(thisForm.email.value)) {
			 errMsg += "Please enter a valid email address\n";
		  }
	 	  if ((thisForm.newpass1.value != "") || (thisForm.newpass2.value != "")) {
			  if (thisForm.newpass1.value != thisForm.newpass2.value) {
				errMsg += "Your password and password verification do not match.\n";
			  }
			 if ((thisForm.newpass1.value.length < 6) || (thisForm.newpass2.value.length < 6)) {
				 errMsg += "Your password must be at least 6 characters.\n";
			 }
		  }
		  if (errMsg != "") {
			alert (errMsg);
			return false;
		  } else {
			thisForm.submit();
			return true;
		  }
		}
		function validateRegistration (thisForm) {
                  var errMsg = "";
                  var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                  if (thisForm.fname.value == "") {
                        errMsg += "First Name\n";
                  }
                   if (thisForm.lname.value == "") {
                        errMsg += "Last Name\n";
                  }
                  if (thisForm.email.value == "") {
                        errMsg += "Your Email Address\n";
                  }
                  if ((thisForm.email.value != "") && !filter.test(thisForm.email.value)) {
                         errMsg += "Please enter a valid email address\n";
                  }
                  if (thisForm.newpass1.value == "") {
                        errMsg += "Your Password\n";
                  }
                  if (thisForm.newpass2.value == "") {
                        errMsg += "Your Password Validation\n";
                  }
                  if ((thisForm.newpass1.value != "") || (thisForm.newpass2.value != "")) {
                          if (thisForm.newpass1.value != thisForm.newpass2.value) {
                                errMsg += "Your password and password verification do not match.\n";
                          }
                         if ((thisForm.newpass1.value.length < 6) || (thisForm.newpass2.value.length < 6)) {
                                 errMsg += "Your password must be at least 6 characters.\n";
                         }
                  }
                  if (errMsg != "") {
                        alert (errMsg);
                        return false;
                  } else {
                        return true;
                  }
                }
function validateSubscribe (thisForm) {
		  var errMsg = "";
		  var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		  if (thisForm.full_name.value == "") {
			errMsg += "Full Name\n";
		  }
		  if (thisForm.email.value == "") {
			errMsg += "Your Email Address\n";
		  }
		  if ((thisForm.email.value != "") && !filter.test(thisForm.email.value)) {
			 errMsg += "Please enter a your valid email address\n";
		  }
	
		  if (thisForm.phone.value == "") {
			errMsg += "Phone Number\n";
		  }
		   if (thisForm.address.value == "") {
			errMsg += "Address\n";
		  }
		  if (thisForm.city.value == "") {
			errMsg += "City\n";
		  }
		  if (thisForm.state.value == "") {
			errMsg += "State\n";
		  }
		   if (thisForm.zip.value == "") {
			errMsg += "Zip Code\n";
		  }
		  if (thisForm.billme.checked == false) {
			errMsg += "Subscription\n";
		  }
		  if (errMsg != "") {
			alert (errMsg);
			return false;
		  } else {
			thisForm.submit();
			return true;
		  }
		}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
/*
function validateCheckout (thisForm) {
		  var errMsg = "";
		  var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		  if (thisForm.recipient.value == "") {
			errMsg += "Recipient Name\n";
		  }
		   if (thisForm.shipAddress1.value == "") {
			errMsg += "Address\n";
		  }
		  if (thisForm.shipCity.value == "") {
			errMsg += "City\n";
		  }
		   if (thisForm.shipZip.value == "") {
			errMsg += "Zip Code\n";
		  }
		  if (errMsg != "") {
			alert (errMsg);
			return false;
		  } else {
			thisForm.submit();
			return true;
		  }
		}
*/
function validateCheckout(form) {
         var errMsg = "";
         var requiredInputTextArray = [
            ["recipient", "Recipient Name"],
			["shipAddress1", "Address"],
            ["shipCity", "City"],
            ["shipZip", "Postal Code"]
         ];
         for (var i=0; i<requiredInputTextArray.length; i++) {
            if (form[requiredInputTextArray[i][0]].value == "") {
               errMsg += requiredInputTextArray[i][1] + "\n";
            }
         }
/*
                var requiredSelectArray = [
						["shipState","State"],
                      
                ];
         for (var i=0; i<requiredSelectArray.length; i++) {
            if (form[requiredSelectArray[i][0]].selectedIndex == 0) {
               errMsg += requiredSelectArray[i][1] + "\n";
            }
         }

*/		
         if (errMsg != "") {
            alert ("MISSING FIELD(S):\n\n" + errMsg);
            return false;
         }

         return true;
      }


      function validateOrder(form) {
         var errMsg = "";
         var requiredInputTextArray = [
            ["billAddress1", "Address"],
            ["billCity", "City"],
            ["billZip", "Postal Code"],
			["holder", "Card Holder Name"],
            ["card_no", "Credit Card Number"]
         ];
         for (var i=0; i<requiredInputTextArray.length; i++) {
            if (form[requiredInputTextArray[i][0]].value == "") {
               errMsg += requiredInputTextArray[i][1] + "\n";
            }
         }

                var requiredSelectArray = [
                        ["card_type","Credit Card Type"],
                        ["exp_month","Credit Card Month Expiration"],
                        ["exp_year","Credit Card Year Expiration"]
                ];
         for (var i=0; i<requiredSelectArray.length; i++) {
            if (form[requiredSelectArray[i][0]].selectedIndex == 0) {
               errMsg += requiredSelectArray[i][1] + "\n";
            }
         }

		
         if (errMsg != "") {
            alert ("MISSING FIELD(S):\n\n" + errMsg);
            return false;
         }

         var expireMonth   = parseInt(selectValue(form["exp_month"]));
         var expireYear    = parseInt(selectValue(form["exp_year"]));
         if (!validateCard(form["card_no"].value, selectValue(form["card_type"]), expireMonth, expireYear)) {
            return false;
         }

         setCardExpire(form);

		 // Set the billing fields.

         return true;
      }

      function setCardExpire(form) {
          //form.cardExpire.value = form.cardExpireMonth.value + '/' + form.cardExpireYear.value;
          form.cardExpire.value = form.exp_month.value + '/' + form.exp_year.value;
      }

      function selectValue(select) {
         return select.options[select.selectedIndex].value;
      }
	  
	function addProduct (thisForm,action)  {
		var user_input;
		var user_input_var;
		var title;
		var prodObj;
		var action;
		if (thisForm.product.length) {
			for (i=0;i<thisForm.product.length;i++) {
				if (thisForm.product[i].checked) {
					user_input = thisForm.product[i].value;
					user_input_var = thisForm.product[i].id + 'Var';
					var title = thisForm.product[i].title
				}
			}
		} else {
			if (thisForm.product.checked) {
				user_input = thisForm.product.value;
				user_input_var = thisForm.product.id + 'Var';
				var title = thisForm.product.title
			}
		}
		if (!user_input) {
			alert ('Please select an option to add to your cart.');
			return false;
		} else {
			if (title == 'product') {
				thisForm.action = action + '?productId='+ user_input;
			} else if (title == 'variation') {
				prodObj = $F(user_input_var);
				thisForm.action = action + '?productId='+ prodObj + '&variationId='+ user_input;
			}
			return true;
		}
	}
	 function submitAdvancedSearch (objId) {
		var returnObj = GetObjRef (objId);
		var query = returnObj.query.value;
		var selects = document.getElementsByClassName ("cat-menu", "searchForm");
				selects = $A(selects);
				var msg = "";
				var msgString;
				selects.each (
						function (select, index) {
						var selectValue = $F(select);
						var param = Form.Element.serialize(select.id);
								if (selectValue != "") {
										msg += " AND taxonomy:" + $F(select);
										msgString = msg.substring(5);
								}
						}
				);
				if (!msgString) {
						returnObj.action = '/search?q='+ query;
				} else {
						if (!query) {
								returnObj.action = '/search?q='+ msgString;
						} else {
								returnObj.action = '/search?q='+ query + ' AND ' + msgString;
						}
				}
		return true;
}

	 function validatePoll (thisForm) {
		for(var i = 0; i < thisForm.answerId.length; i++) {
			if(thisForm.answerId[i].checked) {
				return true;
				}
			}
		alert ('Please select at least one option');
		return false;

	 }
function stripGarbage(s) {  
    		var good = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:/_-?&=";
    		var result = "";
			for ( i = 0; i < s.length; i++ ) {
				if ( good.indexOf(s.charAt(i)) >= 0 )
				   result += s.charAt(i);
			}
			return result;
		}
		function stripGarbageStrict(s) {  
    		var good = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    		var result = "";
			for ( i = 0; i < s.length; i++ ) {
				if ( good.indexOf(s.charAt(i)) >= 0 )
				   result += s.charAt(i);
			}
			return result;
		}
   function validateEvent(thisForm) {
         var errMsg = "";
		 var filter = /^([a-zA-Z0-9_\.\-'])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		 thisForm.phone.value = '(' + thisForm.phone1.value + ') ' + thisForm.phone2.value + '-' + thisForm.phone3.value;
		 
		var startDateClean = stripGarbage (thisForm.begin_d.value);
			var startYear = startDateClean.substring(6,10);
			var startMonth = startDateClean.substring(0,2);
			var startDay = startDateClean.substring(3,5);

		var endDateClean = stripGarbage (thisForm.end_d.value);
				var endYear = endDateClean.substring(6,10);
				var endMonth = endDateClean.substring(0,2);
				var endDay = endDateClean.substring(3,5);

		var startDateString = (startYear +"-"+ startMonth +"-"+ startDay);
		var endDateString = (endYear +"-"+ endMonth +"-"+ endDay);
        var requiredInputTextArray = [
            ["company_name", "Company Name"],
			["contact_name", "Contact Name"],
			["phone", "phone"],
			["email", "email"],
			["title", "Title"],
			["main_url", "URL"],
			["begin_d", "Start Date"],
			["end_d", "End Date"],
			["location", "Location"]
         ];
         for (var i=0; i<requiredInputTextArray.length; i++) {
            if (thisForm[requiredInputTextArray[i][0]].value == "") {
               errMsg += requiredInputTextArray[i][1] + "\n";
            }
         }
		var isChecked = false;

		for (var i = 0; i < thisForm.taxonomyId.length; i++) {
		   if (thisForm.taxonomyId[i].checked) {
			  isChecked = true;
		   }
		} if (isChecked == false) {
			errMsg += "Categories of Interest\n";
		}


		if ((thisForm.phone.value.length != 14)) {
			errMsg += "Phone Number\n";
		}

  		if ((thisForm.email.value != "") && !filter.test(thisForm.email.value)) {
			 errMsg += "Valid email address\n";
		  }
		  if (thisForm.main_url.value.indexOf(".") == -1) {
			errMsg += "Valid URL\n";
		  }
		  if (thisForm.main_url.value.indexOf("http://") != -1) {
			errMsg += "Please remove the http:// prefix from your url\n";
		 } 
		
         if (errMsg != "") {
			alert ("MISSING FIELD(S):\n\n" + errMsg);
            return false;
		  } else {
			thisForm.begin_dUnformat.value = thisForm.begin_d.value;
			thisForm.end_dUnformat.value = thisForm.end_d.value;
			thisForm.company_name.value = stripGarbage(thisForm.company_name.value);
			thisForm.contact_name.value = stripGarbage(thisForm.contact_name.value);
			thisForm.main_url.value = stripGarbage(thisForm.main_url.value);
			thisForm.begin_d.value = startDateString;
			thisForm.end_d.value = endDateString;
			
			thisForm.submit();
			return true;
		  }
      }
function TabNext(obj,event,len,next_field) {
	if (event == "down") {
		phone_field_length=obj.value.length;
		}
	else if (event == "up") {
		if (obj.value.length != phone_field_length) {
			phone_field_length=obj.value.length;
			if (phone_field_length == len) {
				next_field.focus();
				}
			}
		}
	}
function checkAll(field)
{
for (i = 0; i < field.length; i++)
	field[i].checked = true ;
}

function uncheckAll(field)
{
for (i = 0; i < field.length; i++)
	field[i].checked = false ;
}
function writeDate(){
        var date = new Date();
        var day = date.getDate();
        var month = date.getMonth();
		var year = date.getFullYear();

        var months = new Array("January","February","March",
                                                                "April","May","June",
                                                                "July", "August","September",   "October","November","December");


        var days= new Array("Sunday","Monday","Tuesday",
                                                "Wednesday","Thursday","Friday",
                                                "Saturday","Sunday");

        document.write(months[month] + " " + day + ", " + year);
}


function pageView (type,key1, key2, ckey) {
        if (ckey == '') {
                if (key2 == '') {
                        $.get("/"+type+"/register-view?key1="+key1);
                } else {
                        $.get("/"+type+"/register-view?key1="+key1+"&key2="+key2);
                }
        } else {
                if (key2 == '') {
                        $.get("/"+type+"/register-view?key1="+key1+"&ckey1="+ckey);
                } else {
                        $.get("/"+type+"/register-view?key1="+key1+"&key2="+key2+"&ckey1="+ckey);
                }
        }
        return false;
}



function autoYear() {
  var time = new Date();
  var year = time.getYear();
 
  if (year < 1900) {
    year = year + 1900;
  }

  var date = year-1; /*change the '25' to the number of years in the past you want to show */
  var future = year + 10; /*change the '10' to the number of years in the future you want to show */ 


  do {
    date++;
    document.write ("<option value=\"" +date+"\">" +date+ "");
  }
  while (date < future)

}

function CalcKeyCode(aChar) {
  var character = aChar.substring(0,1);
  var code = aChar.charCodeAt(0);
  return code;
}

function numCheck(val) {
  var strPass = val.value;
  var strLength = strPass.length;
  var lchar = val.value.charAt((strLength) - 1);
  var cCode = CalcKeyCode(lchar);
  if (cCode < 48 || cCode > 57 ) {
    var myNumber = val.value.substring(0, (strLength) - 1);
    val.value = myNumber;
  }
  return false;
}
function validateProduct(form) {
  if (form.addnumber.value == "") {
     alert("Please fill in a quantity");
     form.addnumber.focus();
	return false;
} else {
return true;	
}
}

