var step=1;
function step1(){
	if (step==1) return;
	step = 1;
	document.getElementById("step1").className = "activestep";
	document.getElementById("step2").className = "inactivestep";
//	if (thisCategory=="Entry") thisCategory = "Top Titles";
	thisCategory = oldCategory;
}
function step2(){
	if (step==2) return;
	step = 2;
	oldCategory = thisCategory;
	thisCategory = "Entry";
	document.getElementById("features").style.display = "none";
	document.getElementById("linelist").style.display = "none";
	document.getElementById("continueButton").style.display = "none";
	document.getElementById("submitButton").style.display = "block";
	document.getElementById("bonusdetails").style.display = "block";
	document.getElementById("entryForm").style.display = "block";
	document.getElementById("catHeader").style.backgroundColor = categoryPage[thisCategory][1];
	document.getElementById("catHeader").style.background = "url(assets/" + categoryPage[thisCategory][3] + ".gif)";
	document.getElementById("catHeader").innerHTML = categoryPage[thisCategory][0];
	document.getElementById("more").innerHTML = "<div style='color:#fff' class='bigger'>Bonus Prize!</div>";
	catColor = categoryPage[thisCategory][1];
	document.getElementById("more").style.backgroundColor = catColor;
	document.getElementById("more").style.background = "url(assets/" + categoryPage[thisCategory][3] + "_small.gif)";
	document.getElementById("catBlurb").innerHTML = categoryPage[thisCategory][2];
	document.getElementById("step1").className = "inactivestep";
	document.getElementById("step2").className = "activestep";
	document.body.scrollTop = 0;
	window.scrollTo(0,0)
}

catColor = "black";
	DeleteCookie("minimag");

//check for existing order in "minimag" cookie
order = getNameVal("minimag", "order"); // attempt to read cookie
if (!order) order = ["", "", ""]; // create empty order array if no cookie found
else order = order.split(","); // if cookie found, create order array

orderTotal = 0; // keeps track of total items in cart
orderLimit = 3; // maximum number of items allowed
function initCart(){
	for (i=0; i<order.length; i++){
		if (order[i] != "") orderTotal++;
	}
	updateCart();
	//
	q = document.location.search.substring(1);
	if (q=="") return;
	pairs = q.split("&");
	for (i=0; i<pairs.length; i++){
		qName = pairs[i].split("=")[0];
		if (qName=="Segment_sourceKey") continue;
		qValue = unescape(pairs[i].split("=")[1]);
		if (!document.forms[0][qName]) {
			html = '<input type="hidden" name="' + qName + '" value="' + qValue + '">';
			document.getElementById("hiddenFields").innerHTML += html;
		}else document.forms[0][qName].value = qValue;
	}
	//testForm();
}
function testForm(){
	o = "";
	for (i=0; i<document.forms[0].elements.length; i++){
		o += document.forms[0].elements[i].name + ", ";
	}
	alert(o);
}
function addItem(title){
	var code = "";
	// check cart first
	if (orderTotal == orderLimit){
		alert("Your cart is full. You may order up to " + orderLimit + " magazines.\nPlease review your selections and try again.");
		return;
	}

	//clean up title:
	title = title.replace(/&/g, "&amp;"); // ampersands
	//title = title.replace(/_/g, "&#39;"); // apostrophes

	// find order code first
	for (i=0; i<magazines.length; i++){
		if (magazines[i][4].toLowerCase() == title.toLowerCase()){
			code = magazines[i][3].toUpperCase(); // order code
			issues = magazines[i][6].substr(0, magazines[i][6].indexOf("/")); // number of issues
			break;
		}
	}
	if (code=="") alert("Title not found!!");
	
	// trim trailing space used to distinguish different offers for same title
	if (title.charAt(title.length-1) == " ") title = title.slice(0, -1) 
	
	// find duplicate order
	for (i=0; i<order.length; i++){
		if (order[i].split("|")[1] && order[i].split("|")[1].toLowerCase() == title.toLowerCase()) {
			title = title.replace(/_/g, "'")
			title = title.replace(/&amp;/g, "&")
			//alert("The title \"" + title + "\" is already in your cart.\nPlease review your selections.");
			return;
		}
	}
	
	// find empty slot in order array
	for (i=0; i<order.length; i++){
		if (order[i]=="") {
			order[i] = code + "|" + title + "|" + issues; // store order details as string 
			orderTotal++;
			break;
		}
	}
	// update cookie and cart
	//alert(order)
	updateCart();
}

function removeItem(code){
	for (i=0; i<order.length; i++){
		orderItem = order[i].split("|");
		if (orderItem[0] == code){
			order[i] = "";
			orderTotal--;
			break;
		}
	}
	//re-sort (move empty slots to end of list):
	tmp = [];
	for (i=0; i<order.length; i++){
		if (order[i] != ""){
			tmp[tmp.length] = order[i];
		}
	}
	for (i=0; i<order.length; i++){		
		if (tmp[i]) order[i] = tmp[i];
		else order[i] = "";
	}
	// update cookie and cart
	updateCart();
}

