

function mouseX(evt)
{
	if (!evt) evt = window.event; if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return 0;
}

function mouseY(evt)
{
	if (!evt) evt = window.event; if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return 0;
}

function pageWidth()
{
	return window.innerWidth != null? window.innerWidth: document.body != null? document.body.clientWidth:null;
}

function pageHeight()
{
	return window.innerHeight != null? window.innerHeight: document.body != null? document.body.clientHeight:null;
}

function posLeft()
{	
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset:document.documentElement.scrollLeft? document.documentElement.scrollLeft:document.body.scrollLeft? document.body.scrollLeft:0;
}
			
function posTop()
{
	return typeof window.pageYOffset != 'undefined' ? window.pageYOffset:document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop?document.body.scrollTop:0;
}
			
function posRight()
{
	return posLeft()+pageWidth();
}

function posBottom()
{
	return posTop()+pageHeight();
}

//var ntry = []; function ct(i,c) {this.X = Xpos;this.Y = Ypos;this.dx = 0;this.dy = 0; document.write('<div id="ct'+i+'" style="position:absolute">'+c+'<\/div>');} function newPos(e) {Xpos = mouseX(e);Ypos = mouseY(e);ntry[0].X = Xpos;ntry[0].Y = Ypos;} function follow() {var spd = 6; var SCR = 20; document.getElementById('ct0').style.left = ntry[0].X; document.getElementById('ct0').style.top = ntry[0].Y; for (var i = 1 ; i <= numct; i++ ) {var bn = new obj(); if (i > 0) spull(i, i-1, bn); if (i < numct) spull(i, i+1, bn); ntry[i].dx += (bn.X - ntry[i].dx * spd)/ 100; ntry[i].dy += (bn.Y -ntry[i].dy * spd + 60)/100; ntry[i].X += ntry[i].dx; ntry[i].Y += ntry[i].dy; if (ntry[i].Y >=  posBottom() - document.getElementById('ct'+i).style.height-SCR) {if (ntry[i].dy > 0) ntry[i].dy = -ntry[i].dy; ntry[i].Y = posBottom() - document.getElementById('ct'+i).style.height-SCR;} if (ntry[i].Y <=  posTop()) {if (ntry[i].dy < 0) ntry[i].dy = -ntry[i].dy; ntry[i].Y = posTop()} if (ntry[i].X >= posRight() - document.getElementById('ct'+i).style.width-SCR) {if (ntry[i].dx > 0) ntry[i].dx = -ntry[i].dx; ntry[i].X = posRight() - document.getElementById('ct'+i).style.width-SCR;} if (ntry[i].X <= posLeft()) {if (ntry[i].dx < 0) ntry[i].dx = -ntry[i].dx; ntry[i].X = posLeft();} document.getElementById('ct'+i).style.left = ntry[i].X; document.getElementById('ct'+i).style.top = ntry[i].Y;}} function obj() {this.X = 0; this.Y = 0;} function spull(i, j, bn) {var SL = 10; var dx = (ntry[j].X - ntry[i].X); var dy = (ntry[j].Y - ntry[i].Y); var ln = Math.sqrt(dx*dx + dy*dy); if (ln > SL) {var sF = 8 * (ln - SL); bn.X += (dx / ln) * sF; bn.Y += (dy / ln) * sF;}} document.onmousemove = newPos;
       
function popupWindow(o,d)
{
	// o - Object to display.
	// d - Display, true =  display, false = hide
      
	var obj = document.getElementById(o);
	if(d)
		obj.style.display = 'block';
	else
		obj.style.display = 'none';
}
 
function showDv(o,d)
{
	// o - Object to display.
	// d - Display, true =  display, false = hide
      
	var obj = document.getElementById(o);
	if(d)
		obj.style.display = 'block';
	else
		obj.style.display = 'none';
}
	  
function alltrim(str) {
	return str.replace(/^\s+|\s+$/g, '');
}

function isEmail(mailvalue) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(mailvalue))
	{	return (true)
	}
	return (false)
}

function IsNumeric(sText)
{
	var i = 0;
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;

}

function isEmpty(str)
{	var strTrim

	if (alltrim(str) == "")
	{
		return true
	}
	
	return false
}

function GetRandom(fNumber)
{
    var ranNum= Math.floor(Math.random()*fNumber);
    return ranNum;
}

function isValidCreditCard(type, ccnum) {
   if (type == "VI") {
      // Visa: length 16, prefix 4, dashes optional.
      var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
   } else if (type == "MC") {
      // Mastercard: length 16, prefix 51-55, dashes optional.
      var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
   } else if (type == "DI") {
      // Discover: length 16, prefix 6011, dashes optional.
      var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
   } else if (type == "AX") {
      // American Express: length 15, prefix 34 or 37.
      var re = /^3[4,7]\d{13}$/;
   } else if (type == "Diners") {
      // Diners: length 14, prefix 30, 36, or 38.
      var re = /^3[0,6,8]\d{12}$/;
   }
   
   if (!re.test(ccnum)) return false;
   // Remove all dashes for the checksum checks to eliminate negative numbers
   ccnum = ccnum.split("-").join("");
   // Checksum ("Mod 10")
   // Add even digits in even length strings or odd digits in odd length strings.
   var checksum = 0;
   for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
      checksum += parseInt(ccnum.charAt(i-1));
   }
   // Analyze odd digits in even length strings or even digits in odd length strings.
   for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
      var digit = parseInt(ccnum.charAt(i-1)) * 2;
      if (digit < 10) { checksum += digit; } else { checksum += (digit-9); }
   }
   if ((checksum % 10) == 0) return true; else return false;
}

