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, varimage, volumebrk, sold_out, leadtextmessage, show_email_me)
{
	this.data=sdata
	this.price=sprice
	this.url=surl
	this.sku=sku
	this.varimage=varimage
	this.volumebrk = volumebrk
	this.sold_out = sold_out
	this.leadtextmessage = leadtextmessage
	this.show_email_me = show_email_me
	
}

function showattr(sform,sdataarray,sarrayname,scaptionarray,lcurselect,lselectcount,lmaxselect,acurrsel,linstanceindex)
{
	var svalue;
	var sspace='';
	var stxtprice='';
	copycurrsel(sform,lcurselect,lmaxselect,acurrsel,linstanceindex) 
	setdefaultvalues(sdataarray,lselectcount,acurrsel, linstanceindex )
	selchange(sform,sarrayname,scaptionarray,lcurselect,lmaxselect,linstanceindex)
	restoreselection(sform,sarrayname,scaptionarray,lcurselect,lmaxselect,acurrsel,linstanceindex)
	svalue = addtobasket_getprice(1,sform,sdataarray,lselectcount,linstanceindex)
	
	
	svalue = svalue.toString();
	
	//stxtprice = "document.forms['" + sform + "'].txtprice" + linstanceindex + ".value = sspace + svalue"
	//eval(stxtprice)
	changedivtext('txtprice' + linstanceindex,svalue,sform)	
//    getMyHTMLElement('priceCopy').innerHTML = getMyHTMLElement('txtprice1').innerHTML
	
	if(eval("sparentguid" + linstanceindex)!='')
		calculate_total()
		
		

		
}

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 + "']"
	for(index=0;index<=sselect;index++)
	{
		ssel = sdocform + "." + "sel_" + linstanceindex + index;
		osel = eval(ssel)
		svalue = osel.options[osel.selectedIndex].value
		scurobject2 = scurobject + '.children'
		oarrobj = eval(scurobject2);
		for(lindex2=0;lindex2<=oarrobj.length - 1;lindex2++)
		{
			if (svalue == oarrobj[lindex2].value)
			{
				scurobject = scurobject + '.children[' + lindex2 + ']'
				break;
			}
		}
	}
	lselindex = sselect;
	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)						
	}
	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)
	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;
	}
}


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;
		osel = eval(ssel)
		if (osel.selectedIndex==-1) break;
		svalue = osel.options[osel.selectedIndex].value	
		acurrsel[i]= svalue
	}
}


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 showcolor(sform,lselectcount,lmaxselect,linstanceindex,lcolorindex,scolor)
{
	sdocform = "document.forms['" + sform + "']"
	sdataarray = 'vdata' + linstanceindex
	sarrayname = 'amain' + linstanceindex
	scaptionarray  = 'vcaption' + linstanceindex
	acurrsel = 'acurrsel' + linstanceindex
	lcolorindex = lcolorindex - 1
	lcurselect = lcolorindex
	
		ssel = sdocform + "." + "sel_" + linstanceindex + lcolorindex;
		osel = eval(ssel)
		
		
		//alert(osel)
		
		if (osel.selectedIndex==-1) return;
		bfound = false;
		for(j=0;j<=osel.options.length-1;j++)
		{
			if(osel.options[j].value.toUpperCase()==scolor.toUpperCase())
			{
				osel.selectedIndex = j;
				showattr(sform,sdataarray,sarrayname,scaptionarray,lcurselect,lselectcount,lmaxselect,acurrsel,linstanceindex)
				bfound = true;
				break;
			}
		}
		if(!bfound) alert('This option is not available')
}


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++)
	{
		if(odataarray[index].volumebrk==1)
		{
			odivv = getMyHTMLElement('div_vskulink' + odataarray[index].sku)
			odivv.style.display = 'none'
			odivv = getMyHTMLElement('div_vsku' + odataarray[index].sku)
			odivv.style.display = 'none'			
		}
		
	}	
	
	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) 
		{
			if (smode==1)
			{
				sskuctl = "skuctl_" + linstanceindex + ".value='" + sguid + "|" + spf_id + "|" + odataarray[index].sku + "|" + eval("isoptionalsku" + linstanceindex) + "'"
				eval (sskuctl)
				if (eval('supsell' + linstanceindex)=='')
				{
					//if(odataarray[index].varimage!='') {  }
					//showvarimage('productImage',odataarray[index].varimage)


				}
				if (odataarray[index].sold_out==1) 
					{oimg = getMyHTMLElement('img_add_to_basket'+linstanceindex );
					    oimg.src = '/images/buttons/Ic_out-stock.gif'
					    //getMyHTMLElement('getEmailAddress').style.display = "none";
					}
					else if (odataarray[index].show_email_me == 1) {
					    oimg = getMyHTMLElement('img_add_to_basket' + linstanceindex);
					    oimg.src = '/images/buttons/add_to_basket.gif'
					    //getMyHTMLElement('getEmailAddress').style.display = "";
					    //getMyHTMLElement('sku_s').value = odataarray[index].sku;
					}
				else{
					oimg = getMyHTMLElement('img_add_to_basket'+linstanceindex );
					oimg.src = '/images/buttons/add_to_basket.gif'
					//getMyHTMLElement('getEmailAddress').style.display = "none";					
					}
				    
				if(odataarray[index].volumebrk==1) showvolumebreaks('div_vskulink' + odataarray[index].sku)

				page_selected_sku = odataarray[index].sku

				getMyHTMLElement('stockAvailability' + linstanceindex).innerHTML = odataarray[index].leadtextmessage
//                alert(getMyHTMLElement('stockAvailability'+linstanceindex).innerHTML)

				getMyHTMLElement('productSKU').innerHTML = odataarray[index].sku; //alert(odataarray[index].sku)
				return(odataarray[index].price)
				
			}
			else if(smode==2) {

			    page_selected_sku = odataarray[index].url
			    sqty = 1

			    quantitt = document.getElementById("qqty" + linstanceindex).value
			    if (!quantitt)
			        sqty = 1
			    else
			        sqty = quantitt				
				
				
				surl = eval("sddurl_data" + linstanceindex) + eval("sddurl_data_suffix" + linstanceindex) 
				document.forms[sform].action = surl + 'sku=' + odataarray[index].url + '&qty=' + sqty
				if (odataarray[index].sold_out==1) {break;}
				if (callcentre_mode == true){
				    document.forms[sform].submit();
				    }
				else{    
				var ajaxURL = surl + 'target=ajx_basket.asp' + '&sku=' + odataarray[index].url + '&qty=' + sqty
				invokeAJAX(ajaxURL,'ajaxBASKET','shBsketImage',1,0,ajaxBoxLoaded)
                }
                getMyHTMLElement('productSKU').innerHTML = odataarray[index].sku; //alert(odataarray[index].sku)
				break;
			}
			else if(smode==3)
			{
				sqty = 1
				surl = eval("sddwishlisturl_data" + linstanceindex) + eval("sddurl_data_suffix" + linstanceindex) 
				document.forms[sform].action = surl + 'sku=' + odataarray[index].url + '&quantity=' + sqty
				if (odataarray[index].sold_out==1) {alert(eval('sold_out_msg'+linstanceindex));break;}
				document.forms[sform].submit();
				getMyHTMLElement('productSKU').innerHTML = odataarray[index].sku; //alert(odataarray[index].sku)
				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)		
	}
}
function changedivtext(id,text,NS_form) {
	var s='';
   if(document.all) {
        document.all(id).innerHTML = text;
   }
   else if (document.getElementById) {
        document.getElementById(id).innerHTML=text;
   }
   else if (document.layers) {
	s = "document.forms['" + NS_form + "']." + id + ".value = '" + text + "'"
	eval(s)
   }
}

