function formatdata(sarrayname,odataarray,ocaptionarray)
{
	var lind1;
	var lind2;
	var oarray;
	

	for(lind1=0;lind1<=odataarray.length-1;lind1++)
	{
		adddata(sarrayname,ocaptionarray,odataarray[lind1].data)
	}
}
function seldata(sdata,sprice,surl,sku)
{
	this.data = sdata
	this.price = sprice
	this.url = surl
	this.sku=sku
//	this.guid=guid
//	this.pf_id = pf_id
}

function showattr(sform,sdataarray,sarrayname,scaptionarray,lcurselect,lselectcount,lmaxselect,acurrsel,linstanceindex)
{
	var svalue;
	var sspace='';
	var stxtprice='';
	var ldefquantity=0;
//	alert(2)
	copycurrsel(sform,lcurselect,lmaxselect,acurrsel,linstanceindex) 
	setdefaultvalues(sdataarray,lselectcount,acurrsel, linstanceindex )
//	alert('c')
	selchange(sform,sarrayname,scaptionarray,lcurselect,lmaxselect,linstanceindex)
//	alert('s')
	restoreselection(sform,sarrayname,scaptionarray,lcurselect,lmaxselect,acurrsel,linstanceindex)
//	alert('r')
	svalue = addtobasket_getprice(1,sform,sdataarray,lselectcount,linstanceindex)
	
	if (!isNaN(svalue))
	{
		svalue = parseFloat(svalue)
		ldefquantity = parseInt(eval("ldefqty" + linstanceindex))
		if (ldefquantity>1) svalue = svalue * ldefquantity;
	}
	
	stxtpriceraw = "document.forms['" + sform + "'].txtpriceraw" + linstanceindex + ".value = svalue"
	eval(stxtpriceraw)
	
	svalue = formatCurrency(svalue,eval('scurr' + linstanceindex))
	
	if (ldefquantity>1) svalue = svalue + ' ( X ' + ldefquantity + ')'
	//svalue = "<span class='txtreadonly2'>" + svalue + "</span>"
	
//	stxtprice = "document.forms['" + sform + "'].txtprice" + linstanceindex + ".value = sspace + svalue"
//	eval(stxtprice)
	changedivtext('txtprice' + linstanceindex,svalue,sform)
	
	
	if(m_show_total==true && eval("sparentguid" + linstanceindex)!='')
		calculate_total()
	//document.forms[sform].txtprice.value = sspace + svalue
}

function adddata(sarrayname,ocaptionarray,vdata)
{
	var lind1;
	var lind2;

	var otemp;
	var sarray=sarrayname;
	var bfound;
	var onode;
	var bnull;
	
	for(lind1=0;lind1<=vdata.length-1;lind1++)
	{
		bfound = false;
		bnull = false;
		stemp = sarray + '.children'
		otemp = eval(stemp)
		if(vdata[lind1]==null) {bnull = true;continue;}

		for(lind2=0;lind2<=otemp.length-1;lind2++)
		{
			if(vdata[lind1]==otemp[lind2].value)
			{
				sarray = sarray + ".children[" + lind2 + "]"
				bfound = true;
				break;
			}
			
		}
		if (!bfound && !bnull) 
		{
			onode = new node(vdata[lind1],vdata[lind1],ocaptionarray[lind1])
			stemp = sarray // + '.children'
			otemp = eval(stemp)
			otemp.children[otemp.children.length] = onode
			sarray = sarray + ".children[" + (otemp.children.length-1).toString() + "]"
		}
		else
		{
//			alert('found')
		}
		
	}
}

