//////////////
// Settings //
//////////////

var AJAXdomain = 'http://' + location.hostname + '/';
var AJAXSSLDOMAIN = 'https://secure.skateone.com/';

function getPage(url, pars, div) {
	var myAjax = new Ajax.Updater( div , url, { method: 'get', parameters: pars });
}

var thisElement = '';
var errClr = "textError";
var error = '';

//////////////
//   Code   //
//////////////

function checkdealers() {
	if ($F('zip') != '') {

		if ( !($F('zip') > 0 && $F('zip') < 100000) ) {
			$('errorBox').innerHTML = '<p class=\"error\">You must enter a valid zip code.</p>';
		} else {

			if ($('distance').value == '') {
				$('errorBox').innerHTML = '<p class=\"error\">You must select the radius for your search.</p>';
			} else {

				$('errorBox').innerHTML = '';
				$('dealer').submit();

			}

		}

	} else {

		if ($F('city') == '' && $('state').value == '') {
			$('errorBox').innerHTML = '<p class=\"error\">You must either enter a city, state, or use the zip code section.</p>';
		} else {

			$('errorBox').innerHTML = '';
			$('dealer').submit();

		}

	}
}

function supportPost() {
	var error = '';


	if ($('questionType').value == '') {
		error += '<p class=\"error\">Please select a department.</p>';
		highlightErrorField('questionType');
	} else deHighlightErrorField('questionType');

	checkField('fname', '', '<p class=\"error\">Please enter your first name.</p>');
	checkField('lname', '', '<p class=\"error\">Please enter your last name.</p>');
	checkField('email', '', '<p class=\"error\">Please enter an email address.</p>');

	if (error == '') {
		$('errorContainer').innerHTML = '';
		var url = AJAXdomain + 'support/ajaxsupport/';
		var pars = 'questionType=' + escape($F('questionType')) + '&fname=' + escape($F('fname')) + '&lname=' + escape($F('lname')) + '&email=' + escape($F('email')) + '&phone=' + escape($F('phone')) + '&fax=' + escape($F('fax')) + '&company=' + escape($F('company')) + '&address=' + escape($F('address')) + '&city=' + escape($F('city')) + '&state=' + escape($F('state')) + '&zipcode=' + escape($F('zipcode')) + '&country=' + escape($F('country')) + '&comments=' + escape($F('comments'));
		var myAjax = new Ajax.Updater('resultContainer', url, { method: 'post', parameters: pars });
	} else {
		$('errorContainer').innerHTML = error;
	}
}


function supportdealerPost() {
	var error = '';

	if ($('questionType').value == '') {
		error += '<p class=\"error\">Please select a department.</p>';
		highlightErrorField('questionType');
	} else deHighlightErrorField('questionType');

	checkField('name', '', '<p class=\"error\">Please enter your name.</p>');
	checkField('email', '', '<p class=\"error\">Please enter an email address.</p>');

	if (error == '') {
		$('errorContainer').innerHTML = '';
		var url = AJAXdomain + 'dealer/ajaxdealersupport/';
		var pars = 'questionType=' + escape($F('questionType')) + '&name=' + escape($F('name')) + '&sname=' + escape($F('sname')) + '&comments=' + escape($F('comments'));
		var myAjax = new Ajax.Updater('resultContainer', url, { method: 'post', parameters: pars });
	} else {
		$('errorContainer').innerHTML = error;
	}
}



function checkoptions() {
	var error = '';
	try {
		if ($('item').value == '') error += "<li>Please select an option</li>";
	} catch (e) {}

	try {
		if ($('colors').value == '') error += "<li>Please select a color</li>";
	} catch (e) {}

	if (error == '') $('fm-add').submit();
	else {
		$('errorContainer').innerHTML = '<ul>' + error + '</ul>';
		return false;
	}
}

function buyGridItem($item) {
	$('add').value = $item;
	$('gridForm').submit();
}
function buyDealerItems() {
	$('gridForm').submit();
}


