// !------- EVENT OBSERVATIONS ----------
document.observe('dom:loaded', function(){
	reset_page();
	disable_borders();
	// !ddl_rugpad : change 
	$('ddl_rugpad').observe('change',function(e){
		$('hdn_rug_pad').value = $('ddl_rugpad').value;
		get_price();
	});
	// !add_fiber_sample_to_cart : click 
	$('add_fiber_sample_to_cart').observe('click',function(e){
		if($('hdn_fabric_id').value != "")
		{
			add_sample('fabric',$('hdn_fabric_id').value);
			$('message').innerHTML = "<strong>Rug Field sample added to cart</strong>";
			new Effect.Appear('message', {duration:1, afterFinish: function (obj) { new Effect.Fade('message', {duration: 3}) }})
		}
		else
		{
			$('message').innerHTML = "<span style='color:red;'>No fabric selected.</span>";
			new Effect.Appear('message', {duration:1, afterFinish: function (obj) { new Effect.Fade('message', {duration: 3}) }})
		}
	});
	// !add_border_sample_to_cart : click 
	$('add_border_sample_to_cart').observe('click',function(e){
		if($('hdn_border_id').value != "")
		{
			add_sample('border',$('hdn_border_id').value);
			$('message').innerHTML = "<strong>Border sample added to cart</strong>";
			new Effect.Appear('message', {duration:1, afterFinish: function (obj) { new Effect.Fade('message', {duration: 3}) }})
		}
		else
		{
			$('message').innerHTML = "<span style='color:red;'>No border selected</span>";
			new Effect.Appear('message', {duration:1, afterFinish: function (obj) { new Effect.Fade('message', {duration: 3	}) }})
		}
	});
	// !add_rug_to_cart : click 
	$('add_rug_to_cart').observe('click',function(e){
		add_rug(false);
	});
	// !fiber_thumbs : click 
	$('fiber_thumbs').observe('click',function(e){
		if (e.target.tagName == 'IMG')
		{
			clear_border_preview();
			reset_borders();
			disable_borders();
			
			$('rug_preview').style.backgroundImage = "url("+e.target.src+")";
			if (lastPickedFiberThumb)
				lastPickedFiberThumb.removeClassName('chosen');
			lastPickedFiberThumb = $(e.target).up('div');

			lastPickedFiberThumb.addClassName('chosen');
			var dimensions = fiberPatternList[e.target.id.substring(7)].width;
			$('fabric_desc').innerHTML = '<strong>Rug Field:</strong><br /> '+e.target.alt +' <br /><strong>Fiber:</strong> '+$('ddl_fiber').options[$('ddl_fiber').selectedIndex].text+' <br /><strong>Pattern:</strong> '+e.target.getAttribute('patternname')+' <br /><strong>Color:</strong> '+e.target.getAttribute('color');
			var id = e.target.id.substring(7);
			if( fiberPatternList[e.target.id.substring(7)].notice_color)
				$('fiber_notice_color').show();
			else
				$('fiber_notice_color').hide();
			if(fiberPatternList[e.target.id.substring(7)].notice_bowing)
				$('fiber_notice_bowing').show();
			else
				$('fiber_notice_bowing').hide();
			$('hdn_fabric_id').value = e.target.id.substring(7);
			$('max_width_text').innerHTML = dimensions.feet+'ft '+dimensions.inches+'in';
			//$('width_info').style.display = 'none';
			$('txt_width_ft').disabled = false;
			$('txt_width_in').disabled = false;
			check_width('inches');
			check_width('feet');
			get_price();
			
			var id = e.target.id.substring(7);
			load_borders(id);
			
			enable_borders();
			
			select_default_border(id);
		}
	});
	// !border_thumbs : click 
	$('border_thumbs').observe('click', border_thumb_click);
	// !border_thumbs_designers_choice : click 
	$('border_thumbs_designers_choice').observe('click', border_thumb_click);
	// !txt_length_ft : keyup 
	$('txt_length_ft').observe('keyup',function(e){
		val = parseInt($('txt_length_ft').value);
		$('txt_length_ft').value = (isNaN(val)) ? '' : val;

		if($('txt_length_ft').value < 0)
			$('txt_length_ft').value = 0;
		while($('txt_length_ft').value > 90)
			$('txt_length_ft').value = $('txt_length_ft').value.substring(0, $('txt_length_ft').value.length-1);
		if($('txt_length_ft').value == 90 &&  $('txt_length_in').value > 0 )
			$('txt_length_in').value = 0;
		$('hdn_length_ft').value = $('txt_length_ft').value;
		get_price();
	});
	// !txt_length_ft : change 
	$('txt_length_ft').observe('change',function(e){
		if($('txt_length_ft').value == "")
			$('txt_length_ft').value = 0;
		get_price();
	});
	// !txt_length_ft : blur 
	$('txt_length_ft').observe('blur',function(e){
		if($('txt_length_ft').value == "")
			$('txt_length_ft').value = 0;
		get_price();
	});
	// !txt_length_ft : click 
	$('txt_length_ft').observe('click',function(e){
		if($('txt_length_ft').value == 0)
			$('txt_length_ft').value = "";
	});
	// !txt_length_in : keyup 
	$('txt_length_in').observe('keyup',function(e){
		val = parseInt($('txt_length_in').value);
		$('txt_length_in').value = (isNaN(val)) ? '' : val;
		
		if($('txt_length_in').value < 0)
			$('txt_length_in').value = 0;
		if($('txt_length_in').value >= 12)
			$('txt_length_in').value = 11;
		if($('txt_length_ft').value == 90 && $('txt_length_in').value > 0)
			$('txt_length_in').value = 0;
		$('hdn_length_in').value = $('txt_length_in').value;
		get_price();
	});
	// !txt_length_in : change 
	$('txt_length_in').observe('change',function(e){
		if($('txt_length_in').value == "")
			$('txt_length_in').value = 0;
		get_price();
	});
	// !txt_length_in : blur 
	$('txt_length_in').observe('blur',function(e){
		if($('txt_length_in').value == "")
			$('txt_length_in').value = 0;
		get_price();
	});
	// !txt_length_in : click 
	$('txt_length_in').observe('click',function(e){
		if($('txt_length_in').value == 0)
			$('txt_length_in').value = "";
	});
	// !txt_width_in : change
	$('txt_width_in').observe('change',function(e){
		if($('txt_width_in').value == "")
			$('txt_width_in').value = 0;
		get_price();
	});
	// !txt_width_in : blur
	$('txt_width_in').observe('blur',function(e){
		if($('txt_width_in').value == "")
			$('txt_width_in').value = 0;
		get_price();
	});
	// !txt_width_in : click
	$('txt_width_in').observe('click',function(e){
		if($('txt_width_in').value == 0)
			$('txt_width_in').value = "";
	});
	// !txt_width_in : keyup
	$('txt_width_in').observe('keyup',function(e){
		check_width('inches');
		get_price();
	});
	// !txt_width_ft : change
	$('txt_width_ft').observe('change',function(e){
		if($('txt_width_ft').value == "")
			$('txt_width_ft').value = 0;
		get_price();
	});
	// !txt_width_ft : click
	$('txt_width_ft').observe('click',function(e){
		if($('txt_width_ft').value == 0)
			$('txt_width_ft').value = "";
	});
	// !txt_width_ft : blur
	$('txt_width_ft').observe('blur',function(e){
		if($('txt_width_ft').value == "")
			$('txt_width_ft').value = 0;
	});
	// !txt_width_ft : keyup
	$('txt_width_ft').observe('keyup',function(e){
		check_width('feet');
		get_price();
	});
	// !ddl_fiber : change
	$('ddl_fiber').observe('change',function(e){
		$('total_price').innerHTML = "not enough information";
		$('fiber_notice_color').hide();
		$('fiber_notice_bowing').hide();
		$('rug_preview').style.backgroundImage = "url(/images/rug_sample.gif)";
		$('max_width_text').innerHTML = "Choose Fiber";
		$('hdn_fabric_id').value='';
		$('txt_width_ft').disabled = true;
		$('txt_width_in').disabled = true
		$('txt_width_ft').value = 0;
		$('txt_width_in').value = 0
		$('hdn_width_ft').value='0';
		$('hdn_width_in').value='0';
		//$('width_info').style.display='block';
		$('fiber_thumbs').innerHTML = "";
		$('fabric_desc').innerHTML = "";
		
		clear_border_preview();
		reset_borders();
		disable_borders();
		if($('ddl_fiber').value != "")
		{
			var i = 1;
			$('ddl_color').options.length = 0;
			$('ddl_color').options[0] = new Option("Choose a color" , "");
			if(typeof(fiberlist[$('ddl_fiber').value].colors) == "undefined")
			{
				fill_fiber_cache();
			} else {
				update_fiber_colors();
				display_fiber_thumbs($('ddl_fiber').value, $('ddl_color').value);
			}
		}
		else if($('ddl_fiber').value == "")
		{
			$('ddl_color').options.length = 0;
			$('ddl_color').options[0] = new Option("Choose a fiber" , "");
		}
	});
	// !ddl_color : change
	$('ddl_color').observe('change',function(e){
		$('fiber_thumbs').innerHTML = "";
		clear_border_preview();
		reset_borders();
		disable_borders();
		if($('ddl_color').value != "")
		{
			var i = 0;
			var classid = 1;
			if(typeof(fiberlist[$('ddl_fiber').value].colors[$('ddl_color').value].images) == "undefined")
			{
				fill_fiber_cache();
			}
			else
			{
				display_fiber_thumbs($('ddl_fiber').value, $('ddl_color').value);
			}
		} else {
			if(typeof(fiberlist[$('ddl_fiber').value].colors) == "undefined")
			{
				fill_fiber_cache();
			} else {
				update_fiber_colors();
				display_fiber_thumbs($('ddl_fiber').value, $('ddl_color').value);
			}
		}
	});
	// !ddl_material : change
	$('ddl_material').observe('change', border_material_change);
	// !ddl_width : change
	$('ddl_width').observe('change',border_thumb_change);
	// !ddl_corner : change
	$('ddl_corner').observe('change',border_thumb_change);
	// !designers_choice_restrict : change
	$('designers_choice_restrict').observe('change',border_thumb_change)
});
// END of document observations

