/*******************************************************************************
 * Sku Definitions
 * ===============
 * 10 = Intarsia
 * 11 = Custom Cribbage Boards
 * 12 = Standard Cribbage Boards
 * 13 = Cribbage Board Patterns
 * 14 = Chess Boards
 * 15 = Jewelry Boxes / Chests
 * 16 = Lamps
 * 17 = Cutting Boards / Trivets / Baskets
 * 18 = Signs
 * 19 = Toys
 * 20 = Other Stuff
 ******************************************************************************/


/*******************************************************************************
 * Global Variables
 ******************************************************************************/
var dir 				= 'open';
var swapTime 			= 150;
var doorPosition 		= 0;
var currentPage 		= 'Home';
var currentCategory		= null;
var productPage 		= 1;
var doIntro				= true;
var productTips 		= null;
var products 			= new Array();
var productCategories 	= new Array();
var productImages 		= new Array();
var cart				= new Array();
var searchResults		= new Array();
var searchTerm			= null;
var xmlDocuments		=
	[
	 	'Boxes',
	 	'ChessBoards',
	 	'CribbagePatterns',
	 	'CustomCribbage',
	 	'Cutting_Trivet_Basket',
	 	'Intarsia',
	 	'Lamps',
	 	'OtherStuff',
	 	'StandardCribbage'
    ];

var masterFrame			= null;
var masterTab			= null;
var masterToolbar		= null;


/*******************************************************************************
 * Preload Images
 ******************************************************************************/
var doorImages = new Asset.images(
	[
		 '/resources/images/doors/door-0.jpg',
		 '/resources/images/doors/door-1.jpg',
		 '/resources/images/doors/door-2.jpg',
		 '/resources/images/doors/door-3.jpg',
		 '/resources/images/doors/door-4.jpg',
		 '/resources/images/doors/door-5.jpg',
		 '/resources/images/doors/door-6.jpg',
		 '/resources/images/doors/door-7.jpg',
		 '/resources/images/doors/door-8.jpg',
		 '/resources/images/doors/door-9.jpg',
		 '/resources/images/doors/door-10.jpg'
	 ]
);


/*******************************************************************************
 * Navigation
 ******************************************************************************/
function loadNav() {
	var myHTMLRequest = new Request( {
		url :'Navigation.html',
		method :'get',
		evalScripts :true,
		onSuccess : function(responseText, responseXML) {
			//$('mainNav').set('html', responseText);
			buildNav();

			if (doIntro) {
				setTimeout("swapDoor()", swapTime * 5);
			} else {
				slideInContent($('contentFrame'));
			}

		}
	}).send();

	buildNav();

	if (doIntro) {
		setTimeout("swapDoor()", swapTime * 5);
	} else {
		slideInContent($('contentFrame'));
	}
} //Onload.add(loadNav);

function buildNav() {
	if (parseUrl().file.toLowerCase() != 'builder.html') {
		loadAllProducts();
	}

	$$('.nav').each( function(item) {
		item.addEvent('click', function(e) {
			var link = item.getAttribute('rel');

			//if (currentPage != link) {
				loadContent(link);
			//}
		});

		item.addEvent('mouseenter', function(e) {
			item.getFirst().addClass('navTextOver');
		});

		item.addEvent('mouseleave', function(e) {
			item.getFirst().removeClass('navTextOver');
		});
	});

	// Direct Product Link
	if (window.location.search.length) {
		var category = getQueryParam('c');
		var product = getQueryParam('p');

		if (product != null && category != null) {
			loadContent(category, '', product);
		} else if (category != null) {
			loadContent(category);
		}
	}
} Onload.add(buildNav);