// Load A Page W/ Ajax
function getPage(url, pars, div, thisMethod) {
	if (!thisMethod) thisMethod = 'get';
	var myAjax = new Ajax.Updater( div , url, { method: thisMethod, parameters: pars });
}

// Check Username
function verifyUsername(returnFunc) {
	error = '';

	if (returnFunc == "checkout") {
		var myAjax = new Ajax.Request( AJAXSSLDOMAIN + "register/verify/", { method: 'post', parameters: "returnNumeric=1&checkUser=" + $F('f_reg_username'), onComplete: verifyEmail });
	} else {
		var myAjax = new Ajax.Updater( 'checkContainer' , AJAXSSLDOMAIN + "register/verify/", { method: 'post', parameters: "checkUser=" + $F('f_reg_username') });
	}
}
function verifyEmail(v) {

	if (v.responseText == 0 && $F('f_reg_username') != '') {
		error = "<li>Your username is taken. Please try another.</li>";
	}

	var myAjax = new Ajax.Request( AJAXSSLDOMAIN + "register/verify/", { method: 'post', parameters: "returnNumeric=1&checkEmail=" + $F('f_reg_email'), onComplete: verifyUsernameCheckout });
}

function verifyUsernameCheckout(v) {


	if (v.responseText == 0 && $F('f_reg_email') != '') {
		error = "<li>Your email address is already in use. Please try another or use <a href=\"/account/passwordRecover/\">recover password</a> link.</li>";
	}

		checkField('f_reg_username', '', '<li>Please enter a username.</li>');
		checkField('f_reg_email', '', '<li>Please enter your email address.</li>');
	if ( !verifyEmailFormat($F('f_reg_email'))) {
		error += '<p class=\"error\">Your email address is not in a valid format. Please enter a proper email address.</p>';
		highlightErrorField('f_reg_email');
	}

		checkField('f_reg_password', '', '<li>Please enter a password.</li>');
		if ($F('f_reg_password') != $F('f_reg_verify')) {
			error += '<li>Your passwords do not match.</li>';
			highlightErrorField('f_reg_password');
			highlightErrorField('f_reg_verify');
		} else {
			deHighlightErrorField('f_reg_password');
			deHighlightErrorField('f_reg_verify');
		}

		if (error == '') {
			$('fm-register').submit();
		} else {
			error = "<ul class=\"error\">" + error + "</ul>";
			$('errorContainer').innerHTML = error;
			new Effect.Highlight('errorContainer');
			error = '';

		}

}

function updateCartQty() {
	var pars = generatePostString('cartForm');
	var myAjax = new Ajax.Updater('cartContainer', AJAXdomain + "store/cart_ajax/", { method: 'post', parameters: pars });
}
function updateDealerCartQty() {
	var pars = generatePostString('cartForm');
	var myAjax = new Ajax.Updater('cartContainer', AJAXdomain + 'dealer/cart_ajax/', { method: 'post', parameters: pars });
}

function addDealerCartQty(tmp,tmp2) {

	elem = document.getElementById(tmp);
	elem_value = document.getElementById(tmp2).value;
	
	if (elem)
	{
		color = elem.value;

		if (color.length == 0)
		{
			alert("You must first enter a color selection.  If you have no preference, enter: Assorted.");
			document.getElementById(tmp2).value = '';
		}
		else
		{
			var pars = generatePostString('gridForm');
			var myAjax = new Ajax.Updater('MiniCart', AJAXdomain + "dealer/category_ajax/", { method: 'post', parameters: pars });
			//new Ajax.Updater('input_'+tmp2, AJAXdomain + "dealer/check_max_qty/", { method: 'post', parameters: {sku: tmp2, qty: elem_value}});
		}
	}
	else
	{
		var pars = generatePostString('gridForm');
		var myAjax = new Ajax.Updater('MiniCart', AJAXdomain + "dealer/category_ajax/", { method: 'post', parameters: pars });
		//new Ajax.Updater('input_'+tmp2, AJAXdomain + "dealer/check_max_qty/", { method: 'post', parameters: {sku: tmp2, qty: elem_value}});
	}
}

function dealerCheckOutStep(step, errorcheck) {
	$('checkoutForm').submit();
}