// !------- FUNCTION ----------
// !--- border_material_change ---
function border_material_change(e){
	$('total_price').innerHTML = "not enough information";
	$('border_notice_color').hide();
	$('border_thumbs').innerHTML = "";
	
	//$('hdn_border_id').value='';
	//$('hdn_border_width').value='';
	//$('hdn_border_miter').value='';
	// must reset the src to "" before setting it to something.  IE stops working without this :(
	$('rug_preview').down('img').src = "";
	$('rug_preview').down('img').src = "/images/spacer.gif";
	$('border_desc').innerHTML = "";
	
	var previousBorderWidth = $('hdn_border_width').value;
	var previousBorderCorner = $('hdn_border_miter').value;
	
	if($('ddl_material').value != "")
	{
		new Ajax.Request('/php/design-tool.php',
			{
				method:'get',
				asynchronous: false,
				parameters: {'material' : $('ddl_material').value, 'action' :'border_comps', 'fabricId' : $('hdn_fabric_id').value},
				onSuccess: function(transport){
					var json = transport.responseText.evalJSON() || "no response text";
					var i = 1;
					widthDropDown = $('ddl_width');
					widthDropDown.options.length = 0;
					widthDropDown.options[0] = new Option("Choose a width" , "");
					preSelectedWidth = false;
					json.widths.each(function(width){
						widthDropDown.options[i] = new Option(width.text , width.value);
						widthDropDown.options[i].title = width.text;
						if (width.value == previousBorderWidth) {$('ddl_width').options[i].selected = true; preSelectedWidth = true;}
						i++;
					});
					if (!preSelectedWidth) {widthDropDown.options[1].selected = true;}
					
					var i = 0;
					cornerDropDown = $('ddl_corner');
					cornerDropDown.options.length = 0;
					//$('ddl_corner').options[0] = new Option("Square" , "none");
					preSelectedCorner = false;

					if(json.corners != null)
						json.corners.each(function(corner){
							cornerDropDown.options[i] = new Option(corner.text , corner.value);
							cornerDropDown.options[i].title = corner.text;
							if (corner.value == previousBorderCorner) {$('ddl_corner').options[i].selected = true; preSelectedCorner = true;}
							i++;
						});
					//if (!preSelectedCorner) {cornerDropDown.options[1].selected = true;}
					border_thumb_change(null);
					
					widthDropDown.disabled = false;
					cornerDropDown.disabled = false;
					
				},
				onFailure: function(){ alert('Something went wrong...') }
			});
	}
	else
	{
		$('ddl_width').options.length = 0;
		$('ddl_width').options[0] = new Option('Choose a material','');
		$('ddl_corner').options.length = 1;
		$('ddl_corner').options[0] = new Option('Choose a material','');
	}
		
}

