var timeout_carat     = null;
var timeout_carat_min = null;
var timeout_carat_max = null;
var timeout_price_min = null;
var timeout_price_max = null;

var temp;
var temp_value;

window.current_min_price = 0;
window.current_max_price = 0;
window.current_min_carat = 0;
window.current_max_carat = 0;
window.min_price = 0;
window.max_price = 0;
window.last_price_input = '';

if (typeof minPrice == 'undefined')
{
	var index_shape = current_shape.toLowerCase();
	
	var minPrice = Math.round(range_shapes[index_shape]['min']['price']);
	var maxPrice = Math.round(range_shapes[index_shape]['max']['price']);
	
	
	
		window.current_min_price = minPrice;
		window.current_max_price = maxPrice;
	
	
	var minCarat = parseFloat(range_shapes[index_shape]['min']['carat']);
	var maxCarat = parseFloat(range_shapes[index_shape]['max']['carat']);
	
	window.current_min_carat = minCarat;
	window.current_max_carat = maxCarat;
	var minPriceFormat = range_shapes[index_shape]['min']['price_format'];
	var maxPriceFormat = range_shapes[index_shape]['max']['price_format'];
	
}



//alert(cur_url);

function number_format (number, decimals, dec_point, thousands_sep) {
    // Formats a number with grouped thousands
    //
    // version: 906.1806
    // discuss at: http://phpjs.org/functions/number_format    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +     improved by: davook
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Jay Klehr
    // +     improved by: Brett Zamir (http://brett-zamir.me)    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'    // *     example 10: number_format('1.20', 2);
    // *     returns 10: '1.20'
    // *     example 11: number_format('1.20', 4);
    // *     returns 11: '1.2000'
    // *     example 12: number_format('1.2000', 3);    // *     returns 12: '1.200'
    var n = number, prec = decimals;
 
    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);        return (Math.round(n*k)/k).toString();
    };
 
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
 
    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
     var abs = toFixedFix(Math.abs(n), prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);    } else {
        s = s.replace('.', dec);
    }
 
    var decPos = s.indexOf(dec);    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';    }
    return s;
}

//init price and carat sliders.
function setPriceValue(value,type)
{
	if ('min' == type)
	{
		$('#sliderPrice').slider('values',0,value);
	}
	else if ('max' == type)
	{
		$('#sliderPrice').slider('values',1,value);
	}
}

function setCaratValue(value,type)
{
	if ('min' == type)
	{
		$('#sliderCarat').slider('values',0,value);
	}
	else if ('max' == type)
	{
		$('#sliderCarat').slider('values',1,value);
	}
}

function checkCaratValue(type)
{
	if ('min' == type)
	{
		var input = $('#dmd_carat_min');
		var sliderIndex = 0;
	}
	else if ('max' == type)
	{
		var input = $('#dmd_carat_max');
		var sliderIndex = 1;
	}
	
	var value = input.attr('value');

	if (!isNaN(parseFloat(value)))
	{
		if (parseFloat(value) > parseFloat(maxCarat))
		{
			value = maxCarat;
			//input.attr('value',value);
		}
		
		input.attr('value',value);
		var index_val = getCaratSliderIndex(value,minCarat,maxCarat);
		$('#sliderCarat').slider('values',sliderIndex,index_val);
		if (type == 'max')
		{
			window.current_max_carat = value;
		}
		else
		{
			window.current_min_carat = value;
		}
	}
}

function checkPriceValue(type){
	if ('max' == type)
	{
		var value = $('#dmd_proce_max').attr('value');
	}
	else if ('min' == type)
	{
		var value = $('#dmd_proce_min').attr('value');
	}
	
	if (value.length <= 1)
	{
		return;
	}
	
	/*
	var internalValue = value.replace(/,/,'');
	internalValue = internalValue.replace(/\$/,'');
	internalValue = parseFloat(internalValue);
	*/
	var internalValue=value.split("$").join("");
	internalValue=internalValue.split(",").join("");
	internalValue=parseFloat(internalValue);
	if (!isNaN(internalValue))
	{
		if (internalValue > maxPrice)
		{
			internalValue = maxPrice;
			value = '' + internalValue;
		}
		
		if ('min' == type)
		{
			window.last_price_input = 'min';
			setPriceValue(getPriceSliderIndex(internalValue,minPrice,maxPrice),'min');
			window.current_min_price = internalValue;
			
		}
		else if ('max' == type)
		{
			window.last_price_input = 'max';
			setPriceValue(getPriceSliderIndex(internalValue,minPrice,maxPrice),'max');
			window.current_max_price = internalValue;
		}
	}
	else
	{
		return;
	}
	
	if (value.indexOf('$') == -1)
	{
		value = number_format(value);
		if ('min' == type)
		{
			$('#dmd_proce_min').attr('value','$' + value);
		}
		else if ('max' == type)
		{
			$('#dmd_proce_max').attr('value','$' + value);
		}
	}
}