function updateCart(){
	setNameVal("minimag", "order", order.toString()); // write order to cookie
	if (orderTotal==0){ // cart is empty
		document.getElementById("cartRemoveItem1").innerHTML = "";
		document.getElementById("cartRemoveItem2").innerHTML = "";
		document.getElementById("cartRemoveItem3").innerHTML = "";
		document.getElementById("cartRemoveItem1").style.borderBottom = "0px solid #FFF";
		document.getElementById("cartRemoveItem2").style.borderBottom = "0px solid #FFF";
		document.getElementById("cartRemoveItem3").style.borderBottom = "0px solid #FFF";
		document.getElementById("cartItem1").innerHTML = "<div>Your shopping cart is empty.<br>Choose up to three titles<br>and PAY NOTHING NOW!</div>".bold();
		document.getElementById("cartItem1").style.borderBottom = "0px solid #FFF";
		document.getElementById("cartItem2").style.borderBottom = "0px solid #FFF";
		document.getElementById("cartItem3").style.borderBottom = "0px solid #FFF";
		document.getElementById("instructions").style.display="none";
		
	}else{	// cart not empty, so:
		// update shopping cart display
		document.getElementById("instructions").style.display="block";
		for (i=0; i<order.length; i++){
			if (order[i] == "") {
				document.getElementById("cartItem" + (i+1)).innerHTML = "";
				document.getElementById("cartRemoveItem" + (i+1)).innerHTML = "";
				document.getElementById("cartItem" + (i+1)).style.borderBottom = "0px solid #FFF";
				document.getElementById("cartRemoveItem" + (i+1)).style.borderBottom = "0px solid #FFF";
			}else{
				orderItem = order[i].split("|");
				title = orderItem[1].replace(/_/g, "'")
				document.getElementById("cartItem" + (i+1)).innerHTML = (i+1) + ". <b>"  + title + "</b>, <font size='1'>" + orderItem[2] + " Iss.</font>";
				remove = "<a href='javascript:removeItem(\"" + orderItem[0] + "\")'>";
				remove += "<img name='remove" + (i+1) + "' src='assets/cross.gif' border='0'></a>"
				document.getElementById("cartRemoveItem" + (i+1)).innerHTML = remove;
				//if (i!=order.length-1){
					document.getElementById("cartItem" + (i+1)).style.borderBottom = "1px solid #CCC";
					document.getElementById("cartRemoveItem" + (i+1)).style.borderBottom = "1px solid #CCC";
				//}
			}
		}	
	}
	//alert(document.getElementById("cart").style.width);
}

function buildProductList(){
	// read product codes from orderlist and store in hidden "ProductList" field
	document.frmOrder.ProductList.value = "";
	for (i=0; i<order.length; i++) document.frmOrder.ProductList.value += order[i].split("|")[0] + (i<order.length-1?",":"");
}

function writeOrder(){
	// write order codes into hidden "OrderItem" fields
	var tmp = "";
	for (i=0; i<order.length; i++){
		if (order[i] == "") continue;
		code = order[i].split("|")[0];
		tmp += "<input type=\"hidden\" name=\"OrderItem_" + code + "\" value=\"" + code + "\">";
	}
	document.getElementById("orderitems").innerHTML = tmp;
}

function handleLink(url){
	// go to given URL while maintaining the query string
	document.location.href= url + document.location.search;
}

function getURLValue(v){
	q = document.location.search.substring(1);
	if (q=="") return q;
	pairs = q.split("&");
	for (i=0; i<pairs.length; i++){
		if (pairs[i].split("=")[0].toLowerCase() == v.toLowerCase()) return unescape(pairs[i].split("=")[1]);
	}
	return "";
}


