var colorSelectedValue=null;

function compareStringsWithNum(a, b) {
  var str = a.substring(0,a.indexOf(" "));
  var str2 = b.substring(0,b.indexOf(" "));
  var n = a.substring(a.indexOf(" ")+1,a.length);
  var n2 = b.substring(b.indexOf(" ")+1,b.length);
  if(str.toLowerCase() < str2.toLowerCase()) return -1;
  else if(str.toLowerCase() > str2.toLowerCase()) return 1;
  else {
	 if(isInt(n) && isInt(n2)) {
		 if(parseInt(n) < parseInt(n2)) return -1;
		 else  if(parseInt(n) > parseInt(n2)) return 1;
		return 0;
	 } else {
		if(a.toLowerCase() < b.toLowerCase()) return -1;
		else if(a.toLowerCase() > b.toLowerCase()) return 1;		
		return 0;
	 }
  }
}

function compareStrings(a, b) {
  if (a.toLowerCase() < b.toLowerCase()) return -1;
  if (a.toLowerCase() > b.toLowerCase()) return 1;
  return 0;
}

function Tree(name,pid,fid) {
	this.pid=pid;
	this.fid = fid;
	this.name=name;
	this.arr = new Array();
}

function RelatedItem(t,b,s,p,m,n,id) {
	this.thImage=t;
	this.blowupImage=b;
	this.style=s;
	this.price=p;
	this.manufacture=m;
	this.productName=n;
	this.ProductID=id;
}

function Fabric(name,price,sale_price) {
	this.name=name;
	this.price=price;
	this.sale_price=sale_price;
	//this.oak_price=oak_price;
	//this.discount_amount=discount_amount;
}

function addToBasket() {
	if(curr_state == 0) {
		alert("Please select a style number");
		return;
	} else if(curr_state == 1) {
		alert("Please select a size");
		return;
	} else if(curr_state == 2) {
		alert("Please select a color");
		return;
	} else if(curr_state == 3) {
		alert("Please select a fabric");
		return;
	}  else {
		obj = document.getElementById("width");
		if(obj != null) {
			if(obj.selectedIndex == 0) {
				alert("Please select a width");
				return;
			}
		}
		obj = document.getElementById("extra");
		if(obj != null) {
			if(obj.selectedIndex == 0) {
				alert("Please select a shank");
				return;
			}
		}
	}
	obj = document.getElementById("fabric");
	var i,j,k,l,index,Product_ID,Style_ID,Style_Name,Size_ID,Size,Color_ID,Color,Fabric;
	var isonlyonefabric=false;
	if(obj == null) {
		isonlyonefabric=true;
		obj = document.getElementById("color");
		if(obj != null) {
			index = obj.options[obj.selectedIndex].value.split(" ");
		} else {
			index = colorSelectedValue.split(" ");
		}
		i = parseInt(index[0]);
		j = parseInt(index[1]);
		k = parseInt(index[2]);
		l = 0;
		Fabric = tree.arr[i].arr[j].arr[k].arr[l].name;
	} else {
		index = obj.options[obj.selectedIndex].value.split(" ");
		i = parseInt(index[0]);
		j = parseInt(index[1]);
		k = parseInt(index[2]);
		l = parseInt(index[3]);	
		Fabric = obj.options[obj.selectedIndex].text;
	}
	if(tree.arr[i].arr[j].arr[k].arr[l].sale_price == 0) {
		Price = tree.arr[i].arr[j].arr[k].arr[l].price;
	} else {
		Price = tree.arr[i].arr[j].arr[k].arr[l].sale_price;
	}
	Product_ID = tree.arr[i].fid;
	Style_ID = tree.arr[i].pid;
//	obj  = document.getElementById("style_number");
//	if(obj != null) {
//		Style_Number = obj.options[obj.selectedIndex].text;
//	} else {
		Style_Number = tree.arr[i].name;
//	}
	Size_ID = tree.arr[i].arr[j].pid;
	obj  = document.getElementById("size");
	if(obj != null) {
		Size = obj.options[obj.selectedIndex].text;
	} else {
		Size = tree.arr[i].arr[j].name;
	}

	Color_ID = tree.arr[i].arr[j].arr[k].pid;
	obj  = document.getElementById("color");
	if(obj != null) {
		Color = obj.options[obj.selectedIndex].text;
	} else {
		Color = tree.arr[i].arr[j].arr[k].name;
	}
	obj = document.getElementById("width");

	Width = (obj == null) ? "" : obj.options[obj.selectedIndex].value;

	obj = document.getElementById("extra");

	Extra =  (obj == null) ? "" : obj.options[obj.selectedIndex].value;

	if(arguments.length < 3) {

		if(related_items.length > 0 || Related_Item_Reference > 0) {
			document.getElementById("pagelayer").src="/cart/index.php?relatedItem=1&Product_ID="+Product_ID+"&Style_ID="+Style_ID+"&Style_Number="+escape(Style_Number)+"&Size_ID="+Size_ID+"&Size="+escape(Size)+"&Color_ID="+Color_ID+"&Color="+escape(Color)+"&Width="+escape(Width)+"&Extra="+escape(Extra)+"&Fabric="+escape(Fabric)+"&Price="+escape(Price)+"&Category_ID="+document.cartform.Category_ID.value;
		} else {
			window.location.href="/cart/index.php?Product_ID="+Product_ID+"&Style_ID="+Style_ID+"&Style_Number="+escape(Style_Number)+"&Size_ID="+Size_ID+"&Size="+escape(Size)+"&Color_ID="+Color_ID+"&Color="+escape(Color)+"&Width="+escape(Width)+"&Extra="+escape(Extra)+"&Fabric="+escape(Fabric)+"&Price="+escape(Price)+"&Category_ID="+document.cartform.Category_ID.value;
		}
	} else {
		//backend editor
		window.location.href="add2order.php?Product_ID="+Product_ID+"&Style_ID="+Style_ID+"&Style_Number="+escape(Style_Number)+"&Size_ID="+Size_ID+"&Size="+escape(Size)+"&Color_ID="+Color_ID+"&Color="+escape(Color)+"&Width="+escape(Width)+"&Extra="+escape(Extra)+"&Fabric="+escape(Fabric)+"&Price="+escape(Price)+"&orderId="+arguments[0];
	}
	return false;
}