// !--- border_thumb_change ---
function border_thumb_change(e)
{
	if($('ddl_width').value != "" && $('ddl_corner').value != "")
	{
		new Ajax.Request('/php/design-tool.php',
		{
			method:'get',
			parameters: {
				'fabricId': $('hdn_fabric_id').value,
				'material': $('ddl_material').value,
				'width': $('ddl_width').value,
				'corner': $('ddl_corner').value,
				'action': 'border_thumbs',
				'designers_choice_restrict': $F('designers_choice_restrict')
			},
			onSuccess: function(transport){
				var json = transport.responseText.evalJSON() || "no response text";
				$('border_thumbs_designers_choice').innerHTML = "";
				$('border_thumbs').innerHTML = "";
				if(json.size() == 0)
					$('border_thumbs').innerHTML = "No borders found for selected options.";
				var i = 0;

				var designersChoiceTotal = 0;				
				json.each(function(image){
					if(image.id == undefined){
						$continue;
					}
						classid = i%4;
						notice = (image.notice_color == 1) ? 'true': 'false';
						if (image.id != undefined){
							if (image.designers_choice == 1)
								imageId = "-"+image.id+"-"+image.width+"-"+image.corner+"-"+notice;
							else 
								imageId = "-"+image.id+"-"+$('ddl_width').value+"-"+$('ddl_corner').value+"-"+notice;
								
							// if designers_choice
							var insertionPoint = (image.designers_choice == 1) ? $('border_thumbs_designers_choice') : $('border_thumbs');
							if (image.designers_choice == 1) designersChoiceTotal++;	
							
							insertionPoint.insert({'bottom':"<div class='borderThumb'><img id='"+imageId+"' lowsrc='/images/loading.gif' src='/images/borders/"+image.strip_image+"' alt='"+image.color+" "+image.grown_green_number+"' title='"+image.color+" "+image.grown_green_number+"' previewimage='/images/borders/"+image.image+"' dcwidth='"+image.widthName+"' dccorner='"+image.cornerName+"' material='"+image.material+"' /> <\/div>"});
		
							if ($('hdn_border_id').value == image.id) {
								// simulate clicking the border thumb, passing in a fake event.
								var currentImageObject = $(imageId);
								border_thumb_click({ target : currentImageObject });
								//TODO: scroll to it.?
							}
						}
							i++;
				});
				
				if (designersChoiceTotal > 0)
				{
					var headerDesigners = $('header_designers_choice');
					var headerOther = $('header_other_borders');
					
					if ($F('designers_choice_restrict') != null) headerDesigners.innerHTML = "Designer's Choice Borders";					
					else headerDesigners.innerHTML = "Designer's Choice "+$('ddl_material').value+" Borders";
					
					headerDesigners.show();
					$('border_thumbs_designers_choice').show();
					headerOther.innerHTML = "Additional "+$('ddl_material').value+" Border Options";
					headerOther.show();
				} else {
					$('header_designers_choice').hide();
					$('border_thumbs_designers_choice').hide();
					$('header_other_borders').hide();				
				}
			},	
			onFailure: function(){ alert('Something went wrong...') }
		});
	}
}