function storeCheckOutStep(step, errorcheck) {

	// Run Error Check
	if (errorcheck) {

		error = '';

		// Regular Shipping
		if (step == 'shippingForm' || step == 'billingForm') {
			checkField('f_fname', '', '<li>You must enter a first name.</li>');
			checkField('f_lname', '', '<li>You must enter a last name.</li>');
			checkField('f_address1', '', '<li>You must enter an address.</li>');
			checkField('f_city', '', '<li>You must enter a city.</li>');
			if ($('f_state').value == '') {
				error += '<li>You must enter a state.</li>';
				highlightErrorField('f_state');
			} else deHighlightErrorField('f_state');
			checkField('f_zip', '', '<li>You must enter a receipient zip.</li>');
			if ($('f_country').value == '') {
				error += '<li>You must select a country.</li>';
				highlightErrorField('f_country');
			} else deHighlightErrorField('f_country');
			checkField('f_phone', '', '<li>You must enter a phone.</li>');

		}

		if (step == 'shippingForm') {
			if ( $F('f_address1').indexOf("PO ") != -1 || $F('f_address1').indexOf("P.O. ") != -1) {
				error += '<li>We can not ship to PO Boxes.  Please try another address.</li>';
				highlightErrorField('f_address1');
			}
		}

		if (step == 'billingForm') {
			checkField('f_email', '', '<li>You must enter an email address.</li>');
			checkField('f_phone', '', '<li>You must enter a phone number.</li>');
			checkField('f_ccnum', '', '<li>You must enter a credit card number.</li>');
			checkField('f_ccexp_mo','','<li>You must enter a valid credit card expiration month.</li>');
			checkField('f_ccexp_yr','','<li>You must enter a valid credit card expiration year.</li>');
			checkField('f_cccvv', '', '<li>You must enter a credit card security code.</li>');
		}




		if (error == '') {

			$('checkoutForm').submit();

		} else {

			// Write Error To Div
			$('errorContainer').innerHTML = "<h2>Please fill out the required fields:</h2><ul class=\"simple\">" + error + "</ul>";
			if (step == 'shippingForm') {
				location.hash = 'errorHash';
				new Effect.Highlight('errorContainer');
			}
		}
	}
}

// Error Check Secondary Scripts
function checkField(field, value, errorMessage) {
		if (document.getElementById(field).value == value) {
			error += errorMessage;
			highlightErrorField(field);
		} else deHighlightErrorField(field);

}

function highlightErrorField(field) {
	$(field).className = errClr;
}
function deHighlightErrorField(field) {
	$(field).className = 'text';
}

function isValidEmail(str) {
  return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}

function generatePostString(form) {
	var pointer;
	var postString = '';

	try {
		// Input Fields
		var pointer = getElementsByTagNames('input', $(form));
		for ( var i in pointer ) {
			if (pointer[i].name != '') {
				if (pointer[i].type == 'text' || pointer[i].type == 'hidden')
					postString +=  pointer[i].name + '=' + escape(pointer[i].value) + '&';
				else {
					if (pointer[i].checked)
						postString +=  pointer[i].name + '=' + escape(pointer[i].value) + '&';
				}
			}
		}
	} catch (e) {}
	try {
		// Selects
		var pointer = getElementsByTagNames('select', $(form));
		for ( var i in pointer ) {
			if (pointer[i].name != '') {
				postString +=  pointer[i].name + '=' + escape(pointer[i].value) + '&';
			}
		}
	} catch(e) {}
	try {
		// Textareas
		var pointer = getElementsByTagNames('textarea', $(form));
		for ( var i in pointer ) {
			if (pointer[i].name != '') {
				postString +=  pointer[i].name + '=' + escape(pointer[i].value) + '&';
			}
		}
	} catch (e) {}

	return postString;
}

function getElementsByTagNames(list,obj)
{
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++)
	{
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++)
		{
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (testNode.sourceIndex)
	{
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition)
	{
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

function verifyEmailFormat(str) {
	if (str == '') return true;
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str))
		return true;
	else
		return false;
}