function loadContent(content, product, sku, currentPage) {
	var orgArgs = arguments;

	var myHTMLRequest = new Request( {
		url: content + '.html',
		method: 'get',
		async: false,
		link: 'chain',

		evalScripts: true,
		onSuccess: function(responseText, responseXML) {
			designerOpen = false;

			googleTracker('Content/Page:' + content);

			slideOutContent($('contentFrame'));

			if (content.toUpperCase() != 'HOME') {
				openDoor();
			}

			if (content.toUpperCase() != 'DESIGNER') {
				$('mainDoor').set('html', responseText);
			}

			currentPage = orgArgs[0];



			//if (content != 'Home') {
			//	slideInContent($('contentFrame'));
			//}

			if (content.toUpperCase() == 'HOME') {
				closeDoor();
			}
			slideInContent($('contentFrame'));

			if (content.toUpperCase() == 'CART') {
				displayCart();
			}

			if (content.toUpperCase() == 'SEARCHRESULTS') {
				showResults();
			}

			//if (content.toUpperCase() == 'DESIGNER') {
			//	startBuilder(responseText);
			//}

			if (orgArgs.length == 3) {
				googleTracker('Product Display/Direct Link/Sku:' + orgArgs[2]);

				loadXMLProducts(orgArgs[0], -1, orgArgs[2]);
				displayProduct(orgArgs[2]);
				return;
			} else {
				googleTracker('Category Display/Category:' + content);

				if (orgArgs.length == 4) {
					loadXMLProducts(orgArgs[0], orgArgs[3]);
				} else {
					loadXMLProducts(content, 1);
				}

				if (content.toUpperCase() == 'REQUEST' && arguments.length == 2 && product) {
					var notes = $('reqNotes');
					notes.value = 'Product\n';
					notes.value = notes.value + 'Name: ' + product.name + '\n';
					notes.value = notes.value + 'Sku: ' + product.sku + '\n';
				} else if (content.toUpperCase() == 'REQUEST' && currentDesign) {
					var notes = $('reqNotes');
					notes.value = 'Design Code: ' + currentDesign +'\n';
				}
			}
		}
	}).send();
}

function startBuilder() {
	masterTab = new Jx.TabBox({});

	masterTab.add(
		new Jx.Button.Tab({
			label: 'Untitled',
			image: '/resources/images/icons/bricks.png',
			close: false,
            active: true,

            designName: '',
            designPassword: '',
            designIsReadOnly: false,
            designIsDirty: false
		})
	);

	var tab = masterTab.tabSet.tabs[masterTab.tabSet.tabs.length-1].content;
	masterTab.tabSet.tabs[masterTab.tabSet.tabs.length-1].focus();
	initRubberband(getActiveTab());

	//masterToolbar = new Jx.Toolbar({position: 'top'});
	
	masterFrame = new Jx.Panel({
    	id: 'masterFrame',
        label: 'The Family Woodshed - Custom Cribbage Board Designer',
        menu: false,
        collapse: false,
        height: 2400,
        width: 2400,
        content: masterTab,
        onContentLoaded: function() {
	    	masterFrame = this;
    		initDesigner();
    	}//,
    	//toolbars: [masterToolbar]
    });

    masterFrame.addTo('body');
    
	var tab = null;
	masterTab.tabSet.tabs.each(function(t) {
		if (t.options.active) {
			tab = t;
		}
	});
} if (parseUrl().file.toLowerCase() == 'builder.html') { Onload.add(startBuilder); }






/*******************************************************************************
 * Product
 ******************************************************************************/
function parseBoolean(val) {
	if (val && val.toUpperCase() == 'FALSE') {
		return false;
	}
	return true;
}

function loadAllProducts() {
	var productsXML = '/resources/xml/products.xml';

	var myHTMLRequest = new Request( {
		url: productsXML,
		method: 'get',
		wait: true,
		async: false,

		onSuccess: function(responseText, responseXML) {
			productCategories = new Array();

			var xml = responseXML;
			var categories = xml.getElementsByTagName('category');

			products.empty();
			for(var mc=0; mc<categories.length; mc++) {
				var category = categories[mc];
				var cat = {
					name: 		category.getAttribute('categoryname'),
					link: 		category.getAttribute('categorylink'),
					order: 		category.getAttribute('categoryorder'),
					products:	new Array()
				}

				var prods = category.getElementsByTagName('product');
				for(var sc=0; sc<prods.length; sc++) {
					var child = prods[sc];
					var product = new Object();

					for (var pa=0; pa<child.attributes.length; pa++) {
						eval('product.' + child.attributes[pa].name + '=' + "'" + child.attributes[pa].value + "'");
					}

					product.categoryname = cat.name;

					cat.products.push(product);
				}

				productCategories.push(cat);
			};


			for(var cc=0; cc<productCategories.length; cc++) {
				var newcat = new Element('div');
				newcat.addClass('navLink');
				newcat.setAttribute('rel', productCategories[cc].link);
				newcat.setAttribute('id', 'nav_'+productCategories[cc].link);
				newcat.setAttribute('alt', productCategories[cc].name);
				newcat.setAttribute('title', productCategories[cc].name);

				if (1==2 && !cc) {
					newcat.setStyle('margin-top', '15px');
				}

				var subcat = new Element('div');
				subcat.addClass('navText');
				subcat.setAttribute('title', 'Click Here To::View the ' + productCategories[cc].products.length + ' items that we have made');
				subcat.set('text', productCategories[cc].name);
				subcat.inject(newcat);

				newcat.inject($('mainCats'));
			}

			$$('.navLink').each( function(item) {
				item.addEvent('click', function(e) {
					if (item.getAttribute('id').contains('go_')) {
						var link = item.getAttribute('rel');
						newcat.setAttribute('alt', item.getAttribute('rel'));
						newcat.setAttribute('title', item.getAttribute('rel'));
						window.location.href='http://www.customcribboards.com';
					} else {
						var link = item.getAttribute('rel');
						newcat.setAttribute('alt', item.getAttribute('rel'));
						newcat.setAttribute('title', item.getAttribute('rel'));
						window.location.href='/index.html?c='+link;
					}
				});

				item.addEvent('mouseenter', function(e) {
					item.getFirst().addClass('navTextOver');
				});

				item.addEvent('mouseleave', function(e) {
					item.getFirst().removeClass('navTextOver');
				});
			});
		}
	}).send();
}