////////////////////////////////////////////////////////////
function buildFeatures(){
	var markup = ""	
	markup += '<table border=0 cellpadding=0 cellspacing=0 width="100%">';
	for (i=0; i<features.length; i++){
		if (features[i][0] == thisCategory){
			start = i;
			break;
		}
	}
	for (i=start; i<features.length; i+=2){
		markup += '<tr valign="top">';
		for (j=0; j<2; j++){
			if (features[i+j][0]!=thisCategory) {
				j = 1;
				i=features.length+2;
				break;
			}
			for (k=0; k<magazines.length; k++){
				if (magazines[k][4] == features[i+j][1]){
					markup += '<td width="120"><img src="assets/covers/' + features[i+j][2] + '" border="1" align="top"><br><br><br></td>';
					markup += '<td width="12">&nbsp;</td>';
					safetitle = magazines[k][4];
					title = safetitle.replace(/_/g, "'");					
					issues = magazines[k][6].substr(0, magazines[k][6].indexOf("/")); // number of issues
					price = magazines[k][7];
					premium = magazines[k][11].replace(/_/g, "'");
					premium = premium.replace("*", "<b>"); // first asterisk
					premium = premium.replace("*", "</b>"); // second asterisk
					premium = premium.replace("*", "<b>"); // third asterisk
					premium = premium.replace("*", "</b>"); // fourth asterisk
					blurb = magazines[k][12].replace(/_/g, "\'");
					blurb = capitalize(blurb)
					savings = magazines[k][13];

					markup += '<td style="border-top:1px solid #ccc">';
					markup += '<div class="bigger" style="color:' + catColor + '">' + title + '</div>';
					markup += '<div><font size="1"><i>' + blurb + '</i></font></div><br>';
					markup += '<div><font size="1">' + issues + ' Issues</font></div>';
					markup += '<div><b>4 Payments Each Only <span class="orange bigger">$' + price + '</span></b></div>';
					markup += '<span style="background:#ff0"><font size="2"><b>' + savings + '</b></span></br>';
					markup += '<div><font color="#003399" size="1"><i>' + premium + '</i></font></div>';
					markup += '<div><a href="javascript:addItem(\'' + safetitle + '\')" onMouseOver="document.addf_'+(k)+'.src=\'assets/add_over.gif\'" onMouseOut="document.addf_'+(k)+'.src=\'assets/add.gif\'"><img vspace="8" title="'+blurb+'" src="assets/add.gif" border="0" name="addf_' + (k) + '"></a></div>';					
					markup += '</td>';
					markup += '<td width="24">&nbsp;</td>';
					break; 
				}
			}
			
		}
		markup += '</tr>';
	}
	markup += '</table>';
	return markup;
}
function buildList(){
	document.getElementById("more").innerHTML = "<div style='color:#fff'><b>More <span class='bigger'>" + categoryPage[thisCategory][0] + "</span>"+ (thisCategory=="Top Titles"?"":" titles") + ":</b></div>";
	document.getElementById("more").style.backgroundColor = catColor;
	document.getElementById("more").style.background = "url(assets/" + categoryPage[thisCategory][3] + "_small.gif)";
	var markup = "";
	markup += '<table border=0 cellpadding=0 cellspacing=0 width="100%">';
	
	// find the start index of the current category;
	for (i=0; i<magazines.length; i++){
		if (magazines[i][0] == thisCategory){
			start = i;
			break;
		}
	}
	// build the entry
	line = 0;
	for (i=start; i<magazines.length; i+=2){
		if (magazines[i][0] == thisCategory){
			markup += '<tr valign="top">';
			line++;
			for (j=0; j<2; j++){
				if (magazines[i+j][0] == thisCategory){ // need another check here to prevent overshooting into next category
					safetitle = magazines[i+j][4];
					title = safetitle.replace(/_/g, "'");
					issues = magazines[i+j][6].substr(0, magazines[i+j][6].indexOf("/")); // number of issues
					price = magazines[i+j][7];
					premium = magazines[i+j][11].replace(/_/g, "'");
					premium = premium.replace("*", "<b>"); // first asterisk
					premium = premium.replace("*", "</b>"); // second asterisk
					premium = premium.replace("*", "<b>"); // third asterisk
					premium = premium.replace("*", "</b>"); // fourth asterisk
					blurb = magazines[i+j][12].replace(/_/g, "\'");
					blurb = capitalize(blurb)
					savings = magazines[i+j][13];
					
					hilite = Math.random()>Math.random();
					markup += '<td width="40" valign="top" style="padding-top:8px"><a href="javascript:addItem(\'' + safetitle + '\')" onMouseOver="document.add_'+(i+j)+'.src=\'assets/add_over.gif\'" onMouseOut="document.add_'+(i+j)+'.src=\'assets/add.gif\'"><img title="'+blurb+'" src="assets/add.gif" hspace="2" border="0" name="add_' + (i+j) + '"></a></td>';
					markup += '<td style="padding-right:4px;padding-top:8px; padding-bottom:4px; border-top:1px solid ' + (line==1?'#fff':'#ccc') + '"><b>' + title + '</b>, <font size="1">' + issues + ' Issues</font><br>';
					markup += '<font size="1"><b>4 Payments Each Only</b></font> <b><span class="orange">$' + price + '</span></b><br>';
					markup += '<font color="#003399" size="1"><i>' + premium + '</i></font><br></td>';
				}else{
					markup += '<td>&nbsp;</td><td>&nbsp;</td>';
				}
			}
			markup += '</tr>';
			//document.write(markup); 
		}
		
	}
	markup += '</table>';
	return markup;
	
}

