/*** ADMIN SIDE STUFF ***/

function orders_markChanged ()
{
	if ($('recalcAlert').style.display == 'none')
	{
		$('recalcAlert').style.display = '';
		Effect.Pulsate('recalcAlert', { pulses: 3, duration: 0.5 });
	}
}

function orders_printInvoice (orderid)
{
	var popup = window.open('/orders/invoice/' + orderid + '.htm', 'Invoice', 'status=1,resizeable=1,toolbar=0,scrollbars=yes,location=0,width=800,height=600');
}

function orders_printPickingSheet (orderid)
{
	var popup = window.open('/orders/picking_sheet/' + orderid + '.htm', 'PickingSheet', 'status=1,toolbar=0,scrollbars=yes,location=0,width=800,height=600');
}

function orders_doOrderAction ()
{
	var dropdown 	= document.getElementById('Action');
	var actionuri	= dropdown.options[dropdown.options.selectedIndex].value;
	window.location = actionuri;
}


function CurrencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}
// end of function CurrencyFormatted()

function checkUsername ()
{
	var username = document.getElementById('Username').value;
	var myAjax = new Ajax.Updater('UsernameResult', '/auth/check_username_available.htm', 
		{ 
			method: 'post',	
			parameters: 
			{
				username: username
			}
		}
	);
}

function checkPassword ()
{
	var password = document.getElementById('Password').value;
	
	var myAjax = new Ajax.Updater('PasswordStrength', '/auth/check_password_strength.htm',
		{ 
			method: 'post',	
			parameters: 
			{
				password: password
			}
		}
	);
}

function checkIdent ()
{
	var password = document.getElementById('Password');	
	var password2 = document.getElementById('Password2');
	var statusSpan = password2.parentNode.getElementsByTagName("span")[0];
	
	if(password.value != password2.value)
	{
		statusSpan.style.color = "#FF0000";
		statusSpan.innerHTML = '(no match)';
	}
	else {
		statusSpan.style.color = "#000000";
		statusSpan.innerHTML = '(match)';
	}
}

function createPNGImage(src, width, height) {
    if (navigator.userAgent.indexOf("MSIE") != -1) {
        var element = document.createElement("div");
        element.style.filter = "progid:DXImageTransform.Microsoft." +
                               "AlphaImageLoader(src='" + src + "')";
    } else {
        var element = document.createElement("img");
        element.src = src;
    }
    element.style.width = width + "px";
    element.style.height = height + "px";
    return element;
}

function currency_format (amount)
{
	var i = parseFloat(amount);
	if (isNaN(i))
	{ 
		i = 0.00; 
	}
	var minus = '';
	if (i < 0) 
	{ 
		minus = '-';
	}
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if (s.indexOf('.') < 0) 
	{ 
		s += '.00'; 
	}
	if (s.indexOf('.') == (s.length - 2)) 
	{ 
		s += '0'; 
	}
	s = minus + s;
	return s;
}

function toggle (divid)
{
	var div = document.getElementById(divid);
	if (div.style.display == '')
	{
		div.style.display = 'none';
	} else {
		div.style.display = '';
	}
	div.blur();
}

/********* Intelli-Search *********************/
//Due to the potentially rapid speed at which searches 
//will be sent (each keystroke in the search field),
//a list of ID's will be stored so that upon recieving a
//result the system can check it isn't overwriting newer
//search resilts.
//Each search submitted will generate an ID, appended to 
//this list.
var searchIDs = new Array();

function doSearch(field)
{
	if(field.value.length > 3)
	{
		var paramObj = new Object();
		var id = null;
		if(searchIDs.length > 0) id = (searchIDs[searchIDs.length-1] +1);
		else id = 1;
		
		searchIDs.push(id);
		
		paramObj.term = field.value;
		paramObj.search_id = id;
		
		new Ajax.Request('/search/ajax_intelli_search.htm', {
			method:"post",
			parameters:paramObj,
			onSuccess:function(transport) {
				try {
					searchResults(transport);
					//alert(transport.responseText);
				}
				catch(e) { handleException(e); alert(transport.responseText);}
			},
			onFailure:function(transport) {
				alert("FAIL!\n"+transport.responseText);	
			}
		});
	}
	else {
		var searchCont = document.getElementById("search_cont");
		var existingDivs = searchCont.getElementsByTagName("div");
		//alert(existingDivs.length);
		while(existingDivs.length > 0)
		{
			//alert(existingDivs.length);
			existingDivs[0].parentNode.removeChild(	existingDivs[0] );
			existingDivs = searchCont.getElementsByTagName("div");
		}
	}
}

