function addFabricToOrder(colourId){
	var orderAmount = $('#orderAmount' + colourId).val();
	var orderUnit = $('#unitSelect' + colourId).val();
	var params = { func:"fabric", orderAmount:orderAmount, orderUnit:orderUnit, colourId:colourId };

	genericAddToOrder(params, colourId);
}

function addKitToOrder(kitId){
	var orderAmount = $('#orderAmount' + kitId).val();
	var optionId = $('#orderOption' + kitId).val();
	var params = { func:"kit", kitId:kitId, orderAmount:orderAmount, optionId:optionId };

	genericAddToOrder(params, kitId);
}

function addPatternToOrder(patternId){
	var orderAmount = $('#orderAmount' + patternId).val();
	var params = { func:"pattern", patternId:patternId, orderAmount:orderAmount };

	genericAddToOrder(params, patternId);
}

function addNotionToOrder(catId, notionId) {
	var params = { notionId:notionId };

	if(catId == 1)
		params['func'] = 'zipper';
	else if(catId == 9)
		params['func'] = 'thread';
	else
		params['func'] = 'notion';

	if($('#orderAmount' + notionId).length > 0)
		params['orderAmount'] = $('#orderAmount' + notionId).val();
	if($('#orderOption-1-' + notionId).length > 0)
		params['orderOption-1'] = $('#orderOption-1-' + notionId).val();
	if($('#orderOption-2-' + notionId).length > 0)
		params['orderOption-2'] = $('#orderOption-2-' + notionId).val();
	if($('#unitSelect' + notionId).length > 0)
		params['orderUnit'] = $('#unitSelect' + notionId).val();
	else
		params['orderUnit'] = 'item';

	genericAddToOrder(params, notionId);
}

function addSwatchToOrder(){
	var orderAmount = $('#orderAmount0').val();
	var swatchId = $('#orderOption0').val();
	var params = { func:"swatch", orderAmount:orderAmount, swatchId:swatchId };

	genericAddToOrder(params, '0');
}


function genericAddToOrder(params, elId) {
	$.post(
		'/order/add-to-order',
		params,
		function(data) {
			if(data === '1') {
				alert('The specified products were added ot your order. To view your order click "My order" link in top right corner of the page.');
				if($('#orderOption-1-' + elId).length > 0) {
					if($('#orderOption-1-' + elId).is('select'))
						$('#orderOption-1-' + elId).val(0);
					else
						$('#orderOption-1-' + elId).val('');
				}
				if($('#orderOption-2-' + elId).length > 0) {
					if($('#orderOption-2-' + elId).is('select'))
						$('#orderOption-2-' + elId).val(0);
					else
						$('#orderOption-2-' + elId).val('');
				}
				if($('#unitSelect' + elId).length > 0) {
					changeUnit($('#unitSelect' + elId)[0], elId, 'fabric');
					$('#unitSelect' + elId).val(0);
				}
				else
					$('#orderAmount' + elId).val('');
			}
			else
				alert(data)
		}
	);
}



function removeFromOrder(key, category){
	$.post(
		'/order/remove-from-order',
		{ category:category, key:key },
		function(data) {
            if(data == 1)
                window.location.reload(true);
            else
                alert('Error removing object!');
		}
	);
}



function changeUnit(quantityUnitSelect, key, type){

	while(quantityUnitSelect.nextSibling){
		Dom.remove(quantityUnitSelect.nextSibling);
	}


	if(quantityUnitSelect.value == 'meter'){
		var elSub = document.createElement('span');
		elSub.setAttribute('class', 'quantityAmount');
		elSub.setAttribute('className', 'quantityAmount'); //added for ie
		elSub.innerHTML = '<input type="text" class="order-amount" id="orderAmount' + key +'" />';
		Dom.add(elSub, quantityUnitSelect.parentNode);


		Event.add(quantityUnitSelect.nextSibling, 'change', function(){
			if(isNaN(quantityUnitSelect.nextSibling.lastChild.value)){
				alert('Fabric amount in meters must be specified as a number.');
				quantityUnitSelect.nextSibling.lastChild.value = '';
			}
		});
	}
	else if(quantityUnitSelect.value == 'yard') {
		var elSub = document.createElement('span');
		elSub.innerHTML = '<input class="order-amount yardWhole" type="text" id="yardsWhole' + key + '" /> <select id="yardsFraction' + key + '"><option value="0">0/0</option><option value="0.125">1/8</option><option value="0.250">1/4</option><option value="0.333">1/3</option><option value="0.375">3/8</option><option value="0.5">1/2</option><option value="0.625">5/8</option><option value="0.666">2/3</option><option value="0.750">3/4</option><option value="0.825">7/8</option></select>';
		Dom.add(elSub, quantityUnitSelect.parentNode);


		var elSub = document.createElement('input');
		elSub.setAttribute('type', 'text');
		elSub.setAttribute('name', 'totalAmount');
		elSub.setAttribute('id', 'orderAmount' + key);
		Dom.add(elSub, quantityUnitSelect.nextSibling);
		$('#orderAmount' + key).hide();


		$('#yardsWhole' + key).change( function() {
			if(isNaN($('#yardsWhole' + key).val())) {
				alert('Fabric amount in yards must be specified as an integer and a fraction.');
				$('#yardsWhole' + key).val('');
			}
			else {
				var wholeYards = $('#yardsWhole' + key).val() * 1;
				var fractionYards = $('#yardsFraction' + key).val() * 1;
				$('#orderAmount' + key).val(wholeYards + fractionYards);
			}

		});
		$('#yardsFraction' + key).change( function() {
			var wholeYards = $('#yardsWhole' + key).val() * 1;
			var fractionYards = $('#yardsFraction' + key).val() * 1;
			$('#orderAmount' + key).val(wholeYards + fractionYards);
		});
	}
}



var Dom = {
	get: function(el){
		if (typeof el === 'string') {
			return document.getElementById(el);
		}
		else {
			return el;
		}
	},
	add: function(el, dest){
		var el = this.get(el);
		var dest = this.get(dest);
		dest.appendChild(el);
	},
	remove: function(el){
		var el = this.get(el);
		el.parentNode.removeChild(el);
	}
};



var Event = {
	add: function() {
		if (window.addEventListener) {
			return function(el, type, fn) {
				Dom.get(el).addEventListener(type, fn, false);
			};
		}
		else if (window.attachEvent) {
			return function(el, type, fn) {
				var f = function() {
					fn.call(Dom.get(el), window.event);
				};
				Dom.get(el).attachEvent('on' + type, f);
			};
		}
	}()
};




function returnYards(orderAmount){
	var fraction = orderAmount * 1000;
	fraction = fraction % 1000;
	fraction = fraction / 1000;
	var whole = orderAmount - fraction;

	if(fraction == 0){
		fraction = '';
	}
	else if(fraction == 0.125){
		fraction = '1/8';
	}
	else if(fraction == 0.250){
		fraction = '1/4';
	}
	else if(fraction == 0.375){
		fraction = '3/8';
	}
	else if(fraction == 0.5){
		fraction = '1/2';
	}
	else if(fraction == 0.625){
		fraction = '5/8';
	}
	else if(fraction == 0.750){
		fraction = '3/4';
	}
	else if(fraction == 0.875){
		fraction = '7/8';
	}
	var yardDisplayValues = new Array();
	yardDisplayValues['whole'] = whole;
	yardDisplayValues['fraction'] = fraction;
	return (yardDisplayValues);
}

