/* uidxFilters - 
*   various value filters and string manipulators 
*   For compatibility with mootools and other libraries
*   the file is wrapped in jQuery to assign $ to jQuery
*/

var uidxDebug = {
    var_dump : function(arr,level) {
        // Original from Binny V A(binnyva (at) hotmail (dot) com 
        var dumped_text = "";
        if(!level) level = 0;
        var level_padding = "";
        for(var j=0;j<level+1;j++) level_padding += "    ";

        if(typeof(arr) == 'object') { //Array/Hashes/Objects
            for(var item in arr) {
                var value = arr[item];
             
                if(typeof(value) == 'object') { //If it is an array,
                    dumped_text += level_padding + "'" + item + "' ...\n";
                    dumped_text += dump(value,level+1);
                } else {
                    dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
                }
            }
        } else { //Stings/Chars/Numbers etc.
            dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
        }
        return dumped_text;
    } 
}

var uidxFilters ={
    filter_to_currency: function (amount) {
        var i = parseFloat(amount);
        if(isNaN(i)) { i = 0.00; }
        var minus = '';
        if(i < 0) { minus = '-'; }
        i = Math.abs(i);
        i = parseInt((i + .005) * 100);
        i = i / 100;
        s = new String(i);
        if(s.indexOf('.') < 0) { s += '.00'; }
        if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
        s = minus + s;
        return s;
    },

    filter_to_numeric: function(val) {
        var i;
        ok='1234567890.';
        numstr='';
        for (i=0; i < val.length; i++) {
                c= val.charAt(i)
                if (ok.indexOf(c) != -1) numstr += c
        }
        if (numstr)     return numstr
        else return 0
    }
}
/* End uidxFilters */


/* SPEEDTRAP
*   Prevent multiple calls.  Primarily to stop nervous clickers
*   toggling things on and off via ajax for no good reason.
*/

var uidxSpeedTrap={
    SPEEDTRAP: new Array(),

    slowdown: function(name) {
        setTimeout('uidxSpeedTrap.remove_slowdown("'+name+'")',2500);
        if (!uidxSpeedTrap.SPEEDTRAP[name]) { uidxSpeedTrap.SPEEDTRAP[name] = 0; }
            uidxSpeedTrap.SPEEDTRAP[name]= uidxSpeedTrap.SPEEDTRAP[name]+1;
    },

    remove_slowdown: function(name) {
        uidxSpeedTrap.SPEEDTRAP[name]=uidxSpeedTrap.SPEEDTRAP[name]-1;

    },
    check_speed: function(name){
        if (uidxSpeedTrap.SPEEDTRAP[name] > 0) {
                uidxSpeedTrap.slowdown(name);
                return true;
        }
        return false;
    }
}
/* End SPEEDTRAP */


/* LEAD-AJAX 
*/
var uidxLeadAjax={
    toggle_listing_save: function(identifierString) {
        var identifier = identifierString.split(" ")[0];
        if (uidxSpeedTrap.check_speed('save_listing')==true) { return false; }
        jQuery.ajax({ type: "POST",
            url: '/uidx/listings2/ajax/save-listing/',
            data: "identifier=" + identifier ,  //random number to keep page from caching
            dataType: "json",
            error:  function(msg) { alert(msg); },
            success: function(json){ // If we get nothing valid, do nothing.  Otherwise load from tobj
                if (json.saved){
                    jQuery(".uidx_saved_"+identifier).show();
                    jQuery(".uidx_unsaved_"+identifier).hide();
                }
                else {
                    jQuery(".uidx_saved_"+identifier).hide();
                    jQuery(".uidx_unsaved_"+identifier).show();
                }
            }
    
        });
        uidxSpeedTrap.slowdown('save_listing');
    }
}
/* end LEAD-AJAX */

/* SEARCHFORM 
*/
var uidxSearchForm={
    property_type_filter: function(form_id) {
        //depends on css classes given fields using ltypeVALUE format
        jQuery('#'+form_id +' .uidx_ptf').attr("disabled",true);
        jQuery('#'+form_id +' .uidx_ptf_hide').hide();
        //get property type_ids selected.  Look specificall for type_id only
        var selected=[];
        jQuery('#'+form_id +' :input:checkbox:checked[name=type_id]').each(function() {
            var val=jQuery(this).val();
            selected[selected.length]=val;        
        });
        // If no checkboxes, try normal select/input
        if (!selected) {
            selected=jQuery('#'+form_id +' :input[name=type_id]').val();
        }
        if (typeof(selected) == 'string') { selected=[selected] }
        for (var i=0; i < selected.length; i++) {
            jQuery('#'+form_id +' .uidx_ptf_'+selected[i]).attr("disabled",false); 
            //alert('#'+form_id +' .uidx_ptf_'+selected[i]+'.uidx_ptf_hide');
            jQuery('#'+form_id +' .uidx_ptf_'+selected[i]+'.uidx_ptf_hide').show();
        }
    },

    property_type_filter_bind: function(form_id) {
        jQuery('#'+form_id +' :input[name=type_id]').click(function() {
            uidxSearchForm.property_type_filter(form_id);
        });
        // Once at bind time to initialize 
        uidxSearchForm.property_type_filter(form_id);
    }
}
/* end SEARCHFORM */