function getCategoryProducts(category) {
	for(var cc=0; cc<productCategories.length; cc++) {
		if (category == productCategories[cc].link) {
			return productCategories[cc].products;
		}
	}

	return null;
}

function loadXMLProducts(category, page, product) {
	var productsXML = '/resources/xml/' + category + '.xml';
	var perPage = 35;
	var orgArgs = arguments;

	currentCategory = null;

	products = getCategoryProducts(category);
	if (products) {
		showProducts(products, 1, perPage, 'category');

		if (orgArgs.length == 3) {
			displayProduct(orgArgs[2]);
		}
	}
}

function buildProductTips() {
	productTips = new Tips($$('.productTip'), {offsets: {x: 10, y: 10}});

	$$('.productTip').each( function(item) {
		item.addEvent('click', function(e) {
			productTips.hide();
			displayProduct(item.getProperty('sku'));
		});
	});
}

function buildResultsTips() {
	productTips = new Tips($$('.productTip'), {offsets: {x: 10, y: 10}});

	$$('.productTip').each( function(item) {
		item.addEvent('click', function(e) {
			googleTracker('Search/Product Display/Sku:' + item.getProperty('sku'));

			productTips.hide();
			loadContent(item.getProperty('category'), '', item.getProperty('sku'));
		});
	});
}