function mainProduct() {
	var node = document.getElementById("relatedItemLayer");
	node.innerHTML = originalProduct;
	var select = document.getElementById("size");
	if(select != null) {
		select.onchange=getColorThis;
	}
	var select = document.getElementById("color");
	if(select != null) {
		select.onchange=getFabricPriceThis;
	}
	var select = document.getElementById("fabric");
	if(select != null) {
		select.onchange=showPrice;
	}
}

var originalProduct = "";
function showRelatedItem(flag,isAdd) {
	var node = document.getElementById("relatedItemLayer");
	originalProduct = node.innerHTML;
	if(flag) {
		if(related_items.length > 0 ) {
			var html = "";
			if(isAdd) {
				html += "<div style='position:relative;width=100%;height:50px;background-color:#EFFDFD;border-style:solid;border-color:#cccccc;border-width:1px;'><div style='position:absolute;left:10px;top:18px'>Selection added to shopping cart. <a href=/cart/cart.php><img src=/images/checkout.gif align=absmiddle border=0></a></div></div>";
			}
			if(Related_Item_Text != "") {
				html +="<b>"+Related_Item_Text+"<br><br>";
			}
			html +="<table width=100% cellpadding=3>";
			for(var i=0;i<related_items.length;i=i+3) {
				html +="<tr>"
				html +="<td class=text2 align=center>";
				html +="<a href=product.php?Product_ID="+related_items[i].ProductID+"><img border=0; src='thimages/"+related_items[i].thImage+"'><br>"+related_items[i].productName+"<br>"+related_items[i].manufacture+"<br>"+related_items[i].style+" $"+CurrencyFormatted(related_items[i].price)+"</a>";
				html +="</td>";
				html +="<td class=text2 align=center>";
				if(i+1<related_items.length) {
					html +="<a href=product.php?Product_ID="+related_items[i+1].ProductID+"><img border=0; src='thimages/"+related_items[i+1].thImage+"'><br>"+related_items[i+1].productName+"<br>"+related_items[i+1].manufacture+"<br>"+related_items[i+1].style+" $"+CurrencyFormatted(related_items[i+1].price)+"</a>";
				}
				html +="</td>";
				html +="<td class=text2 align=center>";
				if(i+2<related_items.length) {
					html +="<a href=product.php?Product_ID="+related_items[i+2].ProductID+"><img border=0; src='thimages/"+related_items[i+2].thImage+"'><br>"+related_items[i+2].productName+"<br>"+related_items[i+2].manufacture+"<br>"+related_items[i+2].style+" $"+CurrencyFormatted(related_items[i+2].price)+"</a>";
				}
				html +="</td>";
				html +="</tr>"
			}
			html+="</table>";
			if(Related_Item_Reference > 0) {
				html +="<b><a href=items.php?Category_ID="+Related_Item_Reference+">Click here</a> for more related items.</b><br>";
			}
			html +="<b><a href=\"JavaScript:void(0)\" onclick=\"mainProduct(); return false;\">Click here</a> to go back to main product.</b><br>";
			node.innerHTML=html;
		} 
	} else {
		node.innerHTML="<b>Unable to add your item to your basket basket</b>";
	}
}

