var objSlider;
var objStoredMin;
var objStoredMax;

var DEFAULT_BUY_MIN=50;
var DEFAULT_BUY_MAX=5000000;
var DEFAULT_BUY_RANGEL=50000;
var DEFAULT_BUY_RANGEH=5010000; //Max val for slider is maxval+step, so it shows as '£5,000,000+' for no upper limit
var DEFAULT_BUY_STEP=10000;

var DEFAULT_LET_MIN=500;
var DEFAULT_LET_MAX=1000;
var DEFAULT_LET_RANGEL=50;
var DEFAULT_LET_RANGEH=7000;
var DEFAULT_LET_STEP=25;

function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
function trim(str) {
	return ltrim(rtrim(str));
}
function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function CheckStoredPriceRange()
{
    nSearchType=document.getElementById("search_type_stored").value;
    if( (nSearchType<1) || (nSearchType>2) ) return;

    if(nSearchType==1) //buy
    {
        nMin=DEFAULT_BUY_MIN; nMax=DEFAULT_BUY_MAX;
        nMinRange=DEFAULT_BUY_RANGEL;nMaxRange=DEFAULT_BUY_RANGEH;
    }
    if(nSearchType==2) //let
    {
        nMin=DEFAULT_LET_MIN;nMax=DEFAULT_LET_MAX;
        nMinRange=DEFAULT_LET_RANGEL;nMaxRange=DEFAULT_LET_RANGEH;
    }


    objStoredMin=document.getElementById("min_price_stored");
    if(objStoredMin != null) {nMin=rtrim(objStoredMin.value);objStoredMin.value = -1;}
    
    objStoredMax=document.getElementById("max_price_stored");
    if(objStoredMax != null) {nMax=rtrim(objStoredMax.value);objStoredMax.value = -1;}
    
    if( (nMin>=0) && (nMax>=0) ) 
    {
        objSlider.slider({values: [nMin,nMax]}); 
        document.getElementById("min_price").value=nMin;
        document.getElementById("max_price").value=nMax;
    }
    FormatPrice();
}


function InitSliderBuy()
{
    objSlider.slider("option","min",DEFAULT_BUY_RANGEL);
    objSlider.slider("option","max",DEFAULT_BUY_RANGEH);
    objSlider.slider("option","step",DEFAULT_BUY_STEP);
    objSlider.slider({values: [DEFAULT_BUY_MIN,DEFAULT_BUY_MAX]});

    var values=objSlider.slider("option","values"); 
    strMin=values[0];strMax=values[1];
    document.getElementById("min_price").value=strMin;
    document.getElementById("max_price").value=strMax;
    FormatPrice();
}


function InitSliderLet()
{           
    objSlider.slider("option","min",DEFAULT_LET_RANGEL); 
    objSlider.slider("option","max",DEFAULT_LET_RANGEH);
    objSlider.slider("option","step",DEFAULT_LET_STEP); 
    objSlider.slider({values: [DEFAULT_LET_MIN,DEFAULT_LET_MAX]});

    var values=objSlider.slider("option","values"); 
    strMin=values[0];strMax=values[1];
    document.getElementById("min_price").value=strMin;
    document.getElementById("max_price").value=strMax;
    FormatPrice();
}


function FormatNumber(strSource)
{
    strSource += '';
    x = strSource.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1))
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    
    return x1 + x2;
}


function FormatPrice()
{
    strLower=document.getElementById("min_price").value;
    strUpper=document.getElementById("max_price").value;
    strMin=FormatNumber(strLower);
    nUnlimPrice=DEFAULT_BUY_RANGEH;
    if(strUpper == nUnlimPrice)
    {
        strMax=FormatNumber(DEFAULT_BUY_RANGEH - DEFAULT_BUY_STEP) + "+";
    }
    else 
        strMax=FormatNumber(strUpper);
    strPrice="\xA3" + strMin + "-" + "\xA3" + strMax;
	
	nType=document.getElementById("search_type_stored").value;
	if(nType=="2") {strPrice = strPrice + " pcm";}
    $( "#amount" ).val( strPrice );
}