function displayProduct(sku, category) {
	var product = null;
	var productNumber = -1;

	for (var pi=0; pi<products.length; pi++) {
		if (products[pi].sku == sku) {
			product = products[pi];
			productNumber = pi;
		}
	}

	if (product) {
		googleTracker('Product Display/Sku:' + sku);

		currentPage = 'productDetail';
		var cf = $('contentFrame');
		cf.empty();
		//console.log(product);
		if (products.length > 1) {
			var buttonBar = new Element('div');
			buttonBar.addClass('buttonBar');

			if (parseInt(productNumber) > 0) {
				var prevButton = new Element('div');
				prevButton.set('text', 'Prev Product');
				prevButton.addClass('prevPage');
				prevButton.addEvent('click', function() {
					googleTracker('Prev Product/Sku:' + products[parseInt(productNumber)].sku);

					displayProduct(products[parseInt(productNumber)-1].sku);
				});
				prevButton.inject(buttonBar);
			}


			var cat_name = new Element('span');
			cat_name.setStyles({
				'font-size':'18px',
				'font-weight': 'bold',
				'clear': 'none'
			});
			cat_name.set('html', product.categoryname);
			//cat_name.inject(buttonBar);


			if (parseInt(productNumber) < products.length-1) {
				var nextButton = new Element('div');
				nextButton.set('text', 'Next Product');
				nextButton.addClass('nextPage');
				nextButton.addEvent('click', function() {
					googleTracker('Prev Product/Sku:' + products[parseInt(productNumber)].sku);

					displayProduct(products[parseInt(productNumber)+1].sku);
				});
				nextButton.inject(buttonBar);
			}

			buttonBar.inject(cf);
		}




		var name_price = new Element('span');
		name_price.setStyles({
			'font-size':'18px',
			'font-weight': 'bold',
			'clear': 'both'
		});

		var title = product.name;
		if (parseInt(product.buy)) {
			title = 'Name: ' + title + ' ($' + product.price + ')';
		}
		name_price.set('html', title + '<br />');
		name_price.inject(cf);


		var sku = new Element('span');
		sku.setStyles({
			'font-size':'18px',
			'font-weight': 'bold',
			'clear': 'both'
		});
		sku.set('html', 'Sku: ' + product.sku + '<br />');
		sku.inject(cf);


		if (product.width) {
			var width = new Element('span');
			width.setStyles({
				'font-size':'18px',
				'font-weight': 'bold',
				'clear': 'both'
			});
			width.set('html', 'Width: ' + product.width.trim() + '"<br />');
			width.inject(cf);
		}


		if (product.height) {
			var height = new Element('span');
			height.setStyles({
				'font-size':'18px',
				'font-weight': 'bold',
				'clear': 'both'
			});
			height.set('html', 'Height: ' + product.height.trim() + '"<br />');
			height.inject(cf);
		}


		var imgsContainer = new Element('div');
		imgsContainer.setAttribute('id', 'imgsContainer');
		imgsContainer.setStyles({
			'clear': 'none',
			'float': 'left',
			'display': 'none'
		});
		imgsContainer.inject(cf);


		var imgsLabel = new Element('div');
		imgsLabel.setAttribute('id', 'imgsLabel');
		imgsLabel.setStyles({
			'font-size':'32px',
			'font-weight': 'bold',
			'clear': 'none',
			'float': 'left'
		});
		imgsLabel.set('html', '');
		imgsLabel.inject(imgsContainer);


		var imgsLinks = new Element('div');
		imgsLinks.setAttribute('id', 'imgsLinks');
		imgsLinks.addClass('inputButton');
		imgsLinks.setStyles({
			'float': 'left',
			'clear': 'none',
			'cursor': 'pointer',
			'margin-left': '10px'
		});
		
		//imgsLinks.set('html', '1');
		var ti = new Element('img', {
			src: '/resources/images/Products/Micronail/' + product.sku + '.png'
		}).inject(imgsLinks);
		
		imgsLinks.addEvent('click', function() {
			$('productImage').setAttribute('src', '/resources/images/Products/Large/' + product.sku + '.png');
		});
		imgsLinks.inject(imgsContainer);



		var imageContainer = new Element('div');
		imageContainer.setAttribute('id', 'imageContainer');
		imageContainer.setStyles({
			'clear': 'both',
			'float': 'left'
		});
		imageContainer.inject(cf);


		var image = new Element('img');
		image.setStyles({
			'border': '0px',
			'clear': 'both',
			'float': 'left'
		});
		image.setAttribute('id', 'productImage');
		image.setAttribute('src', '/resources/images/Products/Large/' + product.sku + '.png');
		image.inject(imageContainer);

		var prodDesc = null;
		if (product.longDescription) {
			prodDesc = product.longDescription;
		} else if (product.shortDescription) {
			prodDesc = product.shortDescription;
		}
		
		if (prodDesc) {
			var desc = new Element('div');
			desc.addClass('inputButton');
			desc.setStyles({
				'font-size': '16px',
				'font-weight': 'bold',
				'clear': 'both',
				'float': 'left',
				'margin-right': '0px',
				'width': '597px'
			});
			desc.set('html', prodDesc);
			desc.inject(cf);
		}


		var buttonContainer = new Element('div');
		buttonContainer.setAttribute('id', 'buttonContainer');
		buttonContainer.addClass('buttonBar');
		buttonContainer.inject(cf);


		var backButton = new Element('input');
		backButton.addClass('prevPage');
		backButton.setAttribute('type', 'submit');
		backButton.setAttribute('value', 'Back');
		backButton.addEvent('click', function() {
			googleTracker('Back To Category/Category:' + currentCategory);

			loadContent(currentCategory, '', '', productPage);
		});
		backButton.inject(buttonContainer);

		if (parseInt(product.ask)) {
			var rfqButton = new Element('input');
			rfqButton.addClass('nextPage');
			rfqButton.setAttribute('type', 'submit');
			rfqButton.setAttribute('value', 'Request a Quote');
			rfqButton.addEvent('click', function() {
				googleTracker('Request For Quote/Sku:' + product.sku);

				loadContent('Request', product);
			});
			rfqButton.inject(buttonContainer);
		}

		if (parseInt(product.buy)) {
			var addButton = new Element('input');
			addButton.addClass('nextPage');
			addButton.setAttribute('type', 'button');
			addButton.setAttribute('value', 'Add To Cart');
			addButton.addEvent('click', function() {
				googleTracker('Add To Cart/Sku:' + product.sku);

				addToCart(product);
			});
			addButton.inject(buttonContainer);


			var buyButton = new Element('input');
			buyButton.addClass('nextPage');
			buyButton.setAttribute('type', 'button');
			buyButton.setAttribute('value', 'Buy Now');
			buyButton.addEvent('click', function() {
				googleTracker('Buy Now/Sku:' + product.sku);

				payPalSingle(product);
			});
			buyButton.inject(buttonContainer);
		}


		productImages = new Array();
		var done = false;
		var imgName = null;
		var addNum = 0;
		for (addNum=1; addNum<10; addNum++) {
			imgName = '/resources/images/Products/Large/' + product.sku + '_' + parseInt(addNum) + '.png';
			var addImg = new Asset.image(imgName, {
				onload : function() {
					productImages.push(imgName);
					displayAdditionalImage(this);
				},
				onerror : function() {
					addNum=10;
				}
			});
		}
	}
}