function CurrencyFormatted(amount)
{
var i = parseFloat(amount);
if(isNaN(i)) { i = 0.00; }
var minus = '';
if(i < 0) { minus = '-'; }
i = Math.abs(i);
i = parseInt((i + .005) * 100);
i = i / 100;
s = new String(i);
if(s.indexOf('.') < 0) { s += '.00'; }
if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
s = minus + s;
return s;
}
// end of function CurrencyFormatted()

function showPrice() {
	var tbody = document.getElementById("tbody");
	if(this.options[this.selectedIndex].value == "") {
		while(tbody.childNodes.length > 3) {
			tbody.removeChild(tbody.lastChild);
		}
		curr_state = 3;
		return;
	}
	var tr= document.createElement("TR");
	var td = document.createElement("TD");
	var tmp = this.options[this.selectedIndex].value.split(" ");
	index = parseInt(tmp[0]);
	index2 = parseInt(tmp[1]);
	index3 = parseInt(tmp[2]);
	index4 = parseInt(tmp[3]);
	var obj = tree.arr[index].arr[index2].arr[index3].arr[index4];
	if(obj.sale_price == 0) {
		td.innerHTML="<b>Price: $"+obj.price+"</b>";
	} else {
		td.innerHTML="<b>Price: $"+obj.sale_price+"</b>";
	}
	td.className="text2";
	tr.appendChild(td);
	while(tbody.childNodes.length > 3) {
		tbody.removeChild(tbody.lastChild);
	}
	tbody.appendChild(tr);
	curr_state=100;
	self.scrollTo(0, document.body.scrollHeight);
}

function getFabricPriceThis() {
	getFabricPrice(this);
}

function getFabricPrice(obj) {
	if(obj == null) {
		obj = this;
	} 
	var tbody = document.getElementById("tbody");
	if(obj.options[obj.selectedIndex].value == "") {
		while(tbody.childNodes.length > 2) {
			tbody.removeChild(tbody.lastChild);
		}
		curr_state = 2;
		return;
	}
	var tr= document.createElement("TR");
	var td = document.createElement("TD");
	td.height=30;
	var select = document.createElement("SELECT");	
	select.id="fabric";
	var tmp = obj.options[obj.selectedIndex].value.split(" ");
	index = parseInt(tmp[0]);
	index2 = parseInt(tmp[1]);
	index3 = parseInt(tmp[2]);
	var obj = tree.arr[index].arr[index2].arr[index3];
	var fabric;
	var opt = new Array();
	var opt_index = Array();
	var isonlyonefabric=false;
	if(obj.arr.length == 1) {
		fabric = obj.arr[0].name.split(",");
		
		if(fabric.length == 1) {
			if(obj.arr[0].sale_price == 0) {
				td.innerHTML="<b>Fabric: "+fabric[0]+" <br>Price: $"+obj.arr[0].price+"</b>";
			} else {
				td.innerHTML="<b>Fabric: "+fabric[0]+" <br>Price: $"+obj.arr[0].sale_price+"</b>";
			}
			td.className="text2";
			isonlyonefabric=true;
			curr_state=-1;
		}
	}
	if(!isonlyonefabric) {
		select.options[0] = new Option("Select fabric",""); 
		for(var i=0;i<obj.arr.length;i++) {
			fabric = obj.arr[i].name.split(",");  
			for(var j =0;j<fabric.length;j++) {
				opt[opt.length] = fabric[j];
				opt_index[fabric[j]]=i;
			}
		}
		//opt.sort(compareStrings);
		for(var k=0;k<opt.length;k++) {
			select.options[select.options.length] = new Option(opt[k],index+" "+index2+" "+index3+" "+opt_index[opt[k]]);
		}
		select.onchange=showPrice;
		td.appendChild(select);
	}
	tr.appendChild(td);
	while(tbody.childNodes.length > 2) {
		tbody.removeChild(tbody.lastChild);
	}
	tbody.appendChild(tr);
	if(curr_state != -1)	curr_state=3;
	self.scrollTo(0, document.body.scrollHeight);
}

function getColorThis() {
	getColor(this);
}