$(function() 
	{
	objSlider = $( "#slider-range" ).slider({
		step:DEFAULT_BUY_STEP,
		range: true,
		min: DEFAULT_BUY_RANGEL,
		max: DEFAULT_BUY_RANGEH,
		values: [ DEFAULT_BUY_MIN, DEFAULT_BUY_MAX ],
		slide: function( event, ui ) 
					{
						strMin=ui.values[0];strMax=ui.values[1];
						document.getElementById("min_price").value=strMin;
						document.getElementById("max_price").value=strMax;     
                                                if(objStoredMin != null) {objStoredMin=document.getElementById("min_price_stored");objStoredMin.value= -1;}
                                                if(objStoredMax != null) {objStoredMax=document.getElementById("max_price_stored");objStoredMax.value= -1;}

						FormatPrice();
					}                        
		});
	
	//Initialise
	var sPath = window.location.pathname;
	var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
	if(sPage=="let.php")
	{
		document.getElementById("search_type_stored").value=2;
		InitSliderLet();
	}
	else
		InitSliderBuy();
	
	FormatPrice();
});


function OnChangeSearch(nIndex)
{
    objTemp=document.getElementById("min_price_stored");objTemp.value= -1;
    objTemp=document.getElementById("max_price_stored");objTemp.value= -1;
    ChangeSearch(nIndex);
}


function ChangeSearch(nIndex)
{        
    switch(nIndex)
    {           //change over to buy
        case 1:document.getElementById("search_type_stored").value=1;
                InitSliderBuy();
                FormatPrice();					
                break;
                //change over to let
        case 2:document.getElementById("search_type_stored").value=2;
                InitSliderLet();
                FormatPrice();					
                break;
    }
}

function InitForm(nSearchType)
{
    nSearchType=nSearchType + 0;
    
    if( (nSearchType<1) || (nSearchType>2) ) return;
    objMin=document.getElementById("min_price_stored");
    objMax=document.getElementById("max_price_stored");
    
    switch(nSearchType)
    {           
        case 1:	//change over to buy
            nSliderMin=DEFAULT_BUY_RANGEL;nSliderMax=DEFAULT_BUY_RANGEH;nSliderStep=DEFAULT_BUY_STEP;
            if(objMin) nMinPrice=objMin.value; else nMinPrice=DEFAULT_BUY_MIN;
            if(objMax) nMaxPrice=objMax.value; else nMaxPrice=DEFAULT_BUY_MAX;
            break;
        case 2: //change over to let
            nSliderMin=DEFAULT_LET_RANGEL; nSliderMax=DEFAULT_LET_RANGEH; nSliderStep=DEFAULT_LET_STEP;
            if(objMin) nMinPrice=objMin.value; else nMinPrice=DEFAULT_LET_MIN;
            if(objMax) nMaxPrice=objMax.value; else nMaxPrice=DEFAULT_LET_MAX;
            break;
    }

    objSlider.slider("option","min",nSliderMin);  
    objSlider.slider("option","max",nSliderMax); 
    objSlider.slider("option","step",nSliderStep); 
    if(nMinPrice < nSliderMin) nMinPrice=nSliderMin;
    if(nMaxPrice > nSliderMax) nMaxPrice=nSliderMax;
    objSlider.slider({values: [nMinPrice,nMaxPrice]});    
    
    //store values to be used by price label
    document.getElementById("min_price").value=nMinPrice;
    document.getElementById("max_price").value=nMaxPrice;
    //trash stored values, 
    if(objMin) objMin.value= -1;
    if(objMax) objMax.value= -1;
    
    //Init price label
    FormatInitPrice(nSearchType);
}


function FormatInitPrice(nType)
{
    strLower=document.getElementById("min_price").value;
    strUpper=document.getElementById("max_price").value; strUpper=rtrim(strUpper);
    strMin=FormatNumber(strLower); strMin=rtrim(strMin);
    if(strUpper == DEFAULT_BUY_RANGEH)
        {nTemp=DEFAULT_BUY_RANGEH - DEFAULT_BUY_STEP; strMax=FormatNumber(nTemp) + "+"; }
    else 
        strMax=FormatNumber(strUpper);
    strPrice="\xA3" + strMin + "-" + "\xA3" + strMax;
	
    if(nType=="2") {strPrice = strPrice + " pcm";}
    $( "#amount" ).val( strPrice );
}