function displayAdditionalImage(image)
{
	if (productImages.length) {
		$('imgsContainer').setStyle('display', 'block');

		var imgsLinks = new Element('div');
		imgsLinks.setAttribute('id', 'imgsLinks');
		imgsLinks.addClass('inputButton');
		imgsLinks.setStyles({
			'float': 'left',
			'clear': 'none',
			'cursor': 'pointer',
			'margin-left': '10px'
		});
		//imgsLinks.set('html', productImages.length+1);

		var ti = new Element('img', {
			src: image.getAttribute('src').replace('/Large/', '/Micronail/')
		}).inject(imgsLinks);
		
		imgsLinks.addEvent('click', function() {
			googleTracker('Show Image/Image:' + image.getAttribute('src'));

			$('productImage').setAttribute('src', image.getAttribute('src'));
		});
		imgsLinks.inject($('imgsContainer'));
	} else {
		$('imgsContainer').setStyle('display', 'none');
	}
}




/*******************************************************************************
 * Open / Close Door
 ******************************************************************************/
function pauseTime(millis) {
	var time = $time();
	var curTime = null;

	do {
		curTime = $time();
	} while (curTime - time < millis)
}

function swapDoor() {
	var dr = $('mainDoor');
	var di = dr.getStyle('background').split('-')[1];
	di = di.split('.')[0];

	if (dir == 'open') {
		di++;
		dr.style.background = 'url(/resources/images/doors/door-' + di + '.jpg)';
		if (di == 10) {
			//if (parseUrl().file == 'index.html') {
			if (parseUrl().file.test('index.html', 'i')) {
				dir = 'close';
				setTimeout("swapDoor()", swapTime * 10);
			} else {
				slideInContent($('contentFrame'));
			}
		} else {
			setTimeout("swapDoor()", swapTime);
		}
	} else {
		di--;
		dr.style.background = 'url(/resources/images/doors/door-' + di + '.jpg)';
		if (di == 0) {
			dir = 'open';
			if (parseUrl().file.test('index.html', 'i')) {
				slideInContent($('contentFrame'));
			}
		} else {
			setTimeout("swapDoor()", swapTime);
		}
	}
}

function openDoor() {
	var dr = $('mainDoor');
	var di = dr.getStyle('background').split('-')[1];
	di = di.split('.')[0];
	di++;

	if (isNaN(di)) {
		di=10;
	}

	if (dir != 'close') {
		dr.style.background = 'url(/resources/images/doors/door-' + di + '.jpg)';
		if (di != 10) {
			setTimeout("openDoor()", swapTime);
		} else {
			dir = 'close';
		}
	}
}

function closeDoor() {
	var dr = $('mainDoor');
	var di = dr.getStyle('background').split('-')[1];
	di = di.split('.')[0];
	di--;

	if (isNaN(di)) {
		di=0;
	}

	if (dir != 'open') {
		dr.style.background = 'url(/resources/images/doors/door-' + di + '.jpg)';
		if (di != 0) {
			setTimeout("closeDoor()", swapTime);
		} else {
			dir = 'open';
		}
	}
}


function closeDoorAndGo(link) {
	var dr = $('mainDoor');
	var di = dr.getStyle('background').split('-')[1];
	di = di.split('.')[0];
	di--;

	if (isNaN(di)) {
		di=0;
	}

	if (dir != 'open') {
		dr.style.background = 'url(/resources/images/doors/door-' + di + '.jpg)';
		if (di != 0) {
			setTimeout("closeDoor()", swapTime);
		} else {
			dir = 'open';
		}
	}
	
	window.location.href=link;
}




/*******************************************************************************
 * Content Frame Transitions
 ******************************************************************************/
function slideInContent(content) {
	content.setStyle('display', 'block');

	var mySlide = new Fx.Slide(content, {
		duration: 2000,
		wait: true
	});

	mySlide.hide();
	mySlide.slideIn();
}

function slideOutContent(content, startPos, endPos) {
	var mySlide = new Fx.Slide(content, {
		duration: 2000,
		wait: true
	});

	mySlide.hide();
	mySlide.slideOut();
}



/*******************************************************************************
 * URL Parsing
 ******************************************************************************/
