
var _GLB = {}

window.addEvent('domready', function() {


    // price input to selectbox
    if (document.id('ctrl_filter_range_price_0') && document.id('ctrl_filter_range_price_1')) {
        input_range_price_to_selectbox('ctrl_filter_range_price_0', 'ctrl_filter_range_price_1');
    }


    // remove onchange attribute

    if (document.id('ctrl_filter_field_area')) {
        document.id('ctrl_filter_field_area').removeProperty('onchange');
    }

    if (document.id('ctrl_filter_field_selling_property_type')) {
        document.id('ctrl_filter_field_selling_property_type').removeProperty('onchange');
    }


    if (document.id('ctrl_filter_sort')) {
        document.id('ctrl_filter_sort').removeProperty('onchange');
    }

    if (document.id('ctrl_filter_range_price_submit')) {
        document.id('ctrl_filter_range_price_submit').setStyle('display', 'none');
    }

    if (document.id('ctrl_filter_range_bedrooms_submit')) {
        document.id('ctrl_filter_range_bedrooms_submit').setStyle('display', 'none');
    }

    if (document.id('ctrl_filter_search_submit')) {
        document.id('ctrl_filter_search_submit').setStyle('display', 'none');
    }

    // change bedrooms to selectbox

    if (document.id('ctrl_filter_range_bedrooms_0') && document.id('ctrl_filter_range_bedrooms_1')) {

        document.id('ctrl_filter_range_bedrooms_0').setStyle('display', 'none');
        document.id('ctrl_filter_range_bedrooms_1').setStyle('display', 'none');
        document.id('ctrl_filter_range_bedrooms_1').value = 10;

        var options = [0,1,2,3,4,5,6];

        var s1 = new Element('select', {'id': 'select_filter_range_bedrooms'});

        for (var j=0; j<options.length; j++) {

            var t = options[j];

            var op = new Element('option', { 'value': options[j], 'text': t});
            op.inject(s1);
        }

        var selectBedrooms = new Element('option', {'value': '', 'text': 'Select Bedrooms'});
        selectBedrooms.inject(s1, 'top');

        if (document.id('ctrl_filter_range_bedrooms_0').value) {
            s1.value = document.id('ctrl_filter_range_bedrooms_0').value;
        } else {
            s1.value = '';
        }

        s1.addEvent('change', function() {
            document.id('ctrl_filter_range_bedrooms_0').value = document.id('select_filter_range_bedrooms').value
        })

        s1.inject(document.id('ctrl_filter_range_bedrooms_0'), 'before');
    }


    if (typeof $$('div.sort_group')[0] == 'undefined') {
        return;
    }


    // add global submit button

    var btDiv = new Element('div', {'id': 'bt_global_container', 'class': 'submit_container' });


    var bt = new Element('input', {
        'type':'button',
        'id'  : 'bt_global_submit',
        'class': 'submit',
        'value': 'Go'
    })

    // submit handler for button

    bt.addEvent('click', function() {

        var url = _GLB.action;

        // adding price

        if (document.id('ctrl_filter_range_price_0').value.length && document.id('ctrl_filter_range_price_1').value.length) {
            url += '/price/'+document.id('ctrl_filter_range_price_0').value+'__'+document.id('ctrl_filter_range_price_1').value;
        }

        if (document.id('ctrl_filter_search').value.length) {
            url += '/search/'+document.id('ctrl_filter_search').value;
        }

        if (document.id('ctrl_filter_range_bedrooms_0').value.length && document.id('ctrl_filter_range_bedrooms_1').value.length) {
            url += '/bedrooms/'+document.id('ctrl_filter_range_bedrooms_0').value+'__'+document.id('ctrl_filter_range_bedrooms_1').value;
        }

        var v = valueToObject(document.id('ctrl_filter_field_selling_property_type').value);

        if (v != false) {
            if (v['selling_property_type']) {
                url += '/selling_property_type/'+v['selling_property_type'];
            }
        }

        v = valueToObject(document.id('ctrl_filter_field_area').value);

        if (v != false) {
            if (v['area']) {
                url += '/area/'+v['area'];
            }
        }

        v = valueToObject(document.id('ctrl_filter_sort').value);

        if (v != false) {

            if (v['orderby']) {
                url += '/orderby/'+v['orderby'];
            }

            if (v['sort']) {
                url += '/sort/'+v['sort'];
            }
        }

        url += '.html';

        window.location.href = url;

    }); // end submit handler


    bt.inject(btDiv);

    btDiv.inject($$('div.sort_group')[0], 'after');

    // calculate base for operations

    var base = $$('base');

    if (typeof base[0] != 'undefined') {
        base = base[0].href;
    } else {
        base = '';
    }

    _GLB.action = base+'properties-for-sale';

});