// !--- border_thumb_click ---
function border_thumb_click(e){
	if (e.target.tagName == 'IMG')
	{
		$('rug_preview').down('img').src=e.target.getAttribute('previewimage');
		if (lastPickedBorderThumb)
			lastPickedBorderThumb.removeClassName('chosen');
		lastPickedBorderThumb = $(e.target).up('div');
		lastPickedBorderThumb.addClassName('chosen');
		var borderArray = e.target.id.split("-");
		$('hdn_border_id').value = borderArray[1];
		$('hdn_border_width').value = borderArray[2];
		$('hdn_border_miter').value = borderArray[3];
		$('hdn_border_material').value = $('ddl_material').options[$('ddl_material').selectedIndex].value;
		if(borderArray[4] =='true')
			$('border_notice_color').show();
		else
			$('border_notice_color').hide();
		
		if (e.target.getAttribute('dccorner') != 'null')
		{
			$('border_desc').innerHTML = '<strong>Border:</strong><br /> '+e.target.alt+'<br />'+e.target.getAttribute('dcwidth')+' '+e.target.getAttribute('material')+'<br />'+e.target.getAttribute('dccorner')+" Corners ";
		} else {
			$('border_desc').innerHTML = '<strong>Border:</strong><br /> '+e.target.alt+'<br />'+$('ddl_width').options[$('ddl_width').selectedIndex].text+' '+$('ddl_material').value+'<br />'+$('ddl_corner').options[$('ddl_corner').selectedIndex].text+" Corners ";		
		}
		get_price();
	}
}