function parseUrl(data) {
	if (arguments.length == 0) {
		data = window.location.href;
	}

	var e = /((http|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+\.[^#?\s]+)(#[\w\-]+)?/;

	if (data.match(e)) {
		return {
			url :RegExp['$&'],
			protocol :RegExp.$2,
			host :RegExp.$3,
			path :RegExp.$4,
			file :RegExp.$6,
			hash :RegExp.$7,
			search : window.location.search
		};
	} else {
		return {
			url : "",
			protocol : "",
			host : "",
			path : "",
			file : "",
			hash : "",
			search : ""
		};
	}
}

function getQueryParam(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
	}
	return null;
}



/*******************************************************************************
 * Emails
 ******************************************************************************/
function sendEmail() {
	var myHTMLRequest = new Request( {
		url :'SendEmail.cfm',
		method :'post',
		onSuccess : function(responseText, responseXML) {
			googleTracker('Request Sent');

			loadContent('RequestSent');
		}
	}).send('reqName='+$('reqName').value + '&reqEmail='+$('reqEmail').value + '&reqPhone='+$('reqPhone').value + '&reqNotes='+$('reqNotes').value);
}



/*******************************************************************************
 * Google Event Tracker
 ******************************************************************************/
function googleTracker(str) {
	if (parseUrl().host.contains("thefamilywoodshed")) {
		try {
			pageTracker._trackPageview(str);
		}
		catch(e) {}
	}
}


/*******************************************************************************
 * Pay Pal
 ******************************************************************************/
function payPalSingle(product) {
	var params = 'https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=thefamilywoodshed@yahoo.com';
	params = params + '&item_name=' + product.name;
	params = params + '&item_number=' + product.sku;
	params = params + '&amount=' + product.price;

	window.location.href=params;
}

function payPalCart() {
	var params = 'https://www.paypal.com/cgi-bin/webscr?cmd=_cart&upload=1&business=thefamilywoodshed@yahoo.com';
	//var params = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_cart&upload=1&business=thefamilywoodshed@yahoo.com';
	params = params + '&return=http://www.thefamilywoodshed.com/index.html%3Fcontent=OrderRecieved';

	cart.each(function(product, index) {
		params = params + '&item_name_' 	+ parseInt(index+1) + '=' + product.name;
		params = params + '&item_number_' 	+ parseInt(index+1) + '=' + product.sku;
		params = params + '&amount_' 		+ parseInt(index+1) + '=' + product.price;
		params = params + '&quantity_' 		+ parseInt(index+1) + '=' + product.quantity;
	});

	window.location.href=params;
}


/*******************************************************************************
 * Cart
 ******************************************************************************/
function addToCart(product) {
	var updated = false;

	readCart();

	if (cart) {
		if (cart.length) {
			for (var p=0; p<cart.length; p++) {
				if (cart[p].sku == product.sku) {
					cart[p].quantity++;
					updated = true;
				}
			}
		}
	} else {
		cart = new Array();
	}

	if (!updated) {
		product.quantity = 1;
		cart.push(product);
	}

	writeCart();

	window.location.href = 'cart.html';
	//loadContent('Cart');
}

function readCart() {
	cart = JSON.decode(Cookie.read('cart'));
}

function writeCart() {
	console.log(JSON.encode(cart));
	Cookie.write('cart', JSON.encode(cart));
}

function clearCart() {
	Cookie.destroy('cart');
}

function displayCart() {
	var cf = $('contentFrame');
	var cc = $('cartContainer');
	var total = 0;

	cc.empty();

	readCart();

	if ($('buttonBar')) {
		$('buttonBar').destroy();
	}

	if (cart) {
		for (var p=0; p<cart.length; p++) {
			var pc = new Element('div');
			pc.setAttribute('id', 'cartitem_' + cart[p].sku);
			pc.addClass('displayBox');
			pc.setStyle('width', '150px');

			var pi = new Element('img');
			pi.setAttribute('src', '/resources/images/products/thumbnail/' + cart[p].sku + '.png');
			pi.inject(pc);

			var pd = new Element('span');
			pd.set('html', '<br />' + cart[p].name + '<br />' + cart[p].quantity + '@$' + cart[p].price + ' = $' + parseInt(cart[p].quantity*cart[p].price) + '<br />');
			pd.inject(pc);



			var delButton = new Element('div');
			delButton.set('text', 'x');
			delButton.setAttribute('rel', cart[p].sku);
			delButton.setAttribute('title', 'Remove From Cart');
			delButton.setAttribute('alt', 'Remove From Cart');
			delButton.addClass('delButton');
			delButton.setStyle('width', '20px');
			delButton.setStyle('height', '20px');
			delButton.addEvent('click', function(e) {
				if (confirm('Are you sure you want to remove this product ?')) {
					removeFromCart(this.getAttribute('rel'));
					this.getParent().destroy();
					if (cart.length == 0) {
						$('buttonBar').destroy();
					}
				}
			});
			delButton.inject(pc);




			var delButton = new Element('div');
			delButton.set('html', '&darr;');
			delButton.setAttribute('rel', cart[p].sku);
			delButton.setAttribute('title', 'Decrease Quantity');
			delButton.setAttribute('alt', 'Decrease Quantity');
			delButton.addClass('delButton');
			delButton.setStyle('width', '20px');
			delButton.setStyle('height', '20px');
			delButton.addEvent('click', function(e) {
				changeCartQuantity(this.getAttribute('rel'), -1);
			});
			delButton.inject(pc);




			var delButton = new Element('div');
			delButton.set('html', '&uarr;');
			delButton.setAttribute('rel', cart[p].sku);
			delButton.setAttribute('title', 'Increase Quantity');
			delButton.setAttribute('alt', 'Increase Quantity');
			delButton.addClass('delButton');
			delButton.setStyle('width', '20px');
			delButton.setStyle('height', '20px');
			delButton.addEvent('click', function(e) {
				changeCartQuantity(this.getAttribute('rel'), 1);
			});
			delButton.inject(pc);





			pc.inject(cc);

			total = parseInt(total+(cart[p].quantity*cart[p].price));
		}


		if (cart.length) {
			var buttonBar = new Element('div');
			buttonBar.addClass('buttonBar');
			buttonBar.setAttribute('id', 'buttonBar');

			var totalButton = new Element('div');
			totalButton.set('text', 'Total: $' + total);
			totalButton.addClass('prevPage');
			totalButton.inject(buttonBar);

			var buyButton = new Element('div');
			buyButton.set('text', 'Buy Now');
			buyButton.addClass('nextPage');
			buyButton.addEvent('click', function(e) {
				googleTracker('Cart Buy Now');

				payPalCart();
			});
			buyButton.inject(buttonBar);

			buttonBar.inject(cf);
		}
	} else {
		var html = new Element('span');
		html.set('html', '<br />Your cart is currently empty.');
		html.inject(cc);
	}
}

function removeFromCart(sku) {
	readCart();

	cart.each(function(product, index) {
		if (product.sku == sku) {
			googleTracker('Remove From Cart/Sku:' + sku);

			cart.splice(index, 1);

			writeCart();
		}
	});
}

function changeCartQuantity(sku, qty) {
	readCart();

	cart.each(function(product, index) {
		if (product.sku == sku) {
			if (qty == 1) {
				googleTracker('Increase Cart Quantity/Sku:' + sku);
			} else {
				googleTracker('Decrease Cart Quantity/Sku:' + sku);
			}

			var newQty = cart[index].quantity + qty;

			if (newQty >= 1) {
				cart[index].quantity = newQty;

				writeCart();

				displayCart();
			}
		}
	});
}

function redrawCartItem(sku) {
	cart.each(function(product, index) {
		if (product.sku == sku) {
		}
	});
}


/*******************************************************************************
 * XML Searching
 ******************************************************************************/
function searchXMLDocuments() {
	searchResults = new Array;

	searchProducts();

	//for (var d=0; d<xmlDocuments.length; d++) {
	//	processXMLDocument(xmlDocuments[d]);
	//}

	googleTracker('Search/Search For/Term:' + $('searchTerm').value, ',Results:' + searchResults.length);

	loadContent('searchResults');
}

function processXMLDocument(category) {
	var productsXML = '/resources/xml/' + category + '.xml';

	var myHTMLRequest = new Request( {
		url: productsXML,
		method: 'get',
		evalScripts: false,
		wait: true,
		async: false,
		onSuccess: function(responseText, responseXML) {
			xmlDocument = responseXML;
			searchDocument(category);
		}
	}).send();
}

function searchProducts() {
	searchTerm = $('searchTerm').value;
	var matched = false;

	if (searchTerm.length) {
		productCategories.each(function(category) {
			category.products.each(function(product) {
				matched = false;

				if (product.name.toUpperCase().contains(searchTerm.toUpperCase())) {
					matched = true;
				}

				if (product.shortDescription.toUpperCase().contains(searchTerm.toUpperCase())) {
					matched = true;
				}

				if (product.longDescription.toUpperCase().contains(searchTerm.toUpperCase())) {
					matched = true;
				}

				if (matched) {
					if (product.active) {
						searchResults.push(product);
					}
				}
			})
		})
	}
}

function searchDocument(category) {
	searchTerm = $('searchTerm').value;
	var allitems = xmlDocument.getElementsByTagName("product");
	var matched = false;

	if (searchTerm.length) {
		for (var i=0; i<allitems.length; i++) {
			matched = false;

			var name = allitems[i].getAttribute('name');
			if (name.toUpperCase().contains(searchTerm.toUpperCase())) {
				matched = true;
			}

			var sdesc = allitems[i].getAttribute('shortDescription');
			if (sdesc) {
				if (sdesc.toUpperCase().contains(searchTerm.toUpperCase())) {
					matched = true;
				}
			}

			var ldesc = allitems[i].getAttribute('longDescription');
			if (ldesc) {
				if (ldesc.toUpperCase().contains(searchTerm.toUpperCase())) {
					matched = true;
				}
			}

			if (matched) {
				var product = {
						name: 				allitems[i].getAttribute('name'),
						sku: 				allitems[i].getAttribute('sku'),
						price: 				allitems[i].getAttribute('price'),
						shortDescription: 	allitems[i].getAttribute('shortDescription'),
						longDescription: 	allitems[i].getAttribute('longDescription'),
						buy: 				parseBoolean(allitems[i].getAttribute('buy')),
						ask: 				parseBoolean(allitems[i].getAttribute('ask')),
						active: 			parseBoolean(allitems[i].getAttribute('active')),
						quantity:			1,
						category:			category
					};

				if (!product.longDescription || product.longDescription == '') {
					product.longDescription = product.shortDescription;
				}

				if (product.active) {
					searchResults.push(product);
				}
			}
		}
	}
}

function showResults(page) {
	showProducts(searchResults, 1, 30, 'search');
}

function showProducts(displayProducts, page, perPage, type) {
	if (page == -1) {
		perPage = displayProducts.length;
		page = 1;
	}

	productPage = page;

	var productStart = (page-1) * perPage;
	var productEnd = productStart + perPage;
	if (productEnd > displayProducts.length) {
		productEnd = displayProducts.length;
	}
	var productPages = parseInt(displayProducts.length / perPage);
	if (displayProducts.length % perPage) {
		productPages++;
	}


	if (displayProducts.length) {
		var cf = $('contentFrame');
		cf.empty();

		if (displayProducts.length > perPage) {
			var buttonBar = new Element('div');
			buttonBar.addClass('buttonBar');

			if (productPage > 1) {
				var prevButton = new Element('div');
				prevButton.set('text', 'Prev Page');
				prevButton.addClass('prevPage');
				prevButton.addEvent('click', function() {
					showProducts(displayProducts, productPage-1, perPage, type);
				});
				prevButton.inject(buttonBar);
			}

			if (productPage+1 <= productPages) {
				var nextButton = new Element('div');
				nextButton.set('text', 'Next Page');
				nextButton.addClass('nextPage');
				nextButton.addEvent('click', function() {
					showProducts(displayProducts, productPage+1, perPage, type);
				});
				nextButton.inject(buttonBar);
			}

			buttonBar.inject(cf);
		}

		for(var i=productStart; i<productEnd; i++) {
			var pi = new Element('img');
			pi.addClass('productTip');
			pi.setAttribute('src', '/resources/images/products/thumbnail/' + displayProducts[i].sku + '.png');
			pi.setAttribute('id', 'product_'+i);

			var title = '<div style="border: 2px solid #80261D; background-color: #F2BE82;"><strong>' + displayProducts[i].name;
			if (displayProducts[i].buy) {
				title = title + ' ($' + displayProducts[i].price + ')';
			}
			title = title + '<br />(' + displayProducts[i].sku +')</strong></div>';
			pi.setAttribute('title', title);

			var hint = 	"<div style='width: 200px; padding: 5px; border: 2px solid #80261D; background-color: #F2BE82;'><img src='/resources/images/Products/Medium/" +
						displayProducts[i].sku +
						".png' /><br />" +
						displayProducts[i].shortDescription;

			if (displayProducts[i].width) {
				hint = hint + 'Width: ' + displayProducts[i].width.trim() + '"<br />';
			}

			if (displayProducts[i].height) {
				hint = hint + 'Height: ' + displayProducts[i].height.trim() + '"<br />';
			}

			hint = hint + "</div>";

			pi.setAttribute('rel', hint);
			pi.setProperty('sku', displayProducts[i].sku);
			pi.setProperty('category', displayProducts[i].category);
			pi.inject(cf);
		}
	}

	if (type == 'search') {
		buildResultsTips();
	} else if (type == 'category') {
		buildProductTips();
	}

	var directLinkContent = $('directLinkContent');
	directLinkContent.empty();

	for(var i=0; i<displayProducts.length; i++) {
		var dpl = new Element('a');
		dpl.setAttribute('href', '/index.html?c=' + displayProducts[i].category + '&p=' + displayProducts[i].sku);
		dpl.set('text', displayProducts[i].name);
		dpl.inject(directLinkContent);
	}
}

