var lasso_style = null;
var attempted_load = false;
var load_complete = false;

function createJSONStyle()
{
	/* do for ie */
	if(attempted_load)
	{
		if(!load_complete)
			return false;
		var form = document.getElementById('add_to_cart');	
		var colors = form.elements['color_id'];	
		styleColorChange(colors.options[colors.selectedIndex].value);
		return false;
	}

	attempted_load = true;

	form = document.getElementById('add_to_cart');

	/* do not get inventory if the style is not a closeout item*/
	if(!form.elements['closeout'])
		return false;
	
	style = new Object();
	style.style_id = form.elements['style_id'].value;
	style.closeout = false;
	style.closeout = form.elements['closeout'].value;
	style.colors = new Array();
	style.sizes = new Array();
	
	colors = form.elements['color_id'];
	for(i=1; i<colors.length; i++)
	{
		color = new Object();
		color.color_id = colors.options[i].value;
		color.color_label = colors.options[i].text;
		style.colors.push(color);
	}
	
	sizes = form.elements['size_id'];
	for(i=1; i<sizes.length; i++)
	{
		size = new Object();
		size.size_id = sizes.options[i].value;
		style.sizes.push(size);
	}
	
	if(!getLassoStyle(style))
		return false;
	
	return false;
}

function getLassoStyle(style)
{
	//alert(style.toJSONString());
	//json_style = style.toJSONString();
	json_style = JSON.stringify(style);

	parameters = 'style=' + escape(encodeURI(json_style));

	//alert(parameters);
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null)
  	{
	  alert ("Your browser does not support AJAX!");
	  return false;
  	}

    xmlHttp.onreadystatechange = decodeJSONStyle;
    //xmlHttp.onprogress = onProgress;
    xmlHttp.open('POST', json_style_url, true);
    //xmlHttp.onload = onLoad;
    //xmlHttp.onerror = onError; 
    xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", parameters.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(parameters);

	//var progress = document.createElement('div');
	//progress.setAttribute('id','progress');
	//progress.id = 'progress';
	//progress.setAttribute('class','popup');
	
	//var heading = document.createElement('h1');
	//heading.appendChild(document.createTextNode('LOADING'));
	//heading.setAttribute('class','callout');
	//progress.appendChild(heading);
	//document.body.appendChild(progress);


	//document.getElementById('progress').style.display = 'block';
	fadeIn('progress'); 
	timedCount();

    return true;
}

function decodeJSONStyle()
{
	if(xmlHttp.readyState == 4)
	{
		//alert(xmlHttp.responseText);
		stopCount();
		lasso_style = eval('('+xmlHttp.responseText+')');
/*		if(lasso_style == '__LASSO_ERROR__') IE7 BS			return false; */
			
		var form = document.getElementById('add_to_cart');
		var colors = form.elements['color_id'];
		var sizes = form.elements['size_id'];
		var quantity = form.elements['quantity'];	
		
		if(lasso_style)
		{	//succes
			
			//save selected color to select after re creating the list of available colors
			var current_color_id = colors.options[colors.selectedIndex].value;
			var selected = false;
			var selected_index = 0;
			var current_index = 1;
			/* clear the colors */
			clearSelect(colors,'COLOR',0);
			//insert the available colors
			for(var color_id in lasso_style.colors)
			{
				
				if(lasso_style.colors[color_id].color_id == undefined)
					continue;
				if(color_id == current_color_id)
				{
					selected = true;
					selected_index = current_index;
				}
				insertOption(colors,lasso_style.colors[color_id].color_label,lasso_style.colors[color_id].color_id);
				current_index++;
			}
		
			/* clear the sizes */
			clearSelect(sizes,'<<<<<',0);
					
			/* clear the quantity */
			clearSelect(quantity,'<<<',0);
			
			//change to the available sizes if the selected color is still available
			if(selected)
			{
				colors.options[selected_index].selected = true;
				styleColorChange(current_color_id);
			}
			
			/*IE Won't use but do for FF and Safari */
			//colors.setAttribute('onchange','javascript: styleColorChange(this.options[this.selectedIndex].value);');
			load_complete = true;
		} else {
			// the item is sold out
			// or lasso error
			/* clear the colors */
			clearSelect(colors,'  SOLD OUT  ',0);
			
			/* clear the sizes */
			clearSelect(sizes,'  SOLD OUT  ',0);
					
			/* clear the quantity */
			clearSelect(quantity,'  SOLD OUT  ',0);
			
			/*display sold out message */
			form.elements['ADD TO SHOPPING CART'].value = 'SORRY, STYLE SOLD OUT';
			form.elements['ADD TO SHOPPING CART'].disabled = true;
		}
	} else {
		
	}
}