function fnUpdQty(f)
{
	var curQty
	curQty = document.getElementById("qty").value
	if (isNaN(curQty))
	{
		curQty = 1
	} else
	{
		curQty = parseInt(curQty)
	}
	
	if (f == '-')
	{
		if (curQty > 1)
		{
			document.getElementById("qty").value = curQty - 1
		}
	} else
	{
		document.getElementById("qty").value = curQty + 1
	}
	
	document.getElementById("dvQty").innerHTML = document.getElementById("qty").value
}
	
function fnChangeTab(dvBox)
{
	document.getElementById("AddnContent").style.display = 'none';
	document.getElementById("AddnRecipes").style.display = 'none';
	document.getElementById("AddnNutrition").style.display = 'none';
	document.getElementById("AddnGuarantee").style.display = 'none';
	document.getElementById(dvBox).style.display = 'block';

	if (document.getElementById("tab1") != null) {
		document.getElementById("tab1").style.color = '#48666e';
	}
	

	if (document.getElementById("tab2") != null) {
		document.getElementById("tab2").style.color = '#48666e';
	}
	
	if (document.getElementById("tab3") != null) {
		document.getElementById("tab3").style.color = '#48666e';
	}
	
	if (document.getElementById("tab4") != null) {
		document.getElementById("tab4").style.color = '#48666e';
	}


	switch(dvBox)
	{
	case "AddnContent":
		document.getElementById("tab1").style.color = 'white';
		break;    
	case "AddnRecipes":
		document.getElementById("tab2").style.color = 'white';
		break;
	case "AddnNutrition":
		document.getElementById("tab3").style.color = 'white';
		break;
	case "AddnGuarantee":
		document.getElementById("tab4").style.color = 'white';
		break;

	default:
	
	}
}


function AddSiteReview() {
    var myWin
	
    myWin = window.open("sitereview.asp", "review", "width=530, height=650,toolbar=no, resizable=0,scrollbars=yes,menubar=no,status=no");
	myWin.focus()
}

function view(ival) {
    var myWin
	
    myWin = window.open(ival, "view", "width=750, height=650,toolbar=no, resizable=0,scrollbars=yes,menubar=no,status=no");
	myWin.focus()
}

var AskedMultipleShipTo = window.location.search.indexOf('AskedMultipleShipTo') > -1 ? true : false;
function fnCart_UpdateShipMethod(f, shipTo, fCartID)
{
	var url_UpdateShipMethod = "";

	if (multipleshipto > 9 && !AskedMultipleShipTo)
	{
		
		var updateallship = confirm("Would you like to use this shipping method for all recipients? (OK=YES / CANCEL=NO)");
		if (updateallship == true)
		{
			//url_UpdateShipMethod = "cart-item.asp?prc=updShipMethod&shipto=ALLSHIPLOCATION&shipmethod=" + f.value + "&cartid=" + fCartID;
			shipTo = "ALLSHIPLOCATION"
			AskedMultipleShipTo = false;
		} else AskedMultipleShipTo = true;
		
	} 
	url_UpdateShipMethod = "cart-item.asp?prc=updShipMethod&shipto=" + shipTo + "&shipmethod=" + f.value + "&cartid=" + fCartID + (AskedMultipleShipTo ? "&AskedMultipleShipTo=1" : "");
	//alert(url_UpdateShipMethod);
	window.location.replace(url_UpdateShipMethod)
}

function fnAddCards(f,recID, fCartID)
{
	var urlAddCrt
	urlAddCrt = "cart-item.asp?prc=addcrd&chkbx=" + f.checked + "&rid=" + recID + "&cartid=" + fCartID

	window.location.replace(urlAddCrt)
}


// calculate the ASCII code of the given character
function CalcKeyCode(aChar) {
  var character = aChar.substring(0,1);
  var code = aChar.charCodeAt(0);
  return code;
}

function checkNumber(val, mxLen, nxtVal) {
	var strPass = val.value;
	var strLength = strPass.length;
	var lchar = val.value.charAt((strLength) - 1);
	var cCode = CalcKeyCode(lchar);

	/* Check if the keyed in character is a number
	     do you want alphabetic UPPERCASE only ?
	     or lower case only just check their respective
	     codes and replace the 48 and 57 */

	if (cCode < 48 || cCode > 57 ) {
		var myNumber = val.value.substring(0, (strLength) - 1);
		val.value = myNumber;
	}
  
	if (val.value.length == mxLen)
	{
		//document.getElementById(nxtVal).select()
		document.getElementById(nxtVal).focus();
	}

	return false;
}

var ie = /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);