// !--- click_price ---
function get_price()
{
	if($('hdn_fabric_id').value != "" && $('hdn_border_id').value != "" && $('hdn_border_width').value != "" && $('hdn_border_miter').value != ""
		&& $('hdn_length_ft').value != ""	&& $('hdn_length_in').value != "" && $('hdn_width_ft').value != "" && $('hdn_width_in').value != ""
		&& ($('hdn_length_ft').value > 0 || $('hdn_length_in').value > 0)
		&& ($('hdn_width_ft').value > 0 || $('hdn_width_in').value > 0 ))
	{
		new Ajax.Request('/php/design-tool.php',
		{
			method:'get',
			parameters: $('frm_rug_options').serialize() + "&action=get_price",
			onSuccess: function(transport){
				var price = transport.responseText || "no response text";
				$('total_price').innerHTML = "$"+price;
				},
				
			onFailure: function(){ alert('Something went wrong...') }
		});
	}
}

// !--- check_width(type) ---
function check_width(type)
{
	switch(type)
	{
		case 'feet':
			val = parseInt($('txt_width_ft').value);
			$('txt_width_ft').value = (isNaN(val)) ? '' : val;

			if($('txt_width_ft').value < 0)
				$('txt_width_ft').value = 0;
			if($('hdn_fabric_id').value != "")
			{
				var max_feet = fiberPatternList[$('hdn_fabric_id').value].width.feet;
				var max_inches = fiberPatternList[$('hdn_fabric_id').value].width.inches;
				if($('txt_width_ft').value == max_feet && $('txt_width_in').value > max_inches)
						$('txt_width_in').value = max_inches;
				while($('txt_width_ft').value > max_feet)
					$('txt_width_ft').value = $('txt_width_ft').value.substring(0, $('txt_width_ft').value.length-1);
			}
			else
				$('txt_width_ft').value = 0;
			/*
			if($('txt_width_ft').value == "")
				$('txt_width_ft').value = 0;
			*/
			$('hdn_width_ft').value = $('txt_width_ft').value;
		break;
		case 'inches':
			val = parseInt($('txt_width_in').value);
			$('txt_width_in').value = (isNaN(val)) ? '' : val;

			if($('txt_width_in').value < 0)
				$('txt_width_in').value = 0;
			if($('txt_width_in').value >= 12)
				$('txt_width_in').value = 11;
			
			if($('hdn_fabric_id').value != "")
			{
				var max_feet = fiberPatternList[$('hdn_fabric_id').value].width.feet;
				var max_inches = fiberPatternList[$('hdn_fabric_id').value].width.inches;
				if($('txt_width_ft').value == max_feet &&  $('txt_width_in').value > max_inches )
					$('txt_width_in').value = max_inches;
			}
			else
				$('txt_width_in').value = 0;
			/*
			if($('txt_width_in').value == "")
				$('txt_width_in').value = 0;
			*/
			$('hdn_width_in').value = $('txt_width_in').value;
		break;
	}
}
function reset_page()
{
	$('ddl_fiber').options[0].selected = true;
	$('ddl_material').options[0].selected = true;
	$('hdn_fabric_id').value='';
	$('hdn_border_id').value='';
	$('hdn_border_width').value='';
	$('hdn_border_miter').value='';
	$('hdn_length_ft').value='0';
	$('hdn_length_in').value='0';
	$('hdn_width_ft').value='0';
	$('hdn_width_in').value='0';
	$('hdn_rug_pad').value='0';
	$('txt_length_ft').value='0';
	$('txt_length_in').value='0';
	$('max_width_text').innerHTML = "Please Choose a Fiber";
	$('txt_width_ft').value='0';
	$('txt_width_ft').disabled = true;
	$('txt_width_in').value='0';
	$('txt_width_in').disabled = true;
	//$('width_info').style.display='block';
	$('border_notice_color').hide();
	$('fiber_notice_color').hide();
	$('fiber_notice_bowing').hide();
	reset_js();
}