function getColor(obj) {
	var tbody = document.getElementById("tbody");
	if(obj.options[obj.selectedIndex].value == "") {
		while(tbody.childNodes.length > 1) {
			tbody.removeChild(tbody.lastChild);
		}
		curr_state = 1;
		return;
	}
	var tr= document.createElement("TR");
	var td = document.createElement("TD");
	td.height=30;
	var select = document.createElement("SELECT");	
	select.id="color";
	var tmp = obj.options[obj.selectedIndex].value.split(" ");
	index = parseInt(tmp[0]);
	index2 = parseInt(tmp[1]);
	var obj = tree.arr[index].arr[index2];
	var color;
	var opt = new Array();
	var opt_index = Array();
	select.options[0] = new Option("Select color",""); 
	for(var i=0;i<obj.arr.length;i++) {
		color = obj.arr[i].name.split(",");  
		for(var j =0;j<color.length;j++) {
			opt[opt.length] = color[j];
			opt_index[color[j]]=i;
		}
	}
	//opt.sort(compareStrings);
	for(var k=0;k<opt.length;k++) {
		select.options[select.options.length] = new Option(opt[k],index+" "+index2+" "+opt_index[opt[k]]);
		colorSelectedValue = index+" "+index2+" "+opt_index[opt[k]]; //only use if one color
	}
	select.onchange=getFabricPriceThis;
	td.appendChild(select);
	tr.appendChild(td);
	while(tbody.childNodes.length > 1) {
		tbody.removeChild(tbody.lastChild);
	}
	tbody.appendChild(tr);
	curr_state=2;
	if(select.options.length == 2) {
		select.options[1].selected=true;	
		//document.colorSelectValue = select.options[select.selectedIndex].value;
		getFabricPrice(select);
		var text = select.options[1].text;
		select.parentNode.innerHTML="<b class='text2'>Color: "+text+"</b>";
	}
	self.scrollTo(0, document.body.scrollHeight);
}

function getSize(index) {
	
	
	var size_node = document.getElementById("size");
	if(size_node!= null) {
		var tr = size_node.parentNode.parentNode
		tr.parentNode.removeChild(tr);
	}
	
	var tbody = document.getElementById("tbody");
	if(index == "") {
		while(tbody.childNodes.length > 1) {
			tbody.removeChild(tbody.lastChild);
		}
		curr_state = 0;
		return;
	}
	
	var tr= document.createElement("TR");
	var td = document.createElement("TD");
	td.height=30;
	var select = document.createElement("SELECT");	
	select.id="size";
	var obj = tree.arr[index];
	select.options[0] = new Option("Select size",""); 
	var opt = new Array();
	var opt_index = Array();
	var age;
	for(var i=0;i<obj.arr.length;i++) {
		age = obj.arr[i].name.split(";");  
		for(var j=0;j<age.length;j++) {
			var size;
			var age_type="";
			var tmp;
			if(age[j].indexOf("=") != -1) {
				tmp = age[j].split("=");
				age_type = tmp[0];
				size = tmp[1].split(",");
			} else {
				size=age[j].split(",");
			}
			for(var k=0;k<size.length;k++) {
				opt[opt.length] = age_type+" "+size[k];
				opt_index[age_type+" "+size[k]]=i;
			}
		}
	}
	
	//opt.sort(compareStringsWithNum);
	for(var k=0;k<opt.length;k++) {
		select.options[select.options.length] = new Option(opt[k].trim(),index+" "+opt_index[opt[k]]);
	}
	select.onchange=getColorThis;
	td.appendChild(select);
	tr.appendChild(td);
	while(tbody.childNodes.length > 1) {
		tbody.removeChild(tbody.lastChild);
	}	
//	tbody.appendChild(tr);

	var styleNumberPos_tbody = document.getElementById("styleNumberPos");

	if(styleNumberPos_tbody.childNodes.length == 1) {
		styleNumberPos_tbody.appendChild(tr);
	} else {
		styleNumberPos_tbody.insertBefore(tr,styleNumberPos_tbody.firstChild.nextSibling);
	} 

	curr_state=1;
	if(select.options.length == 2) {
		select.options[1].selected=true;	
		getColor(select);
		var text = select.options[1].text;
		select.parentNode.innerHTML="<b class='text2'>Size: "+text+"</b>";
	}
	self.scrollTo(0, document.body.scrollHeight);
}

function isInt(str) {
	num="0123456789."
	for(i=0;i<str.length;i++) {
		if(num.indexOf(str.charAt(i)) == -1) {
			return false;
		}
	}
	return true;
}

String.prototype.trim = function() {
  var str=this;
  str=str.replace(/^\s*(.*)/, "$1");
  str=str.replace(/(.*?)\s*$/, "$1");
  return str;
}