// Flash Player Version Detection - Rev 1.5
// Detect Client Browser type
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;			
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			if ( descArray[3] != "" ) {
				tempArrayMinor = descArray[3].split("r");
			} else {
				tempArrayMinor = descArray[4].split("r");
			}
			var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
    var str = '';
    if (isIE && isWin && !isOpera)
    {
  		str += '<object ';
  		for (var i in objAttrs)
  			str += i + '="' + objAttrs[i] + '" ';
  		for (var i in params)
  			str += '><param name="' + i + '" value="' + params[i] + '" /> ';
  		str += '></object>';
    } else {
  		str += '<embed ';
  		for (var i in embedAttrs)
  			str += i + '="' + embedAttrs[i] + '" ';
  		str += '> </embed>';
    }

    document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}


//used in the business day calculation
Date.prototype.addDays = function(days) {
    this.setDate(this.getDate() + days);
}


//************************************************************************************************
// function chkZipCountry
// created on 09.30.2009
//************************************************************************************************
function chkZipCountry(eleZip, eleCountry) {
    var tmpZip = document.getElementById(eleZip).value;
    var tmpCountry = document.getElementById(eleCountry).value;
    var errMsg = "";

    switch (tmpCountry) {
        case "USA":
            if ((tmpZip.length > 5) || (tmpZip.length < 5) || (IsNumeric(tmpZip) == false)) { errMsg = "5 digit maximum allowed for zip codes for US and 6 digit for CA." }
            break;

        case "CANADA":
            var temp = tmpZip.replace(" ", "");
            if ((temp.length > 6) || (temp.length < 6)) { errMsg = "5 digit maximum allowed for zip codes for US and 6 digit for CA." }
            break;
        //default: 
    }

    return errMsg;
}
getViewportWidth = function() {
  var width = 0;
  if( document.documentElement && document.documentElement.clientWidth ) {
	width = document.documentElement.clientWidth;
  }
  else if( document.body && document.body.clientWidth ) {
	width = document.body.clientWidth;
  }
  else if( window.innerWidth ) {
	width = window.innerWidth - 18;
  }
  return width;
}

getViewportHeight = function() {
  var height = 0;
  if( document.documentElement && document.documentElement.clientHeight ) {
	height = document.documentElement.clientHeight;
  }
  else if( document.body && document.body.clientHeight ) {
	height = document.body.clientHeight;
  }
  else if( window.innerHeight ) {
	height = window.innerHeight - 18;
  }
  return height;
}

getViewportScrollY = function() {
  var scrollY = 0;
  if( document.documentElement && document.documentElement.scrollTop ) {
	scrollY = document.documentElement.scrollTop;
  }
  else if( document.body && document.body.scrollTop ) {
	scrollY = document.body.scrollTop;
  }
  else if( window.pageYOffset ) {
	scrollY = window.pageYOffset;
  }
  else if( window.scrollY ) {
	scrollY = window.scrollY;
  }
  return scrollY;
}
function reShowVeil() {
	if (document.getElementById('veil'))
	{
		if(document.getElementById('veil').style.display == 'block') loadVeil();
	}
}
function hideVeil() {
	var veil = document.getElementById('veil');
	if(veil.style.display == 'block') veil.style.display = 'none';
	var a;
	if(!document.getElementById('dvPPalpopup')) {
		a = document.createElement('DIV');
		a.id = 'dvPPalpopup';
		document.body.appendChild(a);
	}
	a = document.getElementById('dvPPalpopup');
	a.style.display = 'none';
}
function loadVeil() {
	var veil = document.getElementById('veil');
	veil.style.height = (document.body.offsetHeight > document.body.scrollHeight ? document.body.offsetHeight : document.body.scrollHeight)+'px';
	veil.style.width = 	(isIE ? document.body.clientWidth : document.width)+'px';
	veil.style.filter = 'alpha(opacity=50)';
	veil.style.top = 0;
	veil.style.left = 0;
	veil.style.display = 'block';
}
function viewWindow(CartID) {
	var a;
	var imgHTML;
	var divWidth;
	var divHeight;
	if(!document.getElementById('dvPPalpopup')) {
		a = document.createElement('DIV');
		a.id = 'dvPPalpopup';
		document.body.appendChild(a);
	}
	a = document.getElementById('dvPPalpopup');
	loadVeil();
	divWidth = 320;
	divHeight = 340;
	var setX = ( getViewportWidth() - divWidth ) / 2;
	var setY = ( getViewportHeight() - divHeight ) / 2;
	if( setX < 0 ) setX = 0;
	if( setY < 0 ) setY = 0;
	imgHTML = '';
	imgHTML = imgHTML + '<h3>Important Notice</h3><p>If you are shipping to more than one recipient, you will only be required to enter one recipient address on the PayPal site. You will be returned to Hickory Farms to complete the rest of the shipping details.</p><a href="/paypalcheckout.asp?cartid=' + CartID + '&amp;express=Y">Continue to PayPal</a><a href="javascript:hideVeil()">Back to Cart</a>';
	a.innerHTML = imgHTML;
	a.style.left = "30%";
	a.style.top = getViewportScrollY() + setY + "px";
	a.style.display = 'block';
}