// *********** //
// Load Events //
// *********** //

addLoadEvent(initLightbox);
addLoadEvent(prepareLinks);
addLoadEvent(equalSidebar);

// ********* //
// Functions //
// ********* //


function prepareLinks()
{
	// Newsletter Signup
	if($('signup'))
	{
		var signup = $('signup');
		signup.onclick = function()
		{
			var emailaddress = $("email"); 
			if(validate_email(emailaddress.value))
			{
				var vars = "email=" + emailaddress.value;
				var myAjax = new Ajax.Request(
					'/newsletter/subscribe',
					{method: 'post', parameters: vars, onComplete: newsletterResponse}
				);
			}
			else
			{
				alert('Please enter a valid e-mail address');
			}
			return false;
		}
	}
}


function prodthumb_display(detail_src, zoom_src, caption)
{
	var mainimage = $('main_image');
	var mainimagelink = $('main_image_link');
	mainimage.src = detail_src;
	mainimagelink.title = caption;
	mainimagelink.href = zoom_src;
}


function equalSidebar()
{
	if($('sidebar'))
	{
		var sb = $('sidebar');
		var mn = $('main');
		var sb_height = sb.offsetHeight;
		var mn_height = mn.offsetHeight;
		if(sb_height > mn_height)
		{
			mn.style.height = (sb_height - 2) + 'px';
		}
		else
		{
			sb.style.height = (mn_height - 2) + 'px';
		}
	}
}


function addtocart_check(theForm){
	var opts = document.getElementsByClassName('option');
	var qty = $('qty');

	error = 0;
	for(i=0; i<opts.length; i++)
	{
		if(opts[i].selectedIndex == 0)
		{
			error = 1;
		}
	}
	if (error){
		alert("Please make a selection from each available option.");
		return false;
	}

	if (qty.value < 1 || qty.value > 99 || !isInteger(qty)){
		alert("Please enter a valid quantity.");
		return false;
	}
	
	return true;
}


function copyAddress(){
	fields = new Array('first_name', 'last_name', 'address1', 'address2', 'city', 'state', 'postal_code', 'phone');
	
	for(i=0; i<fields.length; i++)
	{
		bill_field = "billing_address[" + fields[i] + "]";
		ship_field = "shipping_address[" + fields[i] + "]";
		
		$(ship_field).value = $(bill_field).value;
	}
}


function checkForm(){
	var required_fields = document.getElementsByClassName('required');
	
	error = 0;
	error_message = '';

	for(i=0; i<required_fields.length; i++)
	{
		if(required_fields[i].value)
		{
			required_fields[i].className = required_fields[i].className.replace(" error","");
		}
		else
		{
			required_fields[i].className = required_fields[i].className + " error";
			error++;
		}
	}
	if(error)
	{	
		error_message = "Please fill out all required fields.\n";
	}

	if(error_message)
	{
		alert(error_message);
		//$('error_message').innerHTML = error_message;
		return false;
	}
	else
	{
		return true;
	}
}


function change_shipping(shipping_id)
{
	window.location = "/checkout/change_shipping/" + shipping_id;
	return false;
}


function newsletterResponse(originalRequest)
{
	var response = originalRequest.responseText;
	var newsletter_response = $('newsletter_response');
	var newsletter_form = $('newsletter_form');
	newsletter_response.style.display = 'block';
	newsletter_form.style.display = 'none';
	newsletter_response.innerHTML = response;
}


function validate_email(address)
{
	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(address));
}


// Adds event to window.onload without overwriting currently assigned onload functions.
// Function found at Simon Willison's weblog - http://simon.incutio.com/
function addLoadEvent(func)
{	
	var oldonload = window.onload;
	if (typeof window.onload != 'function'){
    	window.onload = func;
	} else {
		window.onload = function(){
			oldonload();
			func(); 
		}
	}
}

function isNumeric(strString)
//  check for valid numeric strings	
{
	var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0) return false;
	
	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	return blnResult;
}

function isInteger(strString)
//  check for valid integer strings	
{
	var strValidChars = "0123456789-";
	var strChar;
	var blnResult = true;
	
	if (strString.length == 0) return false;
	
	//  test strString consists of valid characters listed above
	for (i = 0; i < strString.length && blnResult == true; i++)
	{
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1)
		{
			blnResult = false;
		}
	}
	return blnResult;
}
   
   