function node(stext,svalue,schildlabel)
{
	this.text=stext;
	this.value=svalue;
	this.childlabel=schildlabel;
	this.children = new Array()
}
function selchange(sform,sarrayname,scaptionarray,sselect,lmaxselect,linstanceindex)
{
	var ocurr2;
	ocurrent = sselect;
	var scurobject=sarrayname;
	var scurobject2='';
	var osel;
	var oarrobj;
	var lselindex;
	var sdocform;
	
	var ocaptionarray = eval(scaptionarray);
	
	sdocform = "document.forms['" + sform + "']"
//	alert(1)
	for(index=0;index<=sselect;index++)
	{
		ssel = sdocform + "." + "sel_" + linstanceindex + index;
//		alert(9)
		osel = eval(ssel)
//		alert(ssel)
		svalue = osel.options[osel.selectedIndex].value
		
		scurobject2 = scurobject + '.children'
//		alert(10)
		oarrobj = eval(scurobject2);
//		alert(100)
		for(lindex2=0;lindex2<=oarrobj.length - 1;lindex2++)
		{
			if (svalue == oarrobj[lindex2].value)
			{
				scurobject = scurobject + '.children[' + lindex2 + ']'
				break;
			}
		}
	}
	lselindex = sselect;
//		alert(11)
	for(index=lselindex + 1;index<=lmaxselect - 1;index++)
	{
		ssel = sdocform + "." + "sel_" + linstanceindex + index;
		osel = eval(ssel);
		while (osel.options.length>0)
			osel.options[osel.options.length-1]=null;
		
		//eval(sdocform + "." + "txtsel_" + linstanceindex + index + ".value=''");						
		changedivtext('txtsel_' + linstanceindex + index,'',sdocform)		
		
		
	}
//	alert(22)
	while(true)
	{
		oarrobj = eval(scurobject + '.children')
		if (oarrobj.length<=0) break;
		lselindex = lselindex + 1;
		ssel = sdocform + "." + "sel_" + linstanceindex + lselindex;
		osel = eval(ssel);
		for(index=0;index<=oarrobj.length - 1; index++)
		{
			var oOption = new Option(oarrobj[index].text,oarrobj[index].value,false,false)
			osel.options.length=osel.options.length+1
			osel.options[osel.options.length-1]=oOption
		}
		if (typeof osel =='object')
		{
			osel.selectedIndex=0
			//eval(sdocform + "." + "txtsel_" + linstanceindex + lselindex + ".value='" + ocaptionarray[lselindex] + "'");
			changedivtext('txtsel_' + linstanceindex + lselindex,ocaptionarray[lselindex],sdocform)		
		}
		scurobject = scurobject + '.children[0]'
		
		
	}
}


function setdefaultvalues(sdataarray,lselectcount,acurrsel,linstanceindex)
{
	var odataarray=eval(sdataarray);
	
	adefskuind = eval("ldefskuind" + linstanceindex)
	//alert("ldefskuind" + linstanceindex)
	if (adefskuind[0]>=0 && adefskuind[0]<=odataarray.length-1)
	{
		adata = odataarray[adefskuind[0]].data	
		for(lindex2=0;lindex2<=lselectcount;lindex2++)
		acurrsel[lindex2]=adata[lindex2];
		adefskuind[0] = -1;
	}
	//alert(acurrsel[1])
}


function copycurrsel(sform,lselindex,lmaxselect,acurrsel,linstanceindex)
{
	sdocform = "document.forms['" + sform + "']"
	
	for(i=0;i<=lmaxselect-1;i++)
		acurrsel[i]='';
	
	for(i=lselindex+1;i<=lmaxselect-1;i++)
	{
		ssel = sdocform + "." + "sel_" + linstanceindex + i;
//		alert(ssel)
		osel = eval(ssel)
		if (osel.selectedIndex==-1) break;
		svalue = osel.options[osel.selectedIndex].value	
		acurrsel[i]= svalue
	}
//	alert(4)
}