function searchResults(transport)
{
	//alert(transport.responseText);
	var xml = transport.responseXML;
	var resultTag = xml.getElementsByTagName("result")[0];
	var searchID = resultTag.getAttribute("search_id");
	
	//If these are the results to an older search, throw away.
	//Even if the newer search hasn't been dislayed yet, it's
	//realistically only going to be a few seconds, so there's
	//no point doing anything.
	if(searchIDs[searchIDs.length-1] > searchID) return;
		
	var resultDiv = document.createElement("div");
	resultDiv.className = "resultContainer";
	var resultCount  = 0;	
	var products = xml.getElementsByTagName("product");
	var productElements  = new Array();
	for(var i = 0; (i < products.length && resultCount <= 8); i++, resultCount++)
	{
		var newP = productFromXML(products[i]);
		productElements.push(newP);	
		resultDiv.appendChild(newP);
	}
	
	if (resultTag.getAttribute('result_count') > 8)
	{
		var viewMoreDiv = document.createElement('div');
		viewMoreDiv.style.textAlign = 'right';
		viewMoreDiv.style.padding	= '1px';
			var viewMoreSpan = document.createElement('span');
			viewMoreSpan.style.cursor = 'pointer';
			viewMoreSpan.onclick = function () { $('searchForm').submit(); }
			viewMoreSpan.appendChild(document.createTextNode('view more'));
		viewMoreDiv.appendChild(viewMoreSpan);
		
		resultDiv.appendChild(viewMoreDiv);
	}
	
	var searchCont = document.getElementById("search_cont");
	var existingDivs = searchCont.getElementsByTagName("div");
	//alert(existingDivs.length);
	while(existingDivs.length > 0)
	{
		//alert(existingDivs.length);
		existingDivs[0].parentNode.removeChild(	existingDivs[0] );
		existingDivs = searchCont.getElementsByTagName("div");
	}
	
	if(productElements.length > 0) $('page_container').appendChild(resultDiv);
}

function productFromXML(xml)
{
	var id = xml.getElementsByTagName("id")[0].firstChild.data;
	var name = xml.getElementsByTagName("name")[0].firstChild.data;
	var desc = xml.getElementsByTagName("description")[0].firstChild.data;
	var seoURL = "";
	if(xml.getElementsByTagName("seo_url")[0].firstChild != null) seoURL = xml.getElementsByTagName("seo_url")[0].firstChild.data;
	else seoURL = id;
	var thumb = null
	if(xml.getElementsByTagName("thumb_url")[0].firstChild != null) thumb = xml.getElementsByTagName("thumb_url")[0].firstChild.data;
	
	var prodDiv = document.createElement("div");
	prodDiv.className = "productBox booples";
	prodDiv.onclick = function() { window.location = '/products/'+seoURL+'.htm'; };
	
	var imageDiv = document.createElement("div");
	imageDiv.className = "searchProductDiv";
	prodDiv.appendChild(imageDiv);	
	
	if(thumb != null) {
		//image.src = thumb;
		//image.alt = "Product image";
		imageDiv.style.background = "url('"+thumb+"') no-repeat center center #ffffff";
	}
	else {
		
	}
	
	var contentDiv = document.createElement("div");
	contentDiv.className = "searchProductContent";
	prodDiv.appendChild(contentDiv);
	
	var nameDiv = document.createElement("div");
	nameDiv.style.textDecoration = "underline";
	nameDiv.appendChild(document.createTextNode(name));
	contentDiv.appendChild(nameDiv);
	
	var descDiv = document.createElement("div");
	descDiv.appendChild(document.createTextNode(desc));
	contentDiv.appendChild(descDiv);
	return prodDiv;
}
/***** End ************************************/

//used on the search results page
function search_setOrder (holddir)
{
	var curr_direction = document.getElementById('SortDirState').value;
	var direction;
	
	if (holddir == 1)
	{
		direction = curr_direction;
	} else {
		if (curr_direction == 'ASC')
		{
			direction = 'DESC';
		} else {
			direction = 'ASC';
		}
	}
	
	// Also need to sort field
	var sortbox 	= document.getElementById('SortField');
	var field 		= sortbox.options[sortbox.options.selectedIndex].value;
	
	window.location = '/search/set_order/' + field + '/' + direction +'.htm';
}

//used on the history page
function history_setOrder (holddir)
{
	var curr_direction = document.getElementById('SortDirState').value;
	var direction;
	
	if (holddir == 1)
	{
		direction = curr_direction;
	} else {
		if (curr_direction == 'ASC')
		{
			direction = 'DESC';
		} else {
			direction = 'ASC';
		}
	}
	
	// Also need to sort field
	var sortbox 	= document.getElementById('SortField');
	var field 		= sortbox.options[sortbox.options.selectedIndex].value;
	
	window.location = '/history/set_order/' + field + '/' + direction +'.htm';
}

//used on the brands page
function brands_setOrder (holddir, brandText)
{
	var curr_direction = document.getElementById('SortDirState').value;
	var direction;
	
	if (holddir == 1)
	{
		direction = curr_direction;
	} else {
		if (curr_direction == 'ASC')
		{
			direction = 'DESC';
		} else {
			direction = 'ASC';
		}
	}
	
	// Also need to sort field
	var sortbox 	= document.getElementById('SortField');
	var field 		= sortbox.options[sortbox.options.selectedIndex].value;
	
	window.location = '/brands/set_order/' + field + '/' + direction +'/'+ brandText +'.htm';
}

//used in the account address managment
function cycleNew(span)
{
	var h2 = span.parentNode;
	var newDiv = h2.parentNode;
	var table = newDiv.getElementsByTagName("table")[0];
	
	if(table.style.display == "none")
	{
		table.style.display = "";
		span.innerHTML = "New Address [-]";
	}
	else {
		table.style.display = "none";
		span.innerHTML = "New Address [+]";
	}
}