function valueToObject(value) {
    value = value.replace(_GLB.action, '');
    value = value.replace('.html', '');

    if (value.length == 0) {
        return false;
    }

    var parts = value.split('/');

    parts.shift();

    var l = parts.length;

    if (l%2 != 0) {
        return false;
    }

    var objRet = {}

    for (i=0; i<l; i+=2) {

        var ke = parts[i];
        var va = parts[i+1];

        objRet[ke] = va;
    }

    return objRet;
}

function cleanUpValue(value) {

    value = value.replace(_GLB.action, '');
    value = value.replace('.html', '');

    if (value.length) {
        return value;
    } else {
        return false;
    }
}


function input_range_price_to_selectbox(i1, i2) {
	var options = [100000, 125000, 150000, 175000, 200000, 250000, 300000, 350000, 400000, 450000, 500000, 600000, 700000, 800000, 900000, 1000000, 1250000, 1500000, 2000000, 2500000, 3000000]
	var minValue = 1;
	var maxValue = 9999999;

	var s1 = new Element('select', {'id': 'select_filter_range_price_0'});
	var span = new Element('div', {'id': 'span_select_filter', 'text':'to', 'style': 'font-weight:bold; clear:both;'});

    var s2 = new Element('select', {'id': 'select_filter_range_price_1'});

	for (var j=0; j<options.length; j++) {

		var t = '£'+number_format(options[j], 0, ',', ',');

		var op = new Element('option', { 'value': options[j], 'text': t});
		op.inject(s1);
		var op2 = new Element('option', { 'value': options[j], 'text': t});
		op2.inject(s2);
	}

	var cheapest = new Element('option', {'value': minValue, 'text': 'From cheapest'});
	var nopricelimit = new Element('option', {'value': maxValue, 'text': 'No price limit'});

	cheapest.inject(s1, 'top');
	nopricelimit.inject(s2, 'top');

	if (document.id(i1).value) {
		s1.value = document.id(i1).value;
	} else {
		s1.value = minValue;
	}

	if (document.id(i2).value) {
		s2.value = document.id(i2).value;
	} else {
		s2.value = maxValue;
	}

    s1.addEvent('change', function() {
        document.id(i1).value = document.id('select_filter_range_price_0').value;
    })

    s2.addEvent('change', function() {
        document.id(i2).value = document.id('select_filter_range_price_1').value;
    })




	s1.inject(document.id(i1), 'before');
	s2.inject(document.id(i2), 'before');
    span.inject(s2, 'before');

	//document.id('ctrl_filter_range_price_submit').addEvent('click', function (evt) {
	//	var e = new Event(evt);
	//	document.id(i1).value = document.id('select_filter_range_price_0').value;
	//	document.id(i2).value = document.id('select_filter_range_price_1').value;
	//
	//})
	document.id(i1).setStyle('display', 'none');
	document.id(i2).setStyle('display', 'none');
}





function number_format(number, decimals, dec_point, thousands_sep) {
	// http://kevin.vanzonneveld.net
	// +   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)
	// +   improved by: Theriault
	// +      input by: Amirouche
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// *     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'
	// *    example 13: number_format('1 000,50', 2, '.', ' ');
	// *    returns 13: '100 050.00'
	number = (number+'').replace(',', '').replace(' ', '');
	var n = !isFinite(+number) ? 0 : +number,
		prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
		sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
		dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
		s = '',
		toFixedFix = function (n, prec) {
			var k = Math.pow(10, prec);
			return '' + Math.round(n * k) / k;
		};
	// Fix for IE parseFloat(0.55).toFixed(0) = 0;
	s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
	if (s[0].length > 3) {
		s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
	}
	if ((s[1] || '').length < prec) {
		s[1] = s[1] || '';
		s[1] += new Array(prec - s[1].length + 1).join('0');
	}
	return s.join(dec);
}