function showvarimage(sid,simage){oimg = getMyHTMLElement(sid);oimg.src = simage}

var previousArea = 'zoomArea'
function highlightArea(whichArea){
    hideDisplayTable('zoomArea');
    hideDisplayTable('threeSixtyArea');
    hideDisplayTable('videoArea');
    showDisplayTable(whichArea);
    if (previousArea != whichArea){previousArea = whichArea;}
    
    if (whichArea == 'zoomArea'){
        getMyHTMLElement('clickToENLARGE').style.display = '';
        getMyHTMLElement('clickTo360').style.display = 'none';
    }
    if (whichArea == 'threeSixtyArea'){
        getMyHTMLElement('clickTo360').style.display = '';
        getMyHTMLElement('clickToENLARGE').style.display = 'none';
    }
    
}

function setAlternativeImage(colour) {
//colour = replaceString(colour,' ','')
if (colour == ''){
colour = String(page_selected_sku).substring(0,6)
}
//alert(ajaxBoxLoaded)
//if (ajaxBoxLoaded != true) {setDescription(colour);}

    var colourArray = eval("colourArray_" + colour)
    var largeArray = eval("largeArray_" + colour)
    var alternativeString = ''
    for (i=0;i<colourArray.length;i++){
        // The first iteration is the main image
        if (i==0){
            swapImage('productImage', colourArray[i]);
            swapImage('large_img', largeArray[i]);
            large_image_file_name = largeArray[i];
            oldImage = colourArray[i];
			
        }
        // Run code for 360 Images files
        if (replaceString(colourArray[i],".swf","") != colourArray[i] && replaceString(colourArray[i],"/360/","") != colourArray[i] ){
            alternativeString = alternativeString + '<li><a href="javascript:var fo = new FlashObject(\'' + colourArray[i] + '\',\'mainpanel\', \'350\', \'350\', \'8\', \'#ffffff\');fo.write(\'threeSixtyArea\');enable_zoom=false;highlightArea(\'threeSixtyArea\');"><img alt="360 degree view" src="/images/articles/360.gif"></a></li>';
        }
        // Run code for Video files (served from elsewhere)
        else if (replaceString(colourArray[i],".swf","") != colourArray[i] && replaceString(colourArray[i],"/videos/","") != colourArray[i] ){
            alternativeString = alternativeString + '<li><a href="javascript:var fo = new FlashObject(\'' + colourArray[i] + '\',\'mainpanel\', \'350\', \'350\', \'8\', \'#ffffff\');fo.write(\'videoArea\');highlightArea(\'videoArea\');"><img alt="product video" src="/images/articles/video.gif"></a></li>';
        }
        // Run code for images
        else{        
            alternativeString = alternativeString + '<li><a href="javascript:swapImage(\'productImage\',\'' + colourArray[i] + '\');swapImage(\'large_img\',\'' + largeArray[i] + '\');oldImage = \'' + colourArray[i] + '\';large_image_file_name=\'' + largeArray[i] + '\';swapImageLinks(large_image_file_name);//highlightArea(\'zoomArea\');enable_zoom=false;setloadingimg(oldImage, large_image_file_name);"><img alt="alternate product" src="' + replaceString(colourArray[i], '/medium/', '/thumbnail/') + '"></a></li>';
            //alert(colourArray[i]);
            //alert(alternativeString);
        }
    }



    //getMyHTMLElement(\'clickToCAPTION\').innerHTML = getMyHTMLElement(\'clickTo360\').innerHTML;
    //getMyHTMLElement(\'clickToCAPTION\').innerHTML = getMyHTMLElement(\'clickToENLARGE\').innerHTML;
    // Set the values in the product page
    if (ajaxBoxLoaded != true) {
    if (alternativeString !=''){
        getMyHTMLElement('prodALTERNATIVES').innerHTML = "<ul>" + alternativeString + "</ul><div class=\"clear\"></div>";
		//setloadingimg(oldImage, large_image_file_name);
		swapImageLinks(large_image_file_name); // new function for updating target links for lightbox
    }
    }
}
function swapImageLinks(imageFile) {
	
	var ATags = new Array();
	ATags = document.getElementsByTagName('a');
	
	for (i=0;i<ATags.length;i++){
	
		if (ATags[i].rel == 'lightbox') {
			ATags[i].href = imageFile;
		}	
	}
}

function setDescription(shortDescriptionID){
    for (j=0;j<subProducts.length;j++){
        getMyHTMLElement('shortDESCRIPTION_' + subProducts[j]).style.display = 'none';
        getMyHTMLElement('upsells_' + subProducts[j]).style.display = 'none';
        
    }
    getMyHTMLElement('shortDESCRIPTION_' + shortDescriptionID).style.display = '';
    getMyHTMLElement('upsells_' + shortDescriptionID).style.display = '';
    getMyHTMLElement('productCODECanChange').innerHTML = shortDescriptionID;
}