function showCategory(cat){
	thisCategory = cat.id;
	oldCategory = thisCategory;
	step1();
	initList();
	document.body.scrollTop=0;
	window.scrollTo(0,0)
}
function initList(){
	html = buildFeatures();
	document.getElementById("features").innerHTML = html;
	document.getElementById("features").style.display = "block";
	document.getElementById("bonusdetails").style.display = "none";
	document.getElementById("entryForm").style.display = "none";
	document.getElementById("continueButton").style.display = "block";
	document.getElementById("submitButton").style.display = "none";
	html = buildList();
	document.getElementById("linelist").style.display = "block";
	document.getElementById("linelist").innerHTML = html;
	document.getElementById("catHeader").style.backgroundColor = categoryPage[thisCategory][1];
	document.getElementById("catHeader").style.background = "url(assets/" + categoryPage[thisCategory][3] + ".gif)";
	document.getElementById("catHeader").innerHTML = categoryPage[thisCategory][0];
	document.getElementById("catBlurb").innerHTML = categoryPage[thisCategory][2];
}



function catOver(elem){	
	document.getElementById(elem.id).style.color = "#ffffff";
	catColor = categoryPage[elem.id][1];
	document.getElementById(elem.id).style.backgroundColor = categoryPage[elem.id][1];
	document.getElementById(elem.id).style.background = "url(assets/" + categoryPage[elem.id][3] + "_small.gif) repeat-x";
	document.getElementById(elem.id).style.borderBottom = "1px solid black";
	document.getElementById(elem.id).style.borderTop = "1px solid #000";
}
function catOut(elem){
	document.getElementById(elem.id).style.color = "#000000";
	document.getElementById(elem.id).style.backgroundColor = "#ffffff";
	//if (elem.id=="Women_s") document.getElementById(elem.id).style.background = "url(assets/grad_bot.gif)";
	document.getElementById(elem.id).style.background = "url(assets/spacer.gif)";
	document.getElementById(elem.id).style.borderBottom = "1px solid #ccc";
	document.getElementById(elem.id).style.borderTop = "1px solid #fff";
}
	
	
function capitalize(stringIn){
	// capitalizes all words in a string
	result = "";
	stringIn = stringIn.split(/\s+/); // split on any white space
	for (var i=0; i<stringIn.length; i++){
		result += ((i==0)?"":" ") + stringIn[i].charAt(0).toUpperCase() + stringIn[i].substring(1).toLowerCase();
	}
	return result;
}
function showDrag(elem){
	document.getElementById(elem).style.color = "#000";
	document.getElementById(elem).style.backgroundColor = "#ff0";
}
function hideDrag(elem){
	document.getElementById(elem).style.color = "#999";
	document.getElementById(elem).style.backgroundColor = "#fff";
}
////////////////////////////////////////////////////////////
function validateOrderInfo() {
	// clean up form data first:
	var title = f.Title.selectedIndex
	var fname = f.FName.value = Trim(f.FName.value)
	var lname = f.LName.value = Trim(f.LName.value)
	var email = f.Email.value = Trim(f.Email.value)
	var address1 = f.Address1.value = Trim(f.Address1.value)
	var address2 = f.Address2.value = Trim(f.Address2.value)
	var city = f.City.value = Trim(f.City.value)
	var state = f.State.selectedIndex
	var zip = f.Zip.value =Trim(f.Zip.value)

	errors = new Array();
	if(title==0){
		errors.push("Title");
	}
	if(fname=="" || !strRegEx_FName.test(fname)){
		errors.push("FName");
	}
	if(lname=="" || !strRegEx_LName.test(lname)){
		errors.push("LName");
	}
	if(address1==""|| (!strRegEx_Address1.test(address1))){
		errors.push("Address1");
	}
	if(address2 !="" && (!strRegEx_Address2.test(address2))){
		errors.push("Address2");
	}
	if(city==""|| (!strRegEx_City.test(city))){
		errors.push("City");
	}
	if(state==0){
		errors.push("State");
	}
	if(zip==""|| (!strRegEx_Zip.test(zip))){
		errors.push("Zip");
	}
	if(email=="" || !strRegEx_Email.test(email)){
		errors.push("Email");
	}
	if (!checkEmail(f.Email,"Email")) {
		errors.push("Email");
//		return false;
	}	
	
	if (errors.length==0) {
		buildProductList();
		writeOrder();
		f.submit();
		return;
	}

	for (i=0; i<errors.length; i++){
		document.body.scrollTop = 0;
		window.scrollTo(0,0)
		if (i==0) f[errors[i]].focus();
		document.getElementById("label" + errors[i]).className = "inputLabelError";
		document.getElementById(errors[i]).className = "inputError";
	}
	alert("There are errors in your entry information. \nPlease review the items highlighted in red.")
	return;
	
}
