var OrderForm = {
	labels: [ 'Type' , 'Size' , 'Print' , 'Colour' , '2nd Colour' , 'Tail Fin' ],
	colors: [ 'Black', 'Blue', 'Green', 'Orange', 'Red', 'Purple', 'Yellow', 'White' ],
	finColors: [ 'Black',  'Dark Blue',  'Lt Blue',  'Green',  'Orange',  'Red',  'White',  'Yellow' ],
	setPricing: function(options){
		OrderForm.options=options;
	},
	getNext: function(id){
		var keys = id.split("-");
		var options=OrderForm.options;

		var l = keys.length;
		for(var a = 1;a<l ; a++){
			options=options[keys[a]];
			if(a==3) break;
		}
		var next = {};
		next.label = OrderForm.labels[keys.length-1];
		var digital = (keys[3]=='Digital');
		var blimp = (keys[1]=='blimps');
		if(l==4 || (l==5 && !digital)){
			next.options={};
			var colours = OrderForm.colors;
			var prefix="";
			if(digital){
				next.label = 'Colours';
				next.options["White"]="White";
				prefix="White/";
			}
			if(l==5){
				next.options["No Thanks"]="No Thanks";
			}
			for(var a = 0 ; a<colours.length ; a++){
				next.options[prefix+colours[a]] = prefix+colours[a];
			}
		} else if(blimp && ((!digital && (l==6)) || (digital && (l==5)))) {
			var colours = OrderForm.finColors;
			next.options={};
			next.label='Tail Fin';
			for(var a = 0 ; a<colours.length ; a++){
				next.options[colours[a]] = prefix+colours[a];
			}
		} else {
			if(options.constructor=='String') next.label='Price';
			next.options = options;
		}
		return next;
	}
};
function log(str){
	$('<li class="error">'+str+'</li>').appendTo($('#debug'));
}
$(function(){
/*		$.fn.closest = function(cls){ 
			var node = $(this[0]);
			if(node.is(cls)) return node;
			if(node[0].parentNode) return $(node[0].parentNode).closest(cls)
		};*/
	$('.orders input').each(function(k,el){
		el = $(el);
		el.attr('checked',false);
		radioUpdate = function(ev){
			var el = $(this);

			var step = el.closest('.order-step');
			var index = step.attr('id').replace(/^step-/,'');
			selected = {};
			for(var a = index*1+1 ; a<=7 ; a++){
				selected[a]=$('#step-'+a+' .order-step-option-selected input').attr('value');
				$('#step-'+a).remove();
			}
			addCol(el,selected);
		};
		addCol = function(el,selected) {
			var step = el.closest('.order-step');
			step.find('.order-step-option-selected').removeClass('order-step-option-selected');
			el.closest('.order-step-option').addClass('order-step-option-selected');
			step.addClass('order-step-done');
			var index = step.attr('id').replace(/^step-/,'');
			var options = OrderForm.getNext(el.attr('id'));

			var label = options.label;
			var next = index*1+1;
			var key = el.val();
			options = options.options;
			var ow = $('<div class="order-step-options"></div>');

			var newEl=$('<div class="order-step after-'+key+' step-'+next+' order-step-'+label+'" id="step-'+next+'"></div>');
			col=$('<div class="order-col"></div>');
			col.appendTo(ow);
			if(options.constructor==String){
				$('#selection').val(el.attr('id'));
				$('<div class="order-step-header">Price</div>').appendTo(newEl);
				options+="<input type='hidden' name='quoted-price' value='"+options+"'/>";
				$('<div class="order-step-option">'+options+'</div>').appendTo(col);
				newEl.addClass('cols-1');
				ow.appendTo(newEl);
				newEl.appendTo(step.closest('.orders'));
				$('#table-footer').show();
				if(!OrderForm.shownPrice){
					OrderForm.shownPrice=true;
				}
			} else {
				$('<div class="order-step-header">'+label+'</div>').appendTo(newEl);
				ow.appendTo(newEl);
				var count=0, cols=1;
				for(a in options) {
					if(count++==10){
						col=$('<div class="order-col"></div>');
						col.appendTo(ow);
						count=1;
						cols++;
					}
					var myId = el.attr('id')+'-'+a;
					$('<div class="order-step-option new-option"><input name="'+label+'" value="'+a+'" type="radio" align="left" id="'+myId+'"/><label for="'+myId+'">'+a+'</label></div>').appendTo(col);
				}
				newEl.addClass('cols-'+cols);
				newEl.appendTo(step.closest('.orders'));
//				$('#step-'+next+' input').change(radioUpdate);
				$('#step-'+next+' input').click(radioUpdate);
				var option = $('#step-'+next+' input[value="'+selected[next]+'"]');
				$('#table-footer').hide();
				if(option.attr('name')){
					option.attr('checked',true);
					option.closest('.order-step-option').addClass('order-step-option-selected');
					addCol(option,selected);
				}
			}

			$('.new-option').each(function(k,el){
				el = $(el);
				var h = el.find('label').height();
				if(h>20){
					el.addClass('order-step-option-2-line');
					el.removeClass('new-option');
				}
			});
		};

//		el.change(radioUpdate);
		el.click(radioUpdate);
		$('#table-footer').hide();
		$('#marketing').click(function(){
			var el = $(this);
			el.closest('form').attr('action','marketing.php');
		});
	});
});

