function checkRequiredArray(the_required_fields) {
var errors = new Array();
var x, type;
var cnt = 0;

	for(x = 0; x < the_required_fields.length; x++) 
	{
	    var elementid = the_required_fields[x][0];
	    if(document.getElementById(elementid))
	    {
		//alert("looking at: " + document.getElementById(elementid).name + "  " + document.getElementById(elementid).value);
		if(document.getElementById(elementid).value == '' || document.getElementById(elementid).value == '..')
		    errors[cnt++] = new Array(the_required_fields[x][1],elementid);
	    }
	    else
		    alert("internal error - null element in checkRequiredArray at: " + x + "  " + elementid);
	}
	
	if(errors.length == 0)
		return true;

	if(errors.length == 1)
		alert_string = "The required field " + errors[0][0] + " is empty.";//+ errors[0][1]
	else
	{
		alert_string = "The following required fields are empty:  ";
		for(x = 0; x < errors.length; x++)
		    alert_string += errors[x][0] + ", ";
		alert_string = alert_string.substring(0, alert_string.length-2);
		alert_string += ".";
	}
	alert(alert_string);//+ errors[0][1]
	//alert("above focus " + errors[0][1]);
	element = document.getElementById(errors[0][1])
	if (element != null)
		element.focus();
	//alert("below focus");
	
	return false;
}

function valid_limits(form_name, product_id, the_limit, cart_quantity)
{
	//alert("checking limits: " + product_id + " " + the_limit + "  " + cart_quantity);
	element = document.forms[form_name].elements["Product_Quantity:"+product_id];
	
	if (element == null)
	{
		alert("element " + "Product_Quantity:"+product_id + " is not defined");
		return true;
	}

	quantity=element.value;
	//alert("entering: '" + quantity + "'");
	
	if(quantity == "")
	{
		alert("Please enter a quanity to add");
		element.value = 0;
		return true;
	}
	if(isNaN(quantity))
	{
		alert("Please enter a number: " + quantity);
		element.value = 0;
		return true;
	}
	
	//0 indicates there is no limit for this wine.
	total = parseInt(quantity) + parseInt(cart_quantity);
	if((the_limit > 0) && (total > the_limit))
	{
		if (cart_quantity > 0)
		{
			//alert("quantity: "  + cart_quantity + " adding: " + value + " sum: " + total + " limit: " + the_limit);
			alert("You have " + cart_quantity + " in your cart and there is a limit of " + the_limit + " bottles per order for this wine.");
			element.value=the_limit - cart_quantity;
		}
		else
		{
			alert("Sorry, there is a limit of " + the_limit + " bottles per order for this wine.");
			element.value=the_limit;
		}
		return true;
	}
	return true;
}
//
// Enviroment identificator
//
var localIsDOM = document.getElementById?true:false;
var localIsJava = navigator.javaEnabled();
var localIsStrict = document.compatMode=='CSS1Compat';
var localPlatform = navigator.platform;
var localVersion = "0";
var localBrowser = "";
if(window.opera && localIsDOM) {
	localBrowser = "Opera";
	if(navigator.userAgent.search(/^.*Opera.([\d.]+).*$/) != -1)
		localVersion = navigator.userAgent.replace(/^.*Opera.([\d.]+).*$/, "$1");
	else if(window.print)
		localVersion = "6";
	else
		localVersion = "5";
} else if(document.all && document.all.item)
	localBrowser = 'MSIE';
if(navigator.appName=="Netscape") {
	if(!localIsDOM) {
		localBrowser = 'Netscape';
		localVersion = navigator.userAgent.replace(/^.*Mozilla.([\d.]+).*$/, "$1");
		if(localVersion != '')
			localVersion = "4";
	} else if(navigator.userAgent.indexOf("Safari") >= 0)
		localBrowser = 'Safari';
	else if(navigator.userAgent.indexOf("Netscape") >= 0)
		localBrowser = 'Netscape';
	else if(navigator.userAgent.indexOf("Firefox") >= 0)
		localBrowser = 'Firefox';
	else 
		localBrowser = 'Mozilla';
	
}
if(navigator.userAgent.indexOf("MSMSGS") >= 0)
	localBrowser = "WMessenger";
else if(navigator.userAgent.indexOf("e2dk") >= 0)
	localBrowser = "Edonkey";
else if(navigator.userAgent.indexOf("Gnutella") + navigator.userAgent.indexOf("Gnucleus") >= 0)
	localBrowser = "Gnutella";
else if(navigator.userAgent.indexOf("KazaaClient") >= 0)
	localBrowser = "Kazaa";

if(localVersion == '0' && localBrowser != '') {
	var rg = new RegExp("^.*"+localBrowser+".([\\d.]+).*$");
	localVersion = navigator.userAgent.replace(rg, "$1");
}
var localIsCookie = ((localBrowser == 'Netscape' && localVersion == '4')?(document.cookie != ''):navigator.cookieEnabled);

//
// Opener/Closer HTML block
//
function visibleBox(id,skipOpenClose) {
	elm1 = document.getElementById("open"+id);
	elm2 = document.getElementById("close"+id);
	elm3 = document.getElementById("box"+id);

	if(!elm3)
		return false;

	if (skipOpenClose) {
		elm3.style.display = (elm3.style.display == "")?"none":"";
	} else if(elm1) {
		if (elm1.style.display == "") {
			elm1.style.display = "none";
			if(elm2)
				elm2.style.display = "";
			elm3.style.display = "none";
		} else {
			elm1.style.display = "";
			if(elm2)
				elm2.style.display = "none";
			elm3.style.display = "";
		}
	}
}

//
// URL encode
//
function urlEncode(url) {
	return url.replace(/\s/g, "+").replace(/&/, "&amp;").replace(/"/, "&quot;")
}

//
// Substitute
//
function substitute(lbl) {
var x, rg;
	for(x = 1; x < arguments.length; x+=2) {
		if(arguments[x] && arguments[x+1]) {
			rg = new RegExp("\\{\\{"+arguments[x]+"\\}\\}", "gi");
			lbl = lbl.replace(rg,  arguments[x+1]);
			rg = new RegExp('~~'+arguments[x]+'~~', "gi");
			lbl = lbl.replace(rg,  arguments[x+1]);
		}
	}
	return lbl;
}

function populateProfile() {
document.registerform.b_first_name.value = document.registerform.firstname.value;
document.registerform.b_last_name.value = document.registerform.lastname.value
}