//numItems is used for the instant search, and if not passed on through the preLoader script is set to 0 to avoid a Javascript error
if(!numItems)
	var numItems = 0;

//Generic function for alerting a form error
function sendKill()
{
	alert('Please Enter all Required Items');	
	return false
}

//Variables for the sliding cells...

//5 seconds for all slides
var timerlen = 5;
var slideAniLen = 500;
var scrollRatio = 1;
var spinIntermediary;

//Various IDs for the sliders, keeps track of the states of multiple divs
var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

//Open up the cell
function slidedown(objname){

	if(moving[objname])
			return;
	
	if(document.getElementById("editContent_" + objname).style.display != "none")
			return; // cannot slide down something that is already visible
	
	moving[objname] = true;

	
	dir[objname] = "down";
	startslide(objname);
}

//Close the cell
function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById("editContent_" + objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

//Initialize
function startslide(objname){
	obj[objname] = document.getElementById("editContent_" + objname);

	endHeight[objname] = Math.round(parseInt(obj[objname].style.height));
	startTime[objname] = (new Date()).getTime();

	if(dir[objname] == "down"){
			obj[objname].style.height = "1px";
			document.getElementById("end_" + objname).style.height = "1px";
	}else
	{
		document.getElementById("end_" + objname).style.height = endHeight[objname] + "px";	
		
	}

	obj[objname].style.display = "block";

	timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

//Actually move the cell
function slidetick(objname){
	var elapsed = (new Date()).getTime() - startTime[objname];

	if (elapsed > slideAniLen)
			endSlide(objname)
	else {
			var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
			if(dir[objname] == "up")
					d = endHeight[objname] - d;

			obj[objname].style.height = Math.round(d) + "px";

			

			
			if(dir[objname] == "down"){
				document.getElementById("end_" + objname).style.height = d*scrollRatio + "px";
				//obj[objname].parentNode.style.height = 80 + Math.round(d) + "px";
			}else
			{
				d = endHeight[objname]*scrollRatio - Math.round(elapsed / slideAniLen * endHeight[objname]*scrollRatio);
				document.getElementById("end_" + objname).style.height = d + "px";
				//obj[objname].parentNode.style.height = Math.round(d) + "px";
			}
	}

	return;
}

//End the slide, and set the final height to its .height property
function endSlide(objname){
	clearInterval(timerID[objname]);

	if(dir[objname] == "up"){
		//obj[objname].parentNode.style.height = "30px";
		document.getElementById("end_" + objname).style.height = "0px";
		obj[objname].style.display = "none";
			
	}

	obj[objname].style.height = endHeight[objname] + "px";
	

	delete(moving[objname]);
	delete(timerID[objname]);
	delete(startTime[objname]);
	delete(endHeight[objname]);
	delete(obj[objname]);
	delete(dir[objname]);

	return;
}

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

//Called to validate the information part of the checkout process
function validateInformation()
{
	if(document.bigForm.fname.value == "")
	{
		alert('Please enter your first name.');	
		document.bigForm.fname.focus();
		return false;
	}
	if(document.bigForm.lname.value == "")
	{
		alert('Please enter your last name.');
		document.bigForm.lname.focus();
		return false;
	}
	if(document.bigForm.street.value == "")
	{
		alert('Please enter your street address.');	
		document.bigForm.street.focus();
		return false;
	}
	if(document.bigForm.city.value == "")
	{
		alert('Please enter your city.');	
		document.bigForm.city.focus();
		return false;
	}
	if(document.getElementById("zipCell").innerHTML.match('Zip Code') && (document.bigForm.zip.value.length < 5 ))
	{
		alert('Please enter your zip code.');	
		document.bigForm.zip.focus();
		return false;
	}
	if(!document.bigForm.email.value.match("@"))
	{
		alert('Please enter your email.');	
		document.bigForm.email.focus();
		return false;
	}
	if(document.bigForm.phone.value == "" || !checkInternationalPhone(document.bigForm.phone.value))
	{
		alert('Please enter your phone number.');	
		document.bigForm.phone.focus();
		return false;
	}
	if(document.bigForm.ship_fname.value == "")
	{
		alert('Please enter the ship to first name.');	
		document.bigForm.ship_fname.focus();
		return false;
	}
	if(document.bigForm.ship_lname.value == "")
	{
		alert('Please enter the ship to last name.');	
		document.bigForm.ship_lname.focus();
		return false;
	}
	if(document.bigForm.ship_street.value == "")
	{
		alert('Please enter the ship to street address.');	
		document.bigForm.ship_street.focus();
		return false;
	}
	if(document.bigForm.ship_city.value == "")
	{
		alert('Please enter the ship to city.');	
		document.bigForm.ship_city.focus();
		return false;
	}
	if(document.getElementById("zipCell12").innerHTML.match('Zip Code') && (document.bigForm.ship_zip.value == "" ))
	{
		alert('Please enter the ship to zip code.');	
		document.bigForm.ship_zip.focus();
		return false;
	}
	
	
	if((document.bigForm.pay[1].checked && (document.bigForm.cuid.value == "" || !isInteger(document.bigForm.cuid.value))) || (document.bigForm.cuid.value != "" && (!isInteger(document.bigForm.cuid.value) || document.bigForm.cuid.value.length < 7) && document.bigForm.cuid.value != "RESELLER" && document.bigForm.cuid.value != "RESELLER_SHIP"))
	{
		alert('Please enter your Cornell ID Number');	
		document.bigForm.cuid.focus();
		return false;
	}

        if(document.bigForm.comments.value == "" && document.bigForm.cuid.value == "RESELLER_SHIP")
	{
		alert('Please enter your reseller shipment information in the Comments field.');	
		document.bigForm.comments.focus();
		return false;
	}

        if(!isInteger(document.bigForm.cuid.value)) alert("You have applied for a reseller discount.  If you are not a qualified reseller your order will be rejected.  Student orders will also be rejected.  A copy of your reseller sales tax exempt certificate may be required.  Please go back and change your selection if you are not a reseller.");


	return true;
}

/***** TOOL TIP JS *****/
// position of the tooltip relative to the mouse in pixel
function newelement(newid)
{ 
    if(document.createElement)
    { 
        var el = document.createElement('div'); 
        el.id = newid;     
        with(el.style)
        { 
            display = 'none';
            position = 'absolute';
        } 
        el.innerHTML = '&nbsp;'; 
        document.body.appendChild(el); 
    } 
} 
var ie5 = (document.getElementById && document.all); 
var ns6 = (document.getElementById && !document.all); 
var ua = navigator.userAgent.toLowerCase();
var isapple = (ua.indexOf('applewebkit') != -1 ? 1 : 0);
function getmouseposition(e)
{
    if(document.getElementById)
    {
        var iebody=(document.compatMode && 
        	document.compatMode != 'BackCompat') ? 
        		document.documentElement : document.body;
		
		var pagex = 0;
		var pagey = 0;
		var mousex = 0;
		var mousey = 0;
		if(ie5)
		{
       		 pagex = document.documentElement.scrollLeft + (document.documentElement.offsetWidth-document.body.offsetWidth)/2;
			 pagey = document.documentElement.scrollTop;
			// window.status = document.documentElement.scrollTop;
		}else
		{
			if(isapple != 1)
			{
				pagex = window.pageXOffset;
				pagey = window.pageYOffset;
			}
		}
        mousex = (ie5)?window.event.clientX:(ns6)?clientX = e.clientX:false;
        mousey = (ie5)?window.event.clientY:(ns6)?clientY = e.clientY:false;
	
		var offsetx = 12;
var offsety =  8;

        var lixlpixel_tooltip = document.getElementById('tooltip');
        lixlpixel_tooltip.style.left = (mousex+pagex+offsetx) + 'px';
        lixlpixel_tooltip.style.top = (mousey+pagey+offsety) + 'px';
    }
}
function tooltip(tip)
{
    if(!document.getElementById('tooltip')) newelement('tooltip');
    var lixlpixel_tooltip = document.getElementById('tooltip');
    lixlpixel_tooltip.innerHTML = tip;
    lixlpixel_tooltip.style.display = 'block';
    document.onmousemove = getmouseposition;
}
function exit()
{
    document.getElementById('tooltip').style.display = 'none';
}
/*******END TOOL TIP JS *********/

//Tool tip messages.. onmouseover calls the respecitve function which shows the correct message by the mouse...
function purchaseT()
{
	tooltip("Purchase");
}
function closeT()
{
	tooltip("Close");
}
function editT()
{
	tooltip("Edit");
}
function updateT()
{
	tooltip("Update");
}
function deleteT()
{
	tooltip("Delete");
}
function informationT()
{
	tooltip("Information");
}
function fulfilledT()
{
	tooltip("Order Fulfilled");
}
function newT()
{
	tooltip("New");
}
function addT()
{
	tooltip("Add");
}

//Deprecated function... used for the old payment
function validatePayment()
{
	if(!document.bigForm.pay[0].checked)
		return true;
	if(document.bigForm.card_name.value == "")
	{
		alert('Please enter the name on the credit card.');	
		document.card_name.city.focus();
		return false;
	}
	if(document.bigForm.card_number.value == "" || !isInteger(document.bigForm.card_number.value))
	{
		alert('Please enter the card number.');	
		document.bigForm.card_number.focus();
		return false;
	}
	
	return true;
}

//Preload all the spining images for the sliding cells
var s1 = new Image(); 
s1.src = "images/spin1.png";
var s2 = new Image(); 
s2.src = "images/spin2.png";
var s3 = new Image(); 
s3.src = "images/spin3.png";
var s4 = new Image(); 
s4.src = "images/spin4.png";
var s5 = new Image(); 
s5.src = "images/spin5.png";
var s6 = new Image(); 
s6.src = "images/spin6.png";
var s7 = new Image(); 
s7.src = "images/spin7.png";
var s8 = new Image(); 
s8.src = "images/spin8.png";

//This variable stops all spinners when true by preventing the function to call itself again.
var stopSpin = false;

//Saved HTML for instant search... stores ALL product data at first.
var savedData = new Array();

//Names is the id for the home page description and list of languages.. needs to be restored when the search is cancelled
var savedNames;

if(document.getElementById("names") != null)
	savedNames = document.getElementById("names").innerHTML;

for(var u = 1; u <= numItems; u++)
{
	savedData[u] = document.getElementById("a" + u).innerHTML;
}

//This calls itself and makes the tag a spinner
function doSpin(step, tag)
{
	if(!stopSpin)
		document.getElementById(tag).src = 'images/spin' + step + '.png';
	var next = step+1;
	if(next == 9)
		next = 1;
	if(!stopSpin)
		setTimeout("doSpin(" + next + ", '" + tag + "')", 50);
}

//Opposite of doSpin.. makes it go the other way
function doCounterSpin(step, tag)
{
	if(!stopSpin)
		document.getElementById(tag).src = 'images/spin' + step + '.png';
	var next = step-1;
	if(next == 0)
		next = 8;
	if(!stopSpin)
		setTimeout("doCounterSpin(" + next + ", '" + tag + "')", 50);
}

//onmouseover effect, used for some images to highlight when the mouse is over
function highlight(obj, newpath)
{
	var type = typeof obj;
	if (type == 'object') {
		obj.src = newpath;
	}
	else
		document.getElementById(obj).src = newpath;
}

//The following are called when the cell is contructed to spcifically highlight/unhighlight the respective images on the cells.
function highUp(i)
{document.getElementById("cart_" + i).src = "images/up_over.png";}

function unHighUp(i)
{document.getElementById("cart_" + i).src = "images/up.png";}

function highCart(i)
{
	if(document.getElementById("cart_" + i).src.match("images/cart.png")) {document.getElementById("cart_" + i).src = "images/cart_over.png";purchaseT();}
	if(document.getElementById("cart_" + i).src.match("images/up.png")) {document.getElementById("cart_" + i).src = "images/up_over.png";closeT();}
}

function unHighCart(i)
{
	if(document.getElementById("cart_" + i).src.match("images/cart_over.png")) {document.getElementById("cart_" + i).src = "images/cart.png";exit();}
	if(document.getElementById("cart_" + i).src.match("images/up_over.png")) {document.getElementById("cart_" + i).src = "images/up.png";exit();}
}

function highShow(i)
{if(document.getElementById("show_" + i).src.match("images/show.png")) {document.getElementById("show_" + i).src = "images/show_over.png";//editT();
}
if(document.getElementById("show_" + i).src.match("images/up.png")) {document.getElementById("show_" + i).src = "images/up_over.png";//closeT();
}
}

function unHighShow(i)
{if(document.getElementById("show_" + i).src.match("images/show_over.png")) {document.getElementById("show_" + i).src = "images/show.png";//editT();
}
if(document.getElementById("show_" + i).src.match("images/up_over.png")) {document.getElementById("show_" + i).src = "images/up.png";//closeT();
}
}

function highEdit(i)
{
	if(document.getElementById("edit_" + i).src.match("images/edit.png")) {document.getElementById("edit_" + i).src = "images/edit_over.png";editT();}
	if(document.getElementById("edit_" + i).src.match("images/up.png")) {document.getElementById("edit_" + i).src = "images/up_over.png";closeT();}
}

function unHighEdit(i)
{
	if(document.getElementById("edit_" + i).src.match("images/edit_over.png")) {document.getElementById("edit_" + i).src = "images/edit.png";exit();}
	if(document.getElementById("edit_" + i).src.match("images/up_over.png")) {document.getElementById("edit_" + i).src = "images/up.png";exit();}
	
}

function highCheck(i)
{document.getElementById("check_" + i).src = "images/check_over.png"; updateT();}

function unHighCheck(i)
{document.getElementById("check_" + i).src = "images/check.png"; exit();}

function highX(i)
{document.getElementById("x_" + i).src = "images/x_over.png"; deleteT();}

function unHighX(i)
{document.getElementById("x_" + i).src = "images/x.png"; exit();}

function highAdd()
{document.getElementById("add").src = "images/new_over.png";}

function unHighAdd()
{document.getElementById("add").src = "images/new.png";}


//These order functions are for catalog view and simply redirect the browser
function order_name()
{
	document.getElementById('name_button').checked = false;
	window.location = baseURL + "?order=name&term=" + document.getElementById("search_field").value;	
}

function order_price()
{
	document.getElementById('price_button').checked = false;
	window.location = baseURL + "?order=price&term=" + document.getElementById("search_field").value;	
}

function order_type()
{
	document.getElementById('type_button').checked = false;
	window.location = baseURL  + "?order=type&term=" + document.getElementById("search_field").value;	
}

//These are deprecated functions for the old order management
function show_pending(order)
{
	document.getElementById("all_button").checked = false;
	document.getElementById("range_button").checked = false;
	window.location = "/sales/admin/orders?show=pending&order=" + whatOrderOrder();
}

function show_all(order)
{
	document.getElementById("pending_button").checked = false;
	document.getElementById("range_button").checked = false;
	window.location = "/sales/admin/orders?show=all&order=" + whatOrderOrder();	
}
function show_range(order)
{
	document.getElementById("all_button").checked = false;
	document.getElementById("pending_button").checked = false;
	window.location = "/sales/admin/orders?show=range&order=" + whatOrderOrder();	
}

function order_status(old)
{
	document.getElementById("date_button").checked = false;
	document.getElementById("name_button").checked = false;
	window.location = "/sales/admin/orders?order=status&show=" + whatOrderShow();	
}
function order_date(old)
{
	document.getElementById("status_button").checked = false;
	document.getElementById("name_button").checked = false;
	window.location = "/sales/admin/orders?order=date&show=" + whatOrderShow();	
}
function order_name_orders(old)
{
	document.getElementById("date_button").checked = false;
	document.getElementById("date_button").checked = false;
	window.location = "/sales/admin/orders?order=name&show=" + whatOrderShow();	
}

//gets the order the products are in at the moment
function whatOrder() //for catalog
{
	if(document.getElementById('name_button').checked)
		return "name";
	if(document.getElementById('price_button').checked)
		return "price";
	if(document.getElementById('type_button').checked)
		return "type";
}

//Deprecated function for the order page in admin
function whatOrderOrder() //for orders
{
	if(document.getElementById('status_button').checked)
		return "status";
	if(document.getElementById('date_button').checked)
		return "date";
	if(document.getElementById('name_button').checked)
		return "name";
}

function whatOrderShow() //for orders
{
	if(document.getElementById('pending_button').checked)
		return "pending";
	if(document.getElementById('all_button').checked)
		return "all";
	if(document.getElementById('range_button').checked)
		return "range";
}

/****************************************************************************
********************************* ADMIN ORDER FUNCTIONS *********************
****************************************************************************/

function setInvoice(i, stat)
{
	window.location = "update?invoice_id=" + i + "&next_status=" + stat;	
}

function payInvoice(i, stat)
{
	window.location = "/sales/admin/pending/pay?invoice_id=" + i + "&next_status=1";	
}

function payInvoice2(i, stat)
{
	window.location = "/sales/admin/invoices/pay?invoice_id=" + i + "&next_status=1";	
}

function rejectInvoice(i, reason)
{
	window.location = "/sales/admin/orders/reject?invoice_id=" + i + "&reason=" + reason;
}

/****************************************************************************
******************************* ADMIN CATALOG FUNCTIONS *********************
****************************************************************************/

function delete_product(i)
{
	window.location.href = "edit/delete?itemid=" + i + "&order=" + whatOrder() + "&term=" + document.getElementById("search_field").value;
}

function delete_order(i, ser)
{
	window.location.href = window.location + "/edit/delete?itemid="	+ i + "&series=" + ser;
}

//This actually opens the cell and closes it when pressed.. responsible for opening the cell when the customer looks at the catalog.
function openShow(i, limit)
{
	document.getElementById("editContent_" + i).style.textAlign = "right";
	scrollRatio = .7;
	exit();
	
	//document.getElementById('cart_' + i).style.visibility = "hidden";
	stopSpin = false;
	setTimeout('stopSpin = true;', slideAniLen);
	if(document.getElementById("editContent_" + i).style.display == "block")//Close cell
	{
		document.getElementById("editContent_" + i).style.visibility = 'hidden';
		doSpin(4, "cart_" + i);
		slideup(i);
		setTimeout("document.getElementById('cart_" + i + "').src = 'images/cart.png';",slideAniLen);
		setTimeout("document.getElementById('editContent_" + i + "').style.visibility = 'visible'",slideAniLen);
	}else//Open
	{	
		document.getElementById("editContent_" + i).style.visibility = 'hidden';
	    document.getElementById('editContent_' + i).style.height = limit + "px";
		doCounterSpin(4, "cart_" + i);
		slidedown(i);
		setTimeout("document.getElementById('cart_" + i + "').src = 'images/up.png';",slideAniLen);
		setTimeout("document.getElementById('editContent_" + i + "').style.visibility = 'visible'",slideAniLen);
	}
}


//For royalties and bursars in the admin end.. select and deselect button
function change_select(boxes, element)
{
	for(var i = 0; i < boxes.length; i++)
	{
		if(element.value == "Select All")
			boxes[i].checked = true ;
		else
			boxes[i].checked = false ;
	}
	if(element.value == "Deselect All")
		element.value = "Select All";
	else
		element.value = "Deselect All";
	
}

//Opens the cell and shows the update (check) and delete (x) icons.. used for confirming the shopping cart and the admin side of the sales catalog.
function openEdit(i, limit)
{

	exit();
	stopSpin = false;
	setTimeout('stopSpin = true;', slideAniLen);
	scrollRatio = .5;
	if(document.getElementById("editContent_" + i).style.display == "block")//Close
	{
		document.getElementById("editContent_" + i).style.visibility = 'hidden';
		document.getElementById('check_' + i).style.display = 'none';
		document.getElementById('spin_' + i).style.display = 'block';
		document.getElementById('edit_' + i).src = 'images/edit.png';
		setTimeout("document.getElementById('edit_" + i + "').style.display = 'block';",slideAniLen);
		setTimeout("document.getElementById('spin_" + i + "').style.display = 'none';",slideAniLen);
		setTimeout("document.getElementById('editContent_" + i + "').style.visibility = 'visible'",slideAniLen);
		slideup(i);
		doSpin(4, "spin_" + i);
		document.getElementById('x_' + i).style.display = 'none';
		document.getElementById('edit_' + i).style.display = 'none'; 
		
	}else//Open
	{	
		document.getElementById("editContent_" + i).style.visibility = 'hidden';
	    document.getElementById('editContent_' + i).style.height = limit + "px";
		document.getElementById('spin_' + i).style.display = 'block';
		document.getElementById('edit_' + i).style.display = 'none';
		document.getElementById('edit_' + i).src = 'images/up.png';
		setTimeout("document.getElementById('spin_" + i + "').style.display = 'none';",slideAniLen);
		setTimeout("document.getElementById('edit_" + i + "').style.display = 'block';",slideAniLen);
		setTimeout("document.getElementById('check_" + i + "').style.display = 'block';",slideAniLen);
		setTimeout("document.getElementById('x_" + i + "').style.display = 'block';",slideAniLen);
		setTimeout("document.getElementById('editContent_" + i + "').style.visibility = 'visible'",slideAniLen);
		

		doCounterSpin(4, "spin_" + i);
		slidedown(i);
	}
}

//This is the same old open/close cell function for the admin order area... used to open the cell to view the order details
function openApprove(i)
{
	scrollRatio = 1;
	stopSpin = false;
	setTimeout('stopSpin = true;', slideAniLen);
	
	if(document.getElementById("editContent_" + i).style.display == "block")//Close
	{
		doSpin(4, "show_" + i);
		document.getElementById("editContent_" + i).style.visibility = 'hidden';
		slideup(i);
		setTimeout("document.getElementById('editContent_" + i + "').style.display = 'none'",slideAniLen);
		document.getElementById("editContent_" + i).style.overflow = "hidden";
		setTimeout("document.getElementById('show_" + i + "').src = 'images/show.png';",slideAniLen);
		
		
	}else//Open
	{	
		 document.getElementById('editContent_' + i).style.height = "600px";
		 document.getElementById('editContent_' + i).style.width = "615px";
		
		doCounterSpin(4, "show_" + i);
		document.getElementById("editContent_" + i).style.visibility = 'hidden';
		slidedown(i);
		
		//document.getElementById("editContent_" + i).style.display = "block";
		setTimeout("document.getElementById('editContent_" + i + "').style.visibility = 'visible'",slideAniLen);
		setTimeout("document.getElementById('editContent_" + i + "').style.overflow = 'auto'",slideAniLen);
		setTimeout("document.getElementById('show_" + i + "').src = 'images/up.png';",slideAniLen);
	    
	}

}

//redirects the invoices page to the Sales_Invoices.xml and passes the appropriate variables to the URL
function download_invoices(opt)
{
	var term = 	document.form.term.value;
	var from_date = document.form.from_date.value;
	var to_date = document.form.to_date.value;
	
	var redir = "/sales/admin/invoices/Sales_Invoices.xls?term=" + term + "&from_date=" + from_date + "&to_date=" + to_date + "&opt=" + opt;
	
	//alert(redir);
	
	window.location.href = redir;
}

//Passes the appropriate variables to the Sales_Items.xml function for downloading.
function download_items()
{
	var term = 	document.form.term.value;
	var from_date = document.form.from_date.value;
	var to_date = document.form.to_date.value;
	
	var redir = "/sales/admin/items/Sales_Items.xls?term=" + term + "&from_date=" + from_date + "&to_date=" + to_date;
	
	//alert(redir);
	
	window.location.href = redir;
	
	
}

//Deprecated
function stripHTML(oldString)
{
   var newString = "";
   var inTag = false;
   for(var i = 0; i < oldString.length; i++)
   {
        if(oldString.charAt(i) == '<') inTag = true;
        if(oldString.charAt(i) == '>')
		{
              inTag = false;
              i++;
        }
        if(!inTag) newString += oldString.charAt(i);
   }
   return newString;
}

//Puts the appropriate html into the savedData array by passing the preloader's data to the makecell function.  This code is then tied to the savedData array based on its order in the array
function generateCatalog()
{
	for(var u = 1; u <= numItems; u++)
	{
		if(links[u] != "")
			titles[u] = "<a href='" + links[u] + "'>" + titles[u] + "</a>";
			
		savedData[u] = makeCell(u, titles[u], descs[u] + "<br />" +"$" + prices[u] + "&nbsp;", '<div class="icon"><img class="actual_icon" src="images/' + pics[u] + '" /></div>', '<img onmouseover="highCart(' + u + ');" onmouseout="unHighCart(' + u + ');" onclick="openShow(' + u + ', 60);" src="images/cart.png" class="end_icon" id="cart_' + u + '" alt="" />', '<span class="series">' +  series[u] + '</span><span class="quantity">Quantity: <input type="hidden" name="itemid" value="' + ids[u] + '"><input name="quantity" value="1" size="3"/></span><span class="add"><input type="submit" value="Add to Cart" /></span>');
	}
}

//For administrators to edit... adds all the text fields to the hidden content area.
function generateAdminCatalog(picString) 
{
	scrollRatio = .5;
	for(var u = 1; u <= numItems; u++)
	{
		var id = ids[u];
		var avgShip = average_shipping[id];
		if(avgShip == null)
			avgShip = 0;
		
		var royal = royalties[id];
		if(royal == null)
			royal = '<input type="text" name="royalty_name"/>&nbsp;at&nbsp;<input type="text" name="royalty_percent" size="6" />&nbsp;percent';
		
		var thisString = picString.replace("<option>" + pics[u], "<option selected='selected'>" + pics[u]);
		var showTitle = titles[u];
		if(links[u] != "")
			showTitle = "<a href='" + links[u] + "'>" + titles[u] + "</a>";
		savedData[u] = makeCell(u, showTitle, descs[u] + "<br />" +"$" + prices[u] + "&nbsp;", '<div class="icon"><img class="actual_icon" src="images/' + pics[u] + '" /></div>', '<img src="images/edit.png" onmouseover="highEdit(' + u + ');" onmouseout="unHighEdit(' + u + ');" onclick="openEdit(' + u + ', 240);" class="end_icon" id="edit_' + u + '" alt="" style="display: block;" /><input type="image" id="check_' + u + '" src="images/check.png" onmouseover="highCheck(' + u + ');" onmouseout="unHighCheck(' + u + ');" style="display: none;" class="end_icon" /><img id="x_' + u + '" src="images/x.png" onmouseover="highX(' + u + ');" onmouseout="unHighX(' + u + ');" style="display: none;" class="end_icon"  onclick="delete_product(' + ids[u] + ');"  /><img src="images/edit.png"  class="end_icon" id="spin_' + u + '" alt="" style="display: none;" />', '<div class="admin_catalog_push"><span class="admin_catalog">Title</span><div class="admin_catalog_form"><input type="text" size="40" name="title" value="' + titles[u] + '" /></div><span class="admin_catalog">Link</span><div class="admin_catalog_form"><input type="text" size="40" name="link" value="' + links[u] + '" /></div><span class="admin_catalog">Picture</span><div class="admin_catalog_form"><select name="picture">' + thisString + '</select></div><span class="admin_catalog">Description</span><div class="admin_catalog_form"><input type="text"  size="40" name="LongDescription" value="' + descs[u] + '" /></div><span class="admin_catalog">Series</span><div class="admin_catalog_form"><input type="text"  size="40" name="numtapes" value="' + numtapes[u] + '" /></div><span class="admin_catalog">Price</span><div class="admin_catalog_form"><input type="text"  size="40" name="price" value="' + prices[u] + '" /></div><span class="admin_catalog">Royalties</span><div class="admin_catalog_form" id="royalties_' + u + '" style="width: 600px;">' + royal + '</div><span class="admin_catalog">Shipping</span><div class="admin_catalog_form"><input type="text"  size="40" name="shipping" value="' + shipping[u] + '" /><input type="hidden" name="itemid" value="' + ids[u] + '"></div><span class="admin_catalog">Avg. Shipping</span><div class="admin_catalog_form">$' + avgShip + ' - <a href="/sales/admin/invoices?from_date=' + lastYear + '&term=' + titles[u] + '">Invoices</a> - <a href="/sales/admin/items?from_date=' + lastYear + '&term=' + titles[u] + '">Sales</a></div></div>');
	
	}
}

//Same thing, but for the order part of the admin interface.. basically plants the invoice on the inside
function generateOrders()
{
	
	for(var u = 1; u <= numItems; u++)
	{
		savedData[u] = makeCell(u, '<span class="order_title">' + titles[u] + '</span>', '<span class="order_content">' + line1[u] + "<br/>" + line2[u]  + '</span>', '<div class="icon"><img class="actual_icon" src="images/Default.png" style="z-index:-4;"/></div>', '<img onmouseover="highShow(' + u + ');" onmouseout="unHighShow(' + u + ');" onclick="openApprove(' + u + ');" src="images/show.png" class="end_icon" id="show_' + u + '" alt="" />',  item_show[u] );
		document.getElementById("a" + u).innerHTML = savedData[u];
	}
}

//Used for ALL sliver/blue cells.  Icon is the big one on the left, and end is for the smaller action button on the right.
function makeCell(count, title, content, icon, end, inside)
{
	
	return '<div class="blue"><img class="item_topleft" src="images/topleft.png" alt=""><img class="item_topright" src="images/topright.png" alt=""><div class="item_title">' + title + '</div></div><div class="item_background" id="cont_' + count + '">' + icon + '<div class="end" id="end_' + count + '" style="height: 100%;">' + end + '</div><div class="sub"><div class="item_content">' + content + '</div><div class="inside" id="editContent_' + count + '" style="display:none; overflow:hidden;">' + inside + '</div></div></div><div class="cell_footer"><img class="item_bottomleft" src="images/bottomleft.png" alt=""><img class="item_bottom" src="images/bar3.png" alt=""><img class="item_bottomright" src="images/bottomrightcut.png" alt=""></div>'
	
}

//Algorithm that looks through the real array to match the search string to any part of the real array... if found it keeps the result and eliminates all others.
function doSearch(orig_term)
{
	var terms = new Array();
	terms = orig_term.split(" ");
	
	var toKeep = new Array();
	
	for(var i = 1; i <= numItems; i++)
	{
		toKeep[i] = 0;
	}
	
	
	var isLang = 0; //Special routine for language catalog... to only show those tagged as a language
	if(langs != null)
	{
		for(var tt = 1; tt <= numItems; tt++)
		{
			if(langs[tt].toLowerCase() + " " == orig_term.toLowerCase())
			{
				toKeep[tt]++;//Only promote those that match the language tag, ensuring 
				isLang = 1;
			}
		}
	}
	
	if(isLang == 0)//If this isn't a special case where we clicked on a language, go ahead with the normal routine
	{
		for(var m = 0; m < terms.length; m++)
		{
			term = terms[m];
			term = term.replace(/^\s+|\s+$/, '');
	
			
			if(term != "" || orig_term == "")
			{
				for(var tt = 1; tt <= numItems; tt++)
				{
					if(real[tt].toLowerCase().match(term.toLowerCase()))
						toKeep[tt]++;
					if(real[tt].toLowerCase().match(" " + term.toLowerCase() + " "))
						toKeep[tt]++;

				}
			}
		}
	}
	
	
	//find max # points
	var thresh = 0;
	for(var i = 1; i < toKeep.length; i++)
	{
		if(toKeep[i] > thresh)
			thresh = toKeep[i];
	}
	
	if(orig_term.length == 1)
		thresh = 1;
	
	
	//determine if the results all have the same language... then do a getDesc
	var uniform = 1;
	var numResults = 0;
	var common = "";
	if(langs == null)
		uniform = 0;
	for(var i = 1; i < toKeep.length; i++)
	{
		
		if(orig_term != "" && (toKeep[i] < thresh || toKeep[i] == 0))
		{
			document.getElementById("a" + i).innerHTML = "";
		}else
		{
			numResults = 1;
			if(uniform == 1)
			{
				realLang = langs[i];
				if(common == "")
					common = langs[i];
				if(common != langs[i])
					uniform = 0;
			}else
			    realLang = "";
			if(document.getElementById("a" + i).innerHTML == "")
				document.getElementById("a" + i).innerHTML = savedData[i];
			
		}
	}
	if(uniform == 1 && numResults == 1)
	{
		getDesc(common);
		if(document.getElementById('new_prod') != null)
		{
				document.getElementById('new_prod').value = "New Product";
				document.getElementById('new_prod').onclick = addProduct;
		}
	}else
	{

		
		currentLang = "";
		if(document.getElementById("desc") != null)
		{
			if(document.getElementById("show_edit_catalog"))
				document.getElementById("show_edit_catalog").style.display = "none";
			document.getElementById("desc").innerHTML = "&nbsp;";
			if(document.getElementById('new_prod') != null)
			{
				document.getElementById('new_prod').value = "New Language";
				document.getElementById('new_prod').onclick = addLanguage;
			}
			
		}
	}
}

var de;
var de2;
var currentLang = "";
var realLang = "";

function updateLanguage() //changes the language var to textbox edit_lang and corresponding description
{
	document.getElementById("old_lang").value = realLang;
	document.getElementById("update_form").action ="/sales/admin/catalog/edit/update";	
	//window.location = "edit223" + language;	
	return true;
}

function addLanguage() //top level button... adds generic language and corresponding product
{
	window.location = "/sales/admin/catalog/edit/newLang";	
}

function addProduct() //top level button... adds generic language and corresponding product
{
	window.location = "/sales/admin/catalog/edit/newProduct?language=" + realLang;	
}

//AJAX Call for customer/admin catalog view.. gets the description when it detects all languages are the same in the products shown.
function getDesc(language)
{	
	if(currentLang != language)
	{
		currentLang = language;
		de = createRequestObject(); 
		var deURL = "/sales/catalog/getDesc?lang=" + language;
		de.open("GET", deURL);
		de.onreadystatechange = handleDesc;
		de.send(null);
	}
}

//AJAX method for handeling the AJAX request, puts the data in the div.
function handleDesc()
{
	if(de.readyState == 4)
	{
		if(de != null && de.responseText != "" )
		{
			if(document.getElementById("show_edit_catalog"))
			{
				document.getElementById("show_edit_catalog").style.display = "block";
				
				document.getElementById("edit_lang").value = realLang;
			}
			
			
			document.getElementById("desc").style.display = "block"; 
			document.getElementById("desc").innerHTML = de.responseText + "&nbsp;";
			document.getElementById("desc").value = de.responseText;
			

		}else
		{
			currentLang = "";
		}
			
		de.abort();
		
	}
}

//AJAX function
function createRequestObject()
{
	var request_o;
	var browser = navigator.appName;
	if(browser.indexOf("Microsoft Internet Explorer") != -1)
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	else
		request_o = new XMLHttpRequest();
	return request_o;
}

//When you click on a language on the home page, this places the string in the textfield, then performs the search to get the correct products.
function searchInsert(language)
{
	document.getElementById('search_field').value = document.getElementById('search_field').value + language + " ";
	document.getElementById('search_field').focus();
	if(navigator.appName.indexOf("Microsoft Internet Explorer") == -1){ 

		document.getElementById('search_field').setSelectionRange(document.getElementById('search_field').value.length, document.getElementById('search_field').value.length);
	}
	doCatalogSearch(document.getElementById('search_field').value);
	
}

//Clear the search.. get back to the home screen.
function searchBlank()
{
	document.getElementById('search_field').value = "";
	document.getElementById('search_field').focus();
	doCatalogSearch(document.getElementById('search_field').value);	
}

//Special search for the catalog, handles the new buttons for the admin and adds the subsearch fields when needed
function doCatalogSearch(orig_term)
{
	if(document.getElementById('new_prod'))
	{
		document.getElementById('new_prod').value = "New Language";
		document.getElementById('new_prod').onclick = addLanguage;
	}
	if(orig_term != "" && orig_term.length > 1)
	{
		document.getElementById("names").innerHTML = "&nbsp;";
		document.getElementById("back_button").innerHTML = '<a onclick="searchBlank();"><u>Back to Catalog</u></a>';
		document.getElementById("sub_search").innerHTML = orderString;
		
		
		if(orderBy == 0)
			document.getElementById('name_button').checked = true;
		else if(orderBy == 1)
			document.getElementById('price_button').checked = true;
		else
			document.getElementById('type_button').checked = true;
		
		doSearch(orig_term);
	
	}else
	{
		document.getElementById("names").innerHTML = savedNames;
		document.getElementById("back_button").innerHTML = "&nbsp;";
		document.getElementById("desc").innerHTML = "&nbsp;";
		if(document.getElementById('newButton') != null)
				document.getElementById('newButton').innerHTML = "";
		if(document.getElementById('show_edit_catalog') != null)
			document.getElementById("show_edit_catalog").style.display = "none"; 
		document.getElementById("desc").innerHTML = "&nbsp;";
		document.getElementById("sub_search").innerHTML = "Enter Product, Description, or Course Code";
		currentLang = "";
		
		for(var i = 0; i < numItems;)
		{
			i++;
			document.getElementById("a" + i).innerHTML = "";
		}
		
	}
}



/************************************************************************************************************************************************************
*************************************************************FORM_VALIDATION*********************************************************************************
************************************************************************************************************************************************************/

//When the country isn't US, it makes it a text field
function openState()
{
	document.getElementById('stateHTML').innerHTML = '<input name="state" size="40">&nbsp;';
}


//Country changed back to US
function closeState()
{
	document.getElementById('stateHTML').innerHTML = '<select name="state"><option value="AL">Alabama</option><option value="AK">Alaska</option><option value="AS">American Samoa</option><option value="AZ">Arizona</option><option value="AR">Arkansas</option><option value="CA">California</option><option value="CO">Colorado</option><option value="CT">Connecticut</option><option value="DE">Delaware</option><option value="DC">District of Columbia</option><option value="FM">Federated States of Micronesia</option><option value="FL">Florida</option><option value="GA">Georgia</option><option value="GU">Guam</option><option value="HI">Hawaii</option><option value="ID">Idaho</option><option value="IL">Illinois</option><option value="IN">Indiana</option><option value="IA">Iowa</option><option value="KS">Kansas</option><option value="KY">Kentucky</option><option value="LA">Louisiana</option><option value="ME">Maine</option><option value="MH">Marshall Islands</option><option value="MD">Maryland</option><option value="MA">Massachusetts</option><option value="MI">Michigan</option><option value="MN">Minnesota</option><option value="MS">Mississippi</option><option value="MO">Missouri</option><option value="MT">Montana</option><option value="NE">Nebraska</option><option value="NV">Nevada</option><option value="NH">New Hampshire</option><option value="NJ">New Jersey</option><option value="NM">New Mexico</option><option value="NY">New York</option><option value="NC">North Carolina</option><option value="ND">North Dakota</option><option value="MP">Northern Mariana Islands</option><option value="OH">Ohio</option><option value="OK">Oklahoma</option><option value="OR">Oregon</option><option value="PW">Pelau</option><option value="PA">Pennsylvania</option><option value="PR">Puerto Rico</option><option value="RI">Rhode Island</option><option value="SC">South Carolina</option><option value="SD">South Dakota</option><option value="TN">Tennessee</option><option value="TX">Texas</option><option value="UT">Utah</option><option vaue="VT">Vermont</option><option value="VI">Virgin Islands</option><option value="VA">Virginia</option><option value="WA">Washington</option><option value="WV">West Virginia</option><option value="WI">Wisconsin</option><option value="WY">Wyoming</option></select>';
	
}

//Check to see if the country is US, then show or close the state field
function checkCountry()
{
	if(document.getElementById("country").value != "U.S.A.")
	{
		
		document.getElementById("zipCell").innerHTML="";
		document.getElementById("zipCell2").innerHTML='<input name="zip" type="hidden" value="0" size="20">';
		document.getElementById("zipCell").height = 1;
		openState();

	
	}else
	{
		document.getElementById("zipCell").innerHTML='Zip Code';
		document.getElementById("zipCell2").innerHTML='<input name="zip" size="20">';
		closeState();
	
		
	}
}

//Same thing for the ship state
function openState2()
{
	document.getElementById('stateHTML2').innerHTML = '<input name="ship_state" size="40">&nbsp;';
}

function closeState2()
{
	document.getElementById('stateHTML2').innerHTML = '<select name="ship_state"><option value="AL">Alabama</option><option value="AK">Alaska</option><option value="AS">American Samoa</option><option value="AZ">Arizona</option><option value="AR">Arkansas</option><option value="CA">California</option><option value="CO">Colorado</option><option value="CT">Connecticut</option><option value="DE">Delaware</option><option value="DC">District of Columbia</option><option value="FM">Federated States of Micronesia</option><option value="FL">Florida</option><option value="GA">Georgia</option><option value="GU">Guam</option><option value="HI">Hawaii</option><option value="ID">Idaho</option><option value="IL">Illinois</option><option value="IN">Indiana</option><option value="IA">Iowa</option><option value="KS">Kansas</option><option value="KY">Kentucky</option><option value="LA">Louisiana</option><option value="ME">Maine</option><option value="MH">Marshall Islands</option><option value="MD">Maryland</option><option value="MA">Massachusetts</option><option value="MI">Michigan</option><option value="MN">Minnesota</option><option value="MS">Mississippi</option><option value="MO">Missouri</option><option value="MT">Montana</option><option value="NE">Nebraska</option><option value="NV">Nevada</option><option value="NH">New Hampshire</option><option value="NJ">New Jersey</option><option value="NM">New Mexico</option><option value="NY">New York</option><option value="NC">North Carolina</option><option value="ND">North Dakota</option><option value="MP">Northern Mariana Islands</option><option value="OH">Ohio</option><option value="OK">Oklahoma</option><option value="OR">Oregon</option><option value="PW">Pelau</option><option value="PA">Pennsylvania</option><option value="PR">Puerto Rico</option><option value="RI">Rhode Island</option><option value="SC">South Carolina</option><option value="SD">South Dakota</option><option value="TN">Tennessee</option><option value="TX">Texas</option><option value="UT">Utah</option><option vaue="VT">Vermont</option><option value="VI">Virgin Islands</option><option value="VA">Virginia</option><option value="WA">Washington</option><option value="WV">West Virginia</option><option value="WI">Wisconsin</option><option value="WY">Wyoming</option></select>';
	
}


function checkCountry2()
{
	if(document.getElementById("country2").value != "U.S.A.")
	{
		
		document.getElementById("zipCell12").innerHTML="";
		document.getElementById("zipCell22").innerHTML='<input name="ship_zip" type="hidden" value="0" size="20">';
		document.getElementById("zipCell12").height = 1;
		openState2();
	
	}else
	{

		document.getElementById("zipCell12").innerHTML='Zip Code';
		document.getElementById("zipCell22").innerHTML='<input name="ship_zip" size="20">';
		closeState2();
	
		
	}
}


//When the customer clicks on the Same as Above button, copies top data to the bottom.
function doSame()
{
	document.bigForm.ship_fname.value = document.bigForm.fname.value;
	document.bigForm.ship_lname.value = document.bigForm.lname.value;
	document.bigForm.ship_street.value = document.bigForm.street.value;
	document.bigForm.ship_city.value = document.bigForm.city.value;
	document.bigForm.ship_country.value = document.bigForm.country.value;
	checkCountry2();
	

	document.bigForm.ship_zip.value = document.bigForm.zip.value;
	
	
	
	document.bigForm.ship_state.value = document.bigForm.state.value;
	if(document.bigForm.ship_state.value != document.bigForm.state.value)
	{
		openState2();
		document.bigForm.ship_state.value = document.bigForm.state.value;
	}
}

//Disables the ship to form and makes everything " "
function doPickup()
{
	if(document.bigForm.pickup.checked)
	{
		document.bigForm.ship_fname.value=" ";
		document.bigForm.ship_fname.disabled = true;
		document.bigForm.ship_lname.value=" ";
		document.bigForm.ship_lname.disabled = true;
		document.bigForm.ship_street.value=" ";
		document.bigForm.ship_street.disabled = true;
		document.bigForm.ship_city.value=" ";
		document.bigForm.ship_city.disabled = true;
		document.bigForm.ship_state.value=" ";
		document.bigForm.ship_state.disabled = true;
		document.bigForm.ship_country.value=" ";
		document.bigForm.ship_country.disabled = true;
		document.getElementById("zipCell12").innerHTML="";
		document.getElementById("zipCell22").innerHTML='<input name="ship_zip" type="hidden" value="0" size="20">';
		document.getElementById("zipCell12").height = 1;
		

		document.bigForm.same_button.disabled = true;
		
		
	}else
	{
		document.bigForm.ship_fname.value="";
		document.bigForm.ship_lname.value="";
		document.bigForm.ship_street.value="";
		document.bigForm.ship_city.value="";
		document.bigForm.ship_state.value="NY";
		document.bigForm.ship_country.value="U.S.A";
		document.bigForm.ship_zip.value="";
		
		document.bigForm.ship_fname.disabled = false;
		document.bigForm.ship_lname.disabled = false;
		document.bigForm.ship_street.disabled = false;
		document.bigForm.ship_city.disabled = false;
		document.bigForm.ship_state.disabled = false;
		document.bigForm.ship_country.disabled = false;
		document.getElementById("zipCell12").innerHTML='Zip Code';
		document.getElementById("zipCell22").innerHTML='<input name="ship_zip" size="20">';		
		
		document.bigForm.same_button.disabled = false;
		
	}
	
}