function fill_fiber_cache() {
	new Ajax.Request('/php/design-tool.php',
	{
		method:'get',
		parameters: {'fiber' : $('ddl_fiber').value, 'action' :'fiber_thumbs'},
		onSuccess: function(transport){
			var json = transport.responseText.evalJSON() || "no response text";
			selectedFiber = $('ddl_fiber').value;
			fiberlist[selectedFiber] = json;
			update_fiber_colors();
			display_fiber_thumbs(selectedFiber, $('ddl_color').value);
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}

function update_fiber_colors() {
	$('ddl_color').options.length = 0;
	$('ddl_color').options[0] = new Option("Choose a color" , "");
	var i = 1;
	for (colorName in fiberlist[$('ddl_fiber').value].colors) {
		if (colorName != '') {
			$('ddl_color').options[i] = new Option(colorName , colorName);
			$('ddl_color').options[i].title = colorName;
		}
		i++;
	}
}

function display_fiber_thumbs(selectedFiber, selectedColor) {
	var curPattern = '';
	fibers = {'colors': {}};
	if (selectedColor != '') {
		fibers.colors[selectedColor] = fiberlist[selectedFiber].colors[selectedColor];
		for (colorName in fibers.colors) {
			color = fiberlist[selectedFiber].colors[colorName];
			color.images.each(function(image){
				i = 1;
				if(image.image_filename != "")
				{
					render_thumb(image, i);
					i++;
				}
			});
		}
	} else {
		fibers = fiberlist[selectedFiber];
		fibers.images.each(function(image){
			i = 1;
			if(image.image_filename != "")
			{
				render_thumb(image, i);
				i++;
			}
		});
	}
}

function render_thumb(image, currentRow) {
	classid = currentRow%4;
	$('fiber_thumbs').insert({'bottom':"<div class='thumb0"+(classid+1)+"'><img id='fabric_"+image.id+"' lowsrc='/images/loading.gif' src='/images/fibers/"+image.image_filename+"' alt='"+image.cross_reference_name+' '+image.cross_reference_number+"' color='"+image.color+"' patternname='"+image.pattern+"' title='"+image.cross_reference_name+' '+image.cross_reference_number+"' /></div>"});
	fiberPatternList[image.id] = {'width': image.width};
	if(image.notice_bowing == 1)
		fiberPatternList[image.id].notice_bowing = true;
	else
		fiberPatternList[image.id].notice_bowing = false;
	if(image.notice_color_variance == 1)
		fiberPatternList[image.id].notice_color = true;
	else
		fiberPatternList[image.id].notice_color = false;
}
			
function add_rug(redirect)
{
	if($('hdn_fabric_id').value != "" && $('hdn_border_id').value != "" && $('hdn_border_width').value != "" && $('hdn_border_miter').value != ""
		&& $('hdn_length_ft').value != ""	&& $('hdn_length_in').value != "" && $('hdn_width_ft').value != "" && $('hdn_width_in').value != ""
		&& ($('hdn_length_ft').value > 0 || $('hdn_length_in').value > 0)
		&& ($('hdn_width_ft').value > 0 || $('hdn_width_in').value > 0 ))
	{
		new Ajax.Request('/php/cart-tool.php',
		{
			method:'POST',
			parameters: $('frm_rug_options').serialize() + "&action=add_rug",
			onSuccess: function(transport){
				if(redirect)
					window.location = "/shopping-cart.php";
				items = transport.responseText;
				update_cart(items);
				$('message').innerHTML = "<strong>Rug added to cart</strong>";
				new Effect.Appear('message', {duration:.5, afterFinish: function (obj) { new Effect.Fade('message', {duration: 3}) }})
			},
			onFailure: function(){ alert('Something went wrong...') }
		});
	}
	else
	{
		var message = "<span style='color:red;'>";
		fadelen = 1;
		if($('hdn_fabric_id').value == "")
		{
			message += "Please select a fabric.  ";
			fadelen++;
		}
		if($('hdn_border_id').value == "")
		{
			message += "Please select a border.  ";
			fadelen++;
		}
		if(( !($('hdn_length_ft').value >0) && !($('hdn_length_in').value >0)) || (!($('hdn_width_ft').value > 0) && !($('hdn_width_in').value > 0 )))
		{
			message += "Please select a size.";
			fadelen++;
		}
		message += "</span>";
		$('message').innerHTML = message;
		new Effect.Appear('message', {duration:.5, afterFinish: function (obj) { new Effect.Fade('message', {duration: fadelen}) }});
	}
}
function add_sample(type, id)
{
	new Ajax.Request('/php/cart-tool.php',
	{
		method:'POST',
		parameters: {action:'add_sample', sample_type:type, 'id':id},
		onSuccess: function(transport){
			var itemsInCart = transport.responseText || "no response text";
			update_cart(itemsInCart);
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}
function update_cart(items)
{
	$('cart_items').innerHTML = items;
}
function reset_borders()
{
	var cell = $('border_thumbs');
	if ( cell.hasChildNodes() )
	{
	    while ( cell.childNodes.length >= 1 )
	    {
	        cell.removeChild( cell.firstChild );       
	    } 
	}
	
	removeAllBorderOptions();
}
function disable_borders()
{
	$('ddl_material').disabled = true;
	$('ddl_width').disabled = true;
	$('ddl_corner').disabled = true;
}
function enable_borders()
{
	$('ddl_material').disabled = false;
}

// !--- load_borders ---
function load_borders(fabricId)
{
	new Ajax.Request('/php/design-tool.php',
	{
		method:'get',
		// need asyc to make sure that this finishes before the default border is selected
		asynchronous: false,
		parameters: {'fabricId' : fabricId, 'action' :'load_borders'},
		onSuccess: function(transport){
			var json = transport.responseText.evalJSON() || "no response text";
			fill_borders(json);							
		},
		onFailure: function(transport){ alert('Something went wrong...') }
	});
}

// !--- fill_borders ---
function fill_borders(json)
{
	removeAllBorderOptions();

	var selectbox = $('ddl_material');
	
	var optnSelect = document.createElement("OPTION");
	optnSelect.text = "Choose";
	optnSelect.value = "";
	selectbox.options.add(optnSelect);
	
	var materialAutoSelected = false;
	var previousBorderMaterial = $('hdn_border_material').value;	
	var i;

	for (i = 0; i < json.length; i++)
	{
		var optn = document.createElement("OPTION");
		optn.text = json[i];
		optn.value = json[i];
		if (previousBorderMaterial == optn.value) { optn.selected = true; materialAutoSelected = true;}
		selectbox.options.add(optn);
	}
	if (materialAutoSelected) {border_material_change(null);}
}

// find and select the default border for the selected fabric id
//
// !--- select_default_border(fabricId) ---
function select_default_border(fabricId)
{
	new Ajax.Request('/php/design-tool.php',
	{
		method:'get',
		parameters: {'fabricId' : fabricId, 'action' :'get_default_border'},
		onSuccess: function(transport){
			var json = transport.responseText.evalJSON() || "no response text";
			//fill_borders(json);
			if(json.length == 0)
			{
				clear_border_preview();
				return;
			}
			// select the border.
			var ddlMaterial = $('ddl_material');
			for (i=0; i<= ddlMaterial.options.length; i++) {
				if (ddlMaterial.options[i].value == json.type) {
					ddlMaterial.selectedIndex = i;
					break;
				}
			}
			// set the border id for the default so that the border_material_change changes the border on Success.			
			$('hdn_border_id').value = json.border_id;
			
			border_material_change(null);
			// select wide width and mitered.
			var ddlWidth = $('ddl_width');
			for (i=0; i<= ddlWidth.options.length; i++) {
				if (ddlWidth.options[i].value == 'wide_invisible_price'){
					ddlWidth.selectedIndex = i;
					break;
				}
			}
			var ddlCorner = $('ddl_corner');
			for (i=0; i<= ddlCorner.options.length; i++) {
				var test = ddlCorner.options[i].value;
				if (ddlCorner.options[i].value == 'miter_price') {
					ddlCorner.selectedIndex = i;
					break;
				}
			}
			border_thumb_change(null);
		},
		onFailure: function(transport){ alert('Something went wrong...') }
	});
}
// !--- removeAllBorderOptions ---
function removeAllBorderOptions()
{
	var selectbox = $('ddl_material');
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		selectbox.remove(i);
	}
	
	selectbox = $('ddl_width');
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		selectbox.remove(i);
	}
	
	selectbox = $('ddl_corner');
	var i;
	for(i=selectbox.options.length-1;i>=0;i--)
	{
		selectbox.remove(i);
	}
}
function clear_border_preview()
{
	$('rug_preview').down('img').src = "/images/spacer.gif";
	$('border_desc').innerHTML = "";
}