// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults


/*----------------------------------------------------------------------------
 * AJAX select box helpers
 *---------------------------------------------------------------------------*/

function update_select_options( target, opts_array ) {
    if( $(target).type.match("select" ) ){ // Confirm the target is a select box
        clear_select_box(target)
        // Populate the new options
        for(i=0;i < opts_array.length;i++){
            o = document.createElement( "option" );
            o.appendChild( document.createTextNode( opts_array[i][0] ) );
            o.setAttribute( "value", opts_array[i][1] );
            // set title attribute if we have it
            if(typeof(opts_array[i][2])!='undefined'){ o.setAttribute( "title", opts_array[i][2] ) }
            target.appendChild(o);
        }
    }
}


function clear_select_box(target) {
    // clear the current entries
    target = $(target);
    len = target.childNodes.length;
    for( var i=0;i < len;i++){target.removeChild(target.firstChild);}
}


/*----------------------------------------------------------------------------
 * Textfield Element extensions
 *---------------------------------------------------------------------------*/

function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}


/*----------------------------------------------------------------------------
 * Prototype Element extensions
 *---------------------------------------------------------------------------*/

Element.toggleValue = function(el, content1, content2) {
        el = $(el);
        if(el.value == content1)
            el.value = content2;
        else
            el.value = content1;
    }
    
    

/*----------------------------------------------------------------------------
 * Prototype Form extensions
 *---------------------------------------------------------------------------*/

Form.insertAtCursor = function(field, string) {
        // IE support
        if (document.selection) {
            field.focus();
            sel = document.selection.createRange();
            sel.text = string;
        }
        // MOZILLA / NETSCAPE support
        else if(field.selectionStart || field.selectionStart == '0') {
            var startPos = field.selectionStart;
            var endPos = field.selectionEnd;
            field.value = field.value.substring(0, startPos)
                + string
                + field.value.substring(endPos, field.value.length);
        } else {
            field.value += string;
        }
    }


/*----------------------------------------------------------------------------
 * Tree control functions
 *---------------------------------------------------------------------------*/

var Tree = {
    tree_id: 'area_tree',
    init: function() {
            checkboxes = $A($(Tree.tree_id).getElementsByTagName('input'));
            checkboxes[0].form.reset();
            checkboxes.each( function(c) { c.disabled = false; } )
            checkboxes.each( function(c) {
                if(c.checked) { Tree.toggleChildCheckboxes(c); }
            });
        },
    toggleChildCheckboxes: function(checkbox) {
            checkboxes = checkbox.parentNode.parentNode.parentNode.parentNode.getElementsByTagName('input');
            $A(checkboxes).each( function(c) {
                if(c != checkbox) {
                    c.checked = c.disabled = checkbox.checked;
                }
            });
        }
    }
    
    
/*----------------------------------------------------------------------------
 * Sidebar functions
 *---------------------------------------------------------------------------*/

var Sidebar = {
    activateTab: function(el, content_id){
            el.blur();
            var ul = el.parentNode.parentNode
            tabs = ul.getElementsByTagName('li');
            for(var i=0;i<tabs.length;i++){
                var tab = tabs[i].firstChild
                if(tab != el) { 
                    Element.removeClassName(tab, 'current')
                } else {
                    Element.addClassName(tab, 'current')
                }
            }
            var content = ul.parentNode.getElementsByTagName('div');
            for(var i=0;i<content.length;i++){
                if(Element.hasClassName(content[i], 'content')) {
                    if(content[i].id == content_id) { 
                        Element.show(content[i])
                    } else {
                        Element.hide(content[i])
                    }
                }
            }
        },
        
    expandHeading: function(el, content_id){
            el.blur();
            if(Element.visible(content_id)){
                Effect.toggle(content_id, 'blind');
                Element.removeClassName(el.parentNode, 'expanded');
            } else {
                Effect.toggle(content_id, 'blind');
                Element.addClassName(el.parentNode, 'expanded');
            }
        }
    }


/*----------------------------------------------------------------------------
 * Sidebar search functions
 *---------------------------------------------------------------------------*/

var Search = {
	init: function() {
		if($('select_sales_or_lettings')) {
			new Form.Element.EventObserver('select_sales_or_lettings', function() { Search.visibility(); })
			Search.visibility();
		}
		if($('search_sales')) { Element.observe('search_sales', 'submit', Search.checkForm) }
		if($('search_lettings')) { Element.observe('search_lettings', 'submit', Search.checkForm) }
	},

	visibility: function() {
		if($('select_sales_or_lettings').options[$('select_sales_or_lettings').selectedIndex].value == 'sales') { 
			Element.show('search_sales');
			Element.hide('search_lettings');
		} else {
			Element.show('search_lettings');
			Element.hide('search_sales');
		}
	},

	checkForm: function(e) {
		var form = Event.element(e);
		min_price = parseInt(form['search_price_min'].options[form['search_price_min'].selectedIndex].value);
		max_price = parseInt(form['search_price_max'].options[form['search_price_max'].selectedIndex].value);
		if(min_price > max_price){
			alert('Please select a minimum price lower than your maximum.');
		}
	}	
}