$(function()
{
	$('#dmd_proce_min').attr('value',minPriceFormat);
	$('#dmd_proce_max').attr('value',maxPriceFormat);
	
	$('#dmd_proce_min').bind('keypress',function(e)
	{
		if (null != timeout_price_min)
		{
			clearTimeout(timeout_price_min);
		}
	
		timeout_price_min = setTimeout('checkPriceValue("min")',1000);
	});
	
	$('#dmd_proce_max').bind('keypress',function(e)
	{
		if (null != timeout_price_max)
		{
			clearTimeout(timeout_price_max);
		}
	
		timeout_price_max = setTimeout('checkPriceValue("max")',1000);
	});

	$('#dmd_carat_max').bind('keypress',function()
	{
		if (null == timeout_carat_max)
		{
			clearTimeout(timeout_carat_max);
		}
		
		timeout_carat_max = setTimeout('checkCaratValue("max")',1000);
	});
	
	$('#dmd_carat_min').bind('keypress',function()
	{
		if (null == timeout_carat_min)
		{
			clearTimeout(timeout_carat_min);
		}
		
		timeout_carat_min = setTimeout('checkCaratValue("min")',1000);
	});
	
	var timeout_price_slider = null;
	// Slider
	$('#sliderPrice').slider({
		range: true,
		values:[1,150],
		min:1,
		max:150,
		step:1,
		slide:function(event,ui)
		{
			var min = calcPriceSlideValue(ui.values[0],minPrice,maxPrice);
			var max = calcPriceSlideValue(ui.values[1],minPrice,maxPrice);
			
			$('#dmd_proce_min').attr('value','$' + number_format(min));
			$('#dmd_proce_max').attr('value','$' + number_format(max));
			showUpdateResultsLogin();
			if (timeout_price_slider != null)
			{
				clearTimeout(timeout_price_slider);
			}
			
			if (!blocked)
			{
				timeout_price_slider = setTimeout(function()
				{
					change_filter = true;
					updateResults();
					
					
				},1500);
			}
		},
		
		change:function(event,ui)
		{
			if (window.last_price_input == '')
			{
				window.current_min_price = calcPriceSlideValue(ui.values[0],minPrice,maxPrice);
				window.current_max_price = calcPriceSlideValue(ui.values[1],minPrice,maxPrice);
			}
			else
			{
				window.last_price_input = '';
			}
			
			//Esto se ejecuta cuando el usuario ingresa un valor a mano en los inputs.
			$('#dmd_proce_min').attr('value','$' + number_format(window.current_min_price));
			$('#dmd_proce_max').attr('value','$' + number_format(window.current_max_price));
			showUpdateResultsLogin();
			if (timeout_price_slider != null)
			{
				clearTimeout(timeout_price_slider);
			}
			
			if (!blocked)
			{
				timeout_price_slider = setTimeout(function()
				{
					change_filter = true;
					updateResults();
					
				},1500);
			}
			
		}
	});
	
	var scrollHandles = $('#sliderPrice .ui-slider-handle');
	var scrollRange   = $('#sliderPrice .ui-slider-range')[0];
	var widgetContent = $('#sliderPrice .ui-widget-content')[0];
	
	var leftHandle    = scrollHandles[0];
	var rightHandle   = scrollHandles[1];
	
	leftHandle.id = 'leftHandleSliderPrice';
	rightHandle.id = 'rightHandleSliderPrice';
	
	scrollRange.id = 'mainScrollRangeSliderPrice';
	
	$('#sliderCarat').slider({
			range: true,
			values: [1,150],
			min:1,
			max:150,
			step:1,
			slide:function (event,ui)
			{
				//var valueMin = '' + calcCaratSlideValue(ui.values[0],minCarat,maxCarat);
				//var valueMax = '' + calcCaratSlideValue(ui.values[1],minCarat,maxCarat);
				
				var valueMin = calcCaratSlideValue(ui.values[0],parseFloat(minCarat),parseFloat(maxCarat));
				var valueMax = calcCaratSlideValue(ui.values[1],parseFloat(minCarat),parseFloat(maxCarat));
				
				valueMin += '';
				valueMax += '';
				
				if (valueMin.indexOf('.') != -1)
				{
					var tmp_split = valueMin.split('.')[1];
					if (tmp_split.length < 2)
					{
						valueMin += '0';
					}
					else
					{
						//tiene mas de dos decimales necesito cortar el numero.
						valueMin = valueMin.split('.')[0] + '.' + tmp_split.substr(0,2);
					}
				}
				else
				{
					valueMin += '.00';
				}
				
				if (valueMax.indexOf('.') != -1)
				{
					var tmp_split = valueMax.split('.')[1];
					if (tmp_split.length < 2)
					{
						valueMax += '0';
					}
					else
					{
						//tiene mas de dos decimales necesito cortar el numero.
						valueMax = valueMax.split('.')[0] + '.' + tmp_split.substr(0,2);
					}
				}
				else
				{
					valueMax += '.00';
				}
				
				window.current_min_carat = valueMin;
				window.current_max_carat = valueMax;
				
				$('#dmd_carat_min').attr('value', valueMin);
				$('#dmd_carat_max').attr('value',valueMax);
				
				showUpdateResultsLogin();
				
				if (timeout_carat != null)
				{
					clearTimeout(timeout_carat);
				}
			
				if (!blocked)
				{
					timeout_carat = setTimeout(function()
					{
						change_filter = true;
						updateResults();
						
					},1500);
				}
			},
			change: function (event,ui)
			{
				var valueMin = ui.values[0];
				var valueMax = ui.values[1];
				
				/*if (valueMin.indexOf('.') != -1)
				{
					var tmp_split = valueMin.split('.')[1];
					if (tmp_split.length < 2)
					{
						valueMin += '0';
					}
				}
				else
				{
					valueMin += '.00';
				}
				
				if (valueMax.indexOf('.') != -1)
				{
					var tmp_split = valueMax.split('.')[1];
					if (tmp_split.length < 2)
					{
						valueMax += '0';
					}
				}
				else
				{
					valueMax += '.00';
				}*/
				
				//$('#dmd_carat_min').attr('value', number_format(valueMin));
				//$('#dmd_carat_max').attr('value',number_format(valueMax));
				
				showUpdateResultsLogin();
				
				if (timeout_carat != null)
				{
					clearTimeout(timeout_carat);
				}
			
				if (!blocked)
				{
					timeout_carat = setTimeout(function()
					{
						change_filter = true;
						updateResults();
						
					},1500);
				}
			}
		});
		
	scrollHandles = $('#sliderCarat .ui-slider-handle');
	scrollRange   = $('#sliderCarat .ui-slider-range')[0];
	widgetContent = $('#sliderCarat .ui-widget-content')[0];
	
	leftHandle    = scrollHandles[0];
	rightHandle   = scrollHandles[1];
	
	leftHandle.id = 'leftHandleSliderCarat';
	rightHandle.id = 'rightHandleSliderCarat';
	
	scrollRange.id = 'mainScrollRangeSliderCarat';
	
	minCarat = '' + minCarat;
	maxCarat = '' + maxCarat;
	
	if (minCarat.indexOf('.') != -1)
	{
		var tmp_split = minCarat.split('.')[1];
		if (tmp_split.length < 2)
		{
			minCarat += '0';
		}
	}
	else
	{
		minCarat += '.00';
	}
	
	if (maxCarat.indexOf('.') != -1)
	{
		var tmp_split = maxCarat.split('.')[1];
		if (tmp_split.length < 2)
		{
			maxCarat += '0';
		}
	}
	else
	{
		maxCarat += '.00';
	}
	
	$('#dmd_carat_min').attr('value', minCarat);
	$('#dmd_carat_max').attr('value',maxCarat);
});