function styleColorChange(color_id)
{//alert(color_id);
	if(!lasso_style || color_id == '0' ) return false;

	var form = document.getElementById('add_to_cart');
	var sizes = form.elements['size_id'];
	var quantity = form.elements['quantity'];	

	/*init size select */
	clearSelect(sizes,'SIZE',0);
	
	/* clear the quantity */
	clearSelect(quantity,'<<<',0);	
	
	/* update the sizes based on the lasso request object */
	for(size in lasso_style.colors[color_id].sizes)
		if( !isNaN(parseInt(lasso_style.colors[color_id].sizes[size])) )
			insertOption(sizes,size,size);
}

function styleSizeChange(size_id)
{
	if(!lasso_style || size_id  == '0') return false;
	
	var form = document.getElementById('add_to_cart');	
	var colors = form.elements['color_id'];
	
	if(!colors.selectedIndex)
		return false;
		
	var color_id = colors.options[colors.selectedIndex].value;
	var quantity = form.elements['quantity'];	

	/*init quantity*/
	clearSelect(quantity,'QTY',0);
	
	/* update the available quantity based on the lasso request object */
	var inventory = lasso_style.colors[color_id].sizes[size_id];
	
	for(var qty=1; qty<=inventory; qty++)
		insertOption(quantity,qty,qty);
	
}

var timer;
var speed=3;
var time=0;
function timedCount()
{
	var progress = document.getElementById('progress'); 
	//alert(progress.id);
	progress.appendChild(document.createTextNode('. '));
	timer=setTimeout("timedCount()",1000);
}

function stopCount()
{
	clearTimeout(timer);
	//document.getElementById('progress').style.display = 'none';
	fadeOut('progress');
}

function changeOpac(opacity,element)
{
	var obj = document.getElementById(element).style;
	obj.opacity=(opacity/101);
	obj.MozOpacity=(opacity/101);
	obj.KhtmlOpacity=(opacity/101);
}

function fadeOut(element)
{

	object = document.getElementById(element);

	try
	{
		object.style.filter="blendTrans(duration=.5)";
		// Make sure filter is not playing.
		if ((object.filters.blendTrans.status != 2)) 
		{
			object.filters.blendTrans.Apply();
			object.style.display = 'none';
			object.filters.blendTrans.Play();
		}
	} catch (e) {
		changeOpac(100,element);
		time=0;
		//non-ie fade out	
		for(i=100;i>0;i-=2) 
			setTimeout('changeOpac('+i+',"'+element+'")',time++ * speed);	
		object.style.display = 'none';
	}
}

function fadeIn(element)
{
	object = document.getElementById(element);
	try
	{
		object.style.filter="blendTrans(duration=1)";
		// Make sure filter is not playing.
		if ((object.filters.blendTrans.status != 2)) 
		{
			object.filters.blendTrans.Apply();
			object.style.display = 'block';
			object.filters.blendTrans.Play();
		}
	} catch (e) {
		changeOpac(0,element);
		object.style.display = 'block';
		time=0;
		//non-ie fade in
		for(i=0;i<=100;i+=2) 
			setTimeout('changeOpac('+i+',"'+element+'")',time++ * speed);	
	}
}