function restoreselection(sform,sarrayname,scaptionarray,lselindex,lmaxselect,acurrsel,linstanceindex)
{
	var bfound=false;

	sdocform = "document.forms['" + sform + "']"
	for(i=lselindex+1;i<=lmaxselect-1;i++)
	{
		ssel = sdocform + "." + "sel_" + linstanceindex + i;
		osel = eval(ssel)
		if (osel.selectedIndex==-1) break;
		bfound = false;
		for(j=0;j<=osel.options.length-1;j++)
		{
			if(osel.options[j].value==acurrsel[i])
			{
				osel.selectedIndex = j;
				selchange(sform,sarrayname,scaptionarray,i,lmaxselect,linstanceindex)
				bfound = true;
				break;
			}
		}
		if(!bfound) break;
	}
}

function addtobasket_getprice(smode,sform,sdataarray,lselectcount,linstanceindex)
{
var index;
var osel;
var svalue;
var lselindex;
var sdocform;
var odocform;
var selindex;
var odataarray=eval(sdataarray);
var surl;
var sguid;
var spf_id;
	
	sdocform = "document.forms['" + sform + "']"
	odocform = eval(sdocform)
	sguid = eval("sparentguid" + linstanceindex)
	spf_id = eval("spf_id" + linstanceindex)
	
	var i=0;
	for(index=0;index<=odataarray.length-1;index++)
	{
		i=i+1;
		bfound = false
		selindex = 0
		for(lindex2=0;lindex2<=lselectcount;lindex2++)
		{
			adata = odataarray[index].data
			
			if (adata[lindex2]==null) continue;
			
			ssel = sdocform + "." + "sel_" + linstanceindex + selindex;
			osel = eval(ssel)

			//The following line is commented coz, in some situations, the value in the first option may be empty,
			//so we still loop thru the rest of the options to find the value
			//if (osel.options[osel.selectedIndex].text=='') break;
			
			svalue = osel.options[osel.selectedIndex].value
			
			if (adata[lindex2]==svalue)
			{
				bfound = true
			}
			else
			{
				bfound = false
				break;
			}
			selindex = selindex + 1
		}
		if(bfound) 
		{
			//bfound = false;
			if (smode==1)
			{
//				sskuctl = sdocform + ".txtddsku_" + linstanceindex + ".value='" + odataarray[index].sku + "'"
//				alert(sskuctl)
//				eval (sskuctl)
				
				sskuctl = "skuctl_" + linstanceindex + ".value='" + sguid + "|" + spf_id + "|" + odataarray[index].sku + "|" + eval("isoptionalsku" + linstanceindex) + "'"
				
//				alert(sskuctl)
				eval (sskuctl)
				
				return(odataarray[index].price)
			}
			else if(smode==2)
			{
				//alert(i);
				//sqty = sdocform.quantity.options[sdocform.quantity.selectedIndex].value
				//if(sqty=='' || sqty=='0') 
				sqty = 1
				surl = eval("sddurl_data" + linstanceindex) 
				//document.forms[sform].action=odataarray[index].url
				document.forms[sform].action = surl + 'sku=' + odataarray[index].url + '&quantity=' + sqty
				
				document.forms[sform].submit();				
				break;
			}
			else if(smode==3)
			{
				//document.forms[sform].action=odataarray[index].url
				//sqty = sdocform.quantity.options[sdocform.quantity.selectedIndex].value
				//if(sqty=='' || sqty=='0') 
				sqty = 1
				surl = eval("sddurl_data" + linstanceindex) 
				document.forms[sform].action = surl + '&sku=' + odataarray[index].url + '&quantity=' + sqty
				document.forms[sform].submit();
				break;
			}
		}	
	}
}

function displaycaption_noskues(sform,lmaxselect,linstanceindex)
{

	sdocform = "document.forms['" + sform + "']"
	
	for(index=0;index<=lmaxselect - 1;index++)
	{
		//eval(sdocform + "." + "txtsel_" + linstanceindex + index + ".value='" + vcaption[index] + "'");
		changedivtext('txtsel_' + linstanceindex + index,vcaption[index],sdocform)		
	}
}