function checkURLValues(){
	var cur_url=window.location.href;
	
	if(cur_url.indexOf("minPrice=")!=-1){
		//SHAPE
		temp=cur_url.split("shape=")[1];
		temp_value=temp.split("&")[0];
		current_shape=temp_value;
		if(current_shape=="round")
			current_shape="Round";
		//alert("current_shape="+current_shape);
		selectShape2(current_shape);
		//MIN PRICE
		temp=cur_url.split("minPrice=")[1];
		temp_value=temp.split("&")[0];
		window.current_min_price=temp_value;
		//MAX PRICE
		temp=cur_url.split("maxPrice=")[1];
		temp_value=temp.split("&")[0];
		window.current_max_price=temp_value;
		//MIN CARAT
		temp=cur_url.split("minCarat=")[1];
		temp_value=temp.split("&")[0];
		window.current_min_carat=parseFloat(temp_value);
		//MAX CARAT
		temp=cur_url.split("maxCarat=")[1];
		temp_value=temp.split("&")[0];
		window.current_max_carat=parseFloat(temp_value);
		//MIN COLOR
		temp=cur_url.split("minColor=")[1];
		temp_value=temp.split("&")[0];
		handleLeftColorNum=parseFloat(temp_value);
		//MAX COLOR
		temp=cur_url.split("maxColor=")[1];
		temp_value=temp.split("&")[0];
		handleRightColorNum=parseFloat(temp_value);
		//MIN CUT
		temp=cur_url.split("minCut=")[1];
		temp_value=temp.split("&")[0];
		handleLeftcutNum=parseFloat(temp_value);
		//MAX CUT
		temp=cur_url.split("maxCut=")[1];
		temp_value=temp.split("&")[0];
		handleRightcutNum=parseFloat(temp_value);
		//MIN CLARITY
		temp=cur_url.split("minClarity=")[1];
		temp_value=temp.split("&")[0];
		handleLeftclarityNum=parseFloat(temp_value);
		//MAX CLARITY
		temp=cur_url.split("maxClarity=")[1];
		temp_value=temp.split("&")[0];
		handleRightclarityNum=parseFloat(temp_value);

		
		
		moveClarity(handleLeftclarityNum,'left');
		moveClarity(handleRightclarityNum,'right');
		movecut(handleLeftcutNum,'left');
		movecut(handleRightcutNum,'right');
		moveColor(handleLeftColorNum,'left');
		moveColor(handleRightColorNum,'right');
		$('#dmd_carat_min').attr('value', window.current_min_carat);
		$('#dmd_carat_max').attr('value', window.current_max_carat);
		$('#dmd_proce_min').attr('value','$' + window.current_min_price);
		$('#dmd_proce_max').attr('value','$' + window.current_max_price);
		checkPriceValue('min');
		checkPriceValue('max');
		checkCaratValue('min');
		checkCaratValue('max');

	}
	
	
	/*var cur_url=window.location.href;
	if(cur_url.indexOf("min_price=")!=-1){
		
		var temp=cur_url.split("min_price=")[1];
		var min_value=temp.split("&")[0];
		window.current_min_price=min_value;
		$('#dmd_proce_min').attr('value','$' + min_value);
		
		temp=cur_url.split("max_price=")[1];
		var max_value=temp.split("&")[0];
		window.current_max_price=max_value;
		$('#dmd_proce_max').attr('value','$' + max_value);
		
		checkPriceValue('min');
		checkPriceValue('max');
		
		temp=cur_url.split("current_min_carat=")[1];
		var min_carat=temp.split("&")[0];
		window.current_min_carat=min_carat;
		$('#dmd_carat_min').attr('value', min_carat);
		
		temp=cur_url.split("current_max_carat=")[1];
		var max_carat=temp.split("&")[0];
		window.current_max_carat=max_carat;
		$('#dmd_carat_max').attr('value', max_carat);
		
		checkCaratValue('min');
		checkCaratValue('max');
		//alert(window.current_min_price);
	}else{
		//alert('case false');
	}
	*/
}
