function LC(){}

LC.maps = Object();

LC.attr_or = function ($jq_obj, $attr_key, $alt) {

    if ($jq_obj.attr($attr_key)) {
        return $jq_obj.attr($attr_key);
    }
    else {
        return $alt;
    }
};

LC.init_autocomplete = function($this_autocomplete) {

    if( ! $this_autocomplete.attr('data_min_length'))
    {
        $this_autocomplete.attr('data_min_length', 2);
    }

    if( $this_autocomplete.attr('data_select_first') == 'T')
    {
        $this_autocomplete.attr('data_select_first', true);
    }
    else
    {
        $this_autocomplete.attr('data_select_first', false);
    }

    $this_autocomplete.autocomplete({
        source:
            function($term, $callback) {

                $.getJSON($this_autocomplete.attr('data_source_url') + "/starts/" + $term.term,
                    function($data) {
                        if ($this_autocomplete.attr('readonly'))
                        {
                            if ($data.length > 0
                                  || $this_autocomplete.val().length <= $this_autocomplete.autocomplete("option", "minLength"))
                            {
                                $this_autocomplete.attr('readonly', false);
                            }
                        }

                        if ($data.length > 0 || $this_autocomplete.attr('data_requires_selection') != 'T')
                        {
                            $this_autocomplete.data('json_response', $data);
                            $callback($data);
                        }
                        else
                        {
                            if ($data.length == 0 &&
                                    $this_autocomplete.val().length > $this_autocomplete.autocomplete("option", "minLength"))
                            {
                                $search_term_trimmed = $this_autocomplete.val().substring(0, $this_autocomplete.val().length - 1);
                                $this_autocomplete.val($search_term_trimmed);
                                $this_autocomplete.autocomplete("search");
                                $this_autocomplete.attr('readonly', true);
                            }
                        }

                    }
                );
            },

        minLength: $this_autocomplete.attr('data_min_length'),

        select:
            function($event, $ui) {

                $this_autocomplete.data("autocomplete").selectedItem = $ui.item;
                LC.autocomplete_select_submit($this_autocomplete);
            },

        selectFirst: $this_autocomplete.attr('data_select_first'),
        
        close:
            function($event) {

                var $autocomplete_data = $this_autocomplete.data("autocomplete");
                $autocomplete_data.is_autocomplete_open = false;

                if ($this_autocomplete.get(0) != document.activeElement
                        && $this_autocomplete.attr('data_requires_selection') == 'T'
                        && $this_autocomplete.data('real_value') == null)
                {
                    $this_autocomplete.val($this_autocomplete.attr('data_grayed_out_text'));
                    $this_autocomplete.addClass('grayed_out');
                }
            },

        open:
            function() {

                var $autocomplete_data = $this_autocomplete.data("autocomplete");
                $autocomplete_data.is_autocomplete_open = true;

                if ($autocomplete_data.options.selectFirst == true) {
                    $autocomplete_data.menu.activate($.Event({ type: "mouseenter" }), $autocomplete_data.menu.element.children().first());
                }
            }

    });

    $this_autocomplete.bind({

        focus:
            function() {

                if ($this_autocomplete.hasClass('grayed_out'))
                {
                    $this_autocomplete.val('');
                    $this_autocomplete.removeClass('grayed_out');
                }
            },

        blur:
            function() {

                if (($this_autocomplete.data("autocomplete").is_autocomplete_open))
                {
                    return true;
                }
                else
                {
                    if ($this_autocomplete.val().length == 0 ||
                            ($this_autocomplete.attr('data_requires_selection') == 'T' && $this_autocomplete.data('real_value') == null))
                    {
                        $this_autocomplete.val($this_autocomplete.attr('data_grayed_out_text'));
                        $this_autocomplete.addClass('grayed_out');
                    }
                }
            },

        keyup:
            function($e) {

                if($this_autocomplete.attr('data_submit_on_enter_key') == 'T'
                        && LC.pressed_enter($e)
                            && ! $this_autocomplete.data("autocomplete").selectedItem){
                    
                   LC.autocomplete_select_submit($this_autocomplete);
                }
            }

    });

    $($this_autocomplete).siblings('.autocomplete_clear_button').bind({
        click:
            function() {
                //var $autocomplete_jq = $(this).siblings('.autocomplete');
                $this_autocomplete.val($this_autocomplete.attr('data_grayed_out_text'));
                $this_autocomplete.addClass('grayed_out');
                $this_autocomplete.data('real_value', null);
                $(this).css('visibility', 'hidden');
            }
    });

    $($this_autocomplete).siblings('.autocomplete_search_button').bind({
        click:
            function() {

                LC.autocomplete_select_submit($this_autocomplete);

            }
    });

    if (! LC.empty($this_autocomplete.attr('data_init_real_value')))
    {
        $this_autocomplete.removeClass('grayed_out');
        $this_autocomplete.data('real_value', $this_autocomplete.attr('data_init_real_value'));
        $this_autocomplete.siblings('.autocomplete_clear_button').css('visibility', 'visible');
    }
};

LC.autocomplete_select_submit = function($this_autocomplete){

    var $selected_item = $this_autocomplete.data("autocomplete").selectedItem;

    switch($this_autocomplete.attr('data_on_submit_or_select')){

        case 'submit':

            var $url = $this_autocomplete.attr('data_submit_to_url');
            //var $selected_item = LC.get_first_selected_autocomplete_item($this_autocomplete); // Old

            if($selected_item)
            {
                if($selected_item.id == '' || $selected_item.item_type == '')
                {
                    // Nothing
                }
                else
                {
                    $url += '/item_type/'+$selected_item.item_type+'/id/'+$selected_item.id;
                }
            }else{
                $url += '/term/'+$this_autocomplete.val();
            }

            if($this_autocomplete.attr('data_requires_selection') == 'T' && ! $selected_item){
                LC.show_message('You must choose from the available options');
            }
            else
            {
                window.location.href = $url;
            }

        break;

        case 'call_function':
            var $fn = LC.get_function_from_name($this_autocomplete.attr('data_bind_submit'), window);
            $fn($this_autocomplete);
        break;

        default:
            if($selected_item)
            {
                $this_autocomplete.data('real_value', $selected_item.id);
                $this_autocomplete.siblings('.autocomplete_clear_button').css('visibility', 'visible');
            }

    }

};

LC.init_slider = function($slider_parent_jq_obj){

    var $slider_object = new Object();
    $slider_object.slides = new Array();

    $slider_object.slider_parent = $slider_parent_jq_obj;

    var $children = $slider_object.slider_parent.children();

    // For Chrome
    var $first_image = $slider_object.slider_parent.find('img').eq(0);
    var $image_height = $first_image.css('height');

    if($image_height == '0px')
    {
        window.setTimeout(function(){
            LC.init_slider($slider_parent_jq_obj);
        }, 100);

        return;
    }

    $slider_object.slider_parent.css('height', $image_height);

    $slider_object.current_slide_number = null;
    $slider_object.title_class = LC.attr_or($slider_object.slider_parent, 'data_slider_title_class', '');
    $slider_object.slide_pause = LC.get_int(LC.attr_or($slider_object.slider_parent, 'data_slider_slide_pause', 3000));

    var $slide_number = 0;
    $children.each(function(){

        var $slide = $(this);
        var $slide_image_jq_obj = $slide.find('img').eq(0);

        $slide.addClass('absolute');

        if($slide_number != 0)
        {
            $slide.hide();
        }

        if($slide_image_jq_obj.attr('title'))
        {
            $slide.append('<div class="'+$slider_object.title_class+'">'+$slide_image_jq_obj.attr('title')+'</div>')
        }

        $slider_object.slides[$slide_number] = $slide;
        $slide_number++;
    });

    // For FF ie
    //$slider_object.slider_parent.css('height', $slider_object.slider_parent.eq(0).css('height'));

    //$slider_object.slides.addClass('absolute');

    $slider_object.next = function(){

        if(this.current_slide_number == null)
        {
            this.current_slide_number = 0;
        }
        else
        {
            this.slides[this.current_slide_number].fadeOut(500);

            if(this.current_slide_number+1 == this.slides.length)
            {
                this.current_slide_number = 0;

            }
            else
            {
                this.current_slide_number++;
            }

            this.slides[this.current_slide_number].fadeIn(2000);

        }

        window.setTimeout(function(){
            $slider_object.next();
        }, $slider_object.slide_pause);
    }

    $slider_object.next();

};

LC.request_map_items = function(){

    if(LC.maps.big_map)
    {
        LC.maps.big_map.request_map_items();
    }
};

LC.round = function($number, $places){

    var $multiple = Math.pow(10, $places);
    return Math.round($number * $multiple) / $multiple;

};

LC.map_item_click_handler = function($jq_obj){

}

LC.main_search_submit = function($this_autocomplete){
    var $selected_item = LC.get_first_selected_autocomplete_item($this_autocomplete);
    if($selected_item.id == '' || $selected_item.item_type == '')
    {
        LC.show_message('Sorry, no results found.');
    }
    else{
        window.location.href = 'item_type/'+$selected_item.item_type+'/id/'+$selected_item.id;
    }
};

LC.main_search_select = function($input_object, $selected_item){

    if($selected_item.id == '' || $selected_item.item_type == '')
    {
        show_message('Sorry, no results.');
    }
    else
    {
        window.location.href = '/search/select/item_type/'+$selected_item.item_type+'/id/'+$selected_item.id;
    }

    return false;
};

LC.array_search = function (needle, haystack, argStrict) {
    var strict = !! argStrict;
    var key = '';

    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            return key;
        }
    }

    return false;
};

LC.add_map = function($jq_obj){

    var $map_name_key = $jq_obj.attr('data_map_name_key');

    if(typeof Map == 'undefined')
    {

    }
    else
    {
        if($map_name_key)
        {
            LC.maps[$map_name_key] = new Map();
        }
        else
        {
            var $temp = new Map();
        }
    }
};

LC.add_map_lazy = function($toggler_jq_obj){

    var $map_div_jq_obj = $('#'+$toggler_jq_obj.attr('data_target'));

    $map_div_jq_obj.parent().show();
    LC.add_map($map_div_jq_obj);

};

LC.init_checkbox_toggler = function($toggler_jq_obj){

    var $checkbox_jq_obj = $toggler_jq_obj.children('input[type="checkbox"]');

    if(LC.get_input_bool($checkbox_jq_obj))
    {
        $toggler_jq_obj.addClass('active');
    }
    else
    {
        $toggler_jq_obj.removeClass('active');
    }


    $toggler_jq_obj.bind('click', function (){

        var $checkbox_jq_obj = $toggler_jq_obj.children('input[type="checkbox"]');

        LC.toggle_checkbox($checkbox_jq_obj);

        if(LC.get_input_bool($checkbox_jq_obj))
        {
            $toggler_jq_obj.addClass('active');
        }
        else
        {
            $toggler_jq_obj.removeClass('active');
        }

    });

};

LC.toggle_checkbox = function($checkbox_jq_obj){
    if(LC.get_input_bool($checkbox_jq_obj))
    {
        // Was active
        $checkbox_jq_obj.attr('checked', false);
        $checkbox_jq_obj.val(false);
    }
    else
    {
        $checkbox_jq_obj.attr('checked', true);
        $checkbox_jq_obj.val(true);
    }
    $checkbox_jq_obj.trigger('change');
}

LC.close_dialog = function($selector){
    var $dialog = $($selector);
    if($dialog.length > 0 && $dialog.dialog('isOpen')){
        $dialog.dialog('close');
    }
};

LC.collapsible_toggler = function($jq_obj){

    $jq_obj.attr('data_toggle_target', 'next_collapsible_content');
    $jq_obj.bind('click', function (){
        return LC.toggle_target($jq_obj);
    });
};

LC.count = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

LC.flag_non_default = function($jq_obj){

    //Don't change color of order by select box
    if( ! $jq_obj.hasClass('order_by_select') && ! $jq_obj.hasClass('autocomplete') )
    {
        if($jq_obj.val() == '')
        {
            $jq_obj.css('color', '#666');
        }
        else
        {
            $jq_obj.css('color','DarkRed');
        }
    }
};

LC.dump_obj = function($obj){
   var $answer = '';
   for(var $i in $obj){
        $answer += '<div><div class="ib width_50">'+$i+'</div><span>'+$obj[$i]+'</span></div>';
   }
   return $answer;
};

LC.document_ready_handler = function(){

    LC.extend_jq();

    $('[data_implements]').each(function(){

        var $jq_obj = $(this);

        var $implements_str = $jq_obj.attr('data_implements');

        if($implements_str.length)
        {
            $implements_str = $implements_str.replace(' ', '');
            var $implements_arr = $implements_str.split(',');

            for(var $i in $implements_arr)
            {
                var $fn = $implements_arr[$i];

                switch($fn)
                {
                    case 'checkbox_toggler':
                       LC.init_checkbox_toggler($jq_obj);
                    break;

                    case 'collapsible_toggler':
                       LC.collapsible_toggler($jq_obj);
                    break;

                    case 'fill_down':
                       LC.fill_down($jq_obj);
                    break;

                    case 'fill_width':
                       LC.fill_width($jq_obj);
                    break;

                    case 'select_as_nav_menu':
                       LC.select_as_nav_menu($jq_obj);
                    break;

                    case 'popup_message':
                       LC.popup_message($jq_obj);
                    break;

                    case 'show_hide':
                       LC.show_hide($jq_obj);
                    break;

                }
            }
        }

    });

    $('[data_bind_click]').live('click', function(){

        var $jq_obj = $(this);

        var $fn = LC.get_function_from_name($jq_obj.attr('data_bind_click'), window);

        if(typeof $fn == "undefined" )
        {
            LC.log('No function named: '+$jq_obj.attr('data_bind_click'));
            return false;
        }
        else
        {
            return $fn($jq_obj);
        }
    });

    $('[data_bind_change]').live('change', function(){

        var $jq_obj = $(this);
        var $fn = LC.get_function_from_name($jq_obj.attr('data_bind_change'), window);

        if(typeof $fn == "undefined" )
        {
            LC.log('No function named: '+$jq_obj.attr('data_bind_change'));
            return false;
        }
        else
        {
            return $fn($jq_obj);
        }
    });

    $('[data_bind_submit]').live('submit', function(){

        var $jq_obj = $(this);

        var $fn = LC.get_function_from_name($jq_obj.attr('data_bind_submit'), window);

        if(typeof $fn == "undefined" )
        {
            LC.log('No function named: '+$jq_obj.attr('data_bind_submit'));
            return false;
        }
        else
        {
            return $fn($jq_obj);
        }
    });

    $('[data_hover_class]').live('mouseenter', function(){
        var $jq_obj = $(this);
        var $class_name = $jq_obj.attr('data_hover_class');
        $jq_obj.addClass($class_name);
    });

    $('[data_hover_class]').live('mouseleave', function(){
        var $jq_obj = $(this);
        var $class_name = $jq_obj.attr('data_hover_class');
        $jq_obj.removeClass($class_name);
    });

    $('[data_flag_non_default="T"]').each(function(){
        LC.flag_non_default($(this));
    });

    $('[data_hover_src]').live('mouseenter', function(){
        var $jq_obj = $(this);
        var $hover_src = $jq_obj.attr('data_hover_src');
        $jq_obj.attr('data_original_src', $jq_obj.attr('src'));
        $jq_obj.attr('src', $hover_src);
    });

    $('[data_hover_src]').live('mouseleave', function(){
        var $jq_obj = $(this);
        var $src = $jq_obj.attr('data_original_src');
        $jq_obj.attr('src', $src);
    });

    
    $('[data_slider_group="T"]').each(function(){
        LC.init_slider($(this))
    });


    LC.init_content('body');
};

LC.get_toggle_target = function($toggler_jq_obj){

    var $toggle_target_selector = $toggler_jq_obj.attr('data_toggle_target');

    var $toggle_target_selector;
    // Check for some selector keywords
    switch($toggle_target_selector)
    {
        case 'next_collapsible_content':
            $toggle_target_jq_obj = $toggler_jq_obj.closest('[data_roles~="collapsible"]').children('[data_roles~="collapsible_content"]');
        break;
        default:
            $toggle_target_jq_obj = $($toggle_target_selector);

    }
    return $toggle_target_jq_obj;
}

LC.click_away_handler = function($toggler_jq_obj){

    var $toggle_target_jq_obj = LC.get_toggle_target($toggler_jq_obj);

    if($toggle_target_jq_obj.is(':visible'))
    {
        $('body').unbind('click.toggle');
    }
    else
    {
        // The toggle_target is about to be made visible, bind the click away event
        $('body').bind('click.toggle', function(event) {

            var $clicked_jq_obj = $(event.target);

            if ( ! $clicked_jq_obj.closest($toggle_target_jq_obj).length )
            {
                // User clicked away unbind the click monitor
                $('body').unbind('click.toggle');

                // Test to see if the new click was on the original toggle
                if($toggler_jq_obj[0] == $clicked_jq_obj[0] || $toggler_jq_obj.has($clicked_jq_obj).length > 0)
                {
                    /* User re-clicked toggle button or one of it's children, which will trigger the event.
                        No processing here
                     */
                }
                else
                {
                    // Trigger the click event on the original toggle so other behaviors can run
                    $toggler_jq_obj.trigger('click');
                }
            }
        });
    }
};

LC.empty = function($value){

    return (typeof $value == undefined || $value == null || $value == '');
};

LC.extend_jq = function(){
    jQuery.fn.center = function () {
        this.css("position","absolute");
        this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
        this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
        return this;
    }
};

LC.fancy_box_gallery = function($parent_jq_obj){

    // Looks within the context of the parent
    $("a[rel='photo_group']", $parent_jq_obj).fancybox({
    //LC.log($("a", $parent_jq_obj));
    //$("a", $parent_jq_obj).fancybox({
        'transitionIn': 'none',
        'transitionOut': 'none',
        'titleShow': false,
        'titlePosition': 'over',
        'autoScale': false,
        'width': 750,
        'autoDimensions': false,
        'cyclic': 'true',
        'titleFormat': function(title, currentArray, currentIndex, currentOpts) {
            return '<span id="fancybox-title-over">&nbsp;&nbsp; Image '
                + (currentIndex + 1) + ' / ' + currentArray.length
                + (title.length ? ' &nbsp; ' + title : '')
                + '</span>';
        }

    });
};

LC.fill_down = function($jq_obj){

    var $parent_jq_obj = $jq_obj.parent();

    var $other_objs_height = 0;

    $($jq_obj.siblings()).each(function(){
        $other_objs_height += $(this).outerHeight(true);
    });

    var $extra_height = $jq_obj.outerHeight(true) - $jq_obj.innerHeight()

    var $adjustment = $other_objs_height + $extra_height;

    $new_height = $parent_jq_obj.innerHeight() - $adjustment;

    $jq_obj.height($new_height);

    $(window).one('resize', function(){
        LC.fill_down($jq_obj);
    });
};

LC.fill_width = function($jq_obj){

    // Hide the element temporarly to allow parent to resize
    $jq_obj.hide();

    var $parent_jq_obj = $jq_obj.parent();

    var $siblings_total_outer_width = 0;

    $($jq_obj.siblings()).each(function(){
        $siblings_total_outer_width += $(this).outerWidth(true);
    });

    var margin_border_padding_width = $jq_obj.outerWidth(true) - $jq_obj.width();

    var $unavailable_width_total;

    if($jq_obj.is('select'))
    {
        $unavailable_width_total = $siblings_total_outer_width;
    }
    else
    {
        $unavailable_width_total = $siblings_total_outer_width + margin_border_padding_width;
    }

    var $parent_inner_width = $parent_jq_obj.width();

    $jq_obj.width($parent_inner_width - $unavailable_width_total);

    $(window).one('resize', function(){
        LC.fill_width($jq_obj);
    });

    // Show the element again
    $jq_obj.show();
};

LC.format_number = function(nStr){
    //This function adds commas
    nStr += '';
    x = nStr.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;
};

LC.get_abr_amount = function($amount){

    var $answer = Math.round(($amount / 1000),0);

    if($answer > 1000)
    {
        $answer = LC.format_number($answer);
        $answer = $answer.replace(',','.')+'M';
    }
    else
    {
        $answer += 'K';
    }

    $answer = '$'+$answer;

    return $answer;

};

LC.get_function_from_name = function (functionName, context) {
  var namespaces = functionName.split(".");
  var func = namespaces.pop();
  for(var i = 0; i < namespaces.length; i++) {
    context = context[namespaces[i]];
  }

  return context[func];
};

LC.get_input_bool = function($selector_or_jq_obj, $default_value){

    var $jq_obj;

    if(typeof $default_value == 'undefined')
    {
        $default_value == false;
    }

    if(typeof $selector_or_jq_obj  == 'string')
    {
        $jq_obj = $($selector_or_jq_obj);
    }
    else
    {
        $jq_obj = $selector_or_jq_obj;
    }

    if($jq_obj.length)
    {
        if($jq_obj.is(':checked') || $jq_obj.val() == 'true' || $jq_obj.val() == 'T')
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return $default_value;
    }
};

LC.get_int = function($raw){
    return parseInt(LC.strip_non_numeric($raw));
};

LC.get_bool = function($raw){

    if(Boolean($raw) == false || $raw == 'false' || $raw == 'F')
    {
        return false;
    }

    if(Boolean($raw) == true || $raw == 'true' || $raw == 'T')
    {
        return true;
    }

    return null;
};

LC.get_float = function($raw){
    return parseFloat(LC.strip_non_numeric($raw));
};

LC.get_page_params = function($selector){

    //Stores values for form fields, eventually gets turned into a param_string
    var $params = new Object();

    $($selector).each(function(index){

        var $jq_obj = $(this);

        var $name = $jq_obj.attr('data_key');

        if( ! $name)
        {
            $name = $jq_obj.attr('id');
        }

        if( ! $name)
        {
            $name = $jq_obj.attr('name');
        }

        var $value;

        var $input_type;
        var $tag_name = $jq_obj.get(0).tagName.toLowerCase();

        switch($tag_name)
        {
            case 'input':
                if($jq_obj.hasClass('autocomplete'))
                {
                    $input_type = 'autocomplete';
                }
                else
                {
                    $input_type = $jq_obj.attr('type');
                }
            break;
            default:
                $input_type = $tag_name;

        }

        switch($input_type)
        {
            case 'hidden':
            case 'text':
            case 'select':
                if( ! LC.empty($jq_obj.val()))
                {
                    $value = $jq_obj.val();
                }
            break;

            case 'autocomplete':
                if( ! LC.empty($jq_obj.data('real_value')))
                {
                    $value = $jq_obj.data('real_value');
                }
            break;

            case 'checkbox':
                var $val = $jq_obj.is(':checked');
                if($val)
                {
                    $value = 'T';
                }
                else
                {
                    $value = 'F';
                }
            break;

        }

        if( ! LC.empty($value))
        {
            $params[$name] = $value;
        }

    });

    return $params;
};

LC.get_url_string = function($params){

    //To be returned
    $url_string = '';

    //Loop through all names that known to be a part of this filter
    for(var $name in $params){

        $value  = $params[$name];

        //Take code and value pairs onto string
        if($url_string == ''){
            $url_string += $name+'/'+$value;
        }else{
            $url_string += '/'+$name+'/'+$value;
        }
    }

    return $url_string;
};

LC.get_left = function(){

};

LC.get_right = function($var){

    var $answer;

    switch(typeof $var){

        case 'string':
            $var = $($var);
        break;

        case 'object':

        break;
    }

    $answer = $var.offset().left + $var.width();

    return $answer;

};

LC.get_first_selected_autocomplete_item = function($this_autocomplete){
    var $answer = null;
    var $autocomplete_data = $this_autocomplete.data("autocomplete");
    var $menu            = $autocomplete_data.menu;

    if($menu){
        var $first_menu_element = $menu.element.children().first();
        if($first_menu_element){
            var $first_menu_element_data = $first_menu_element.data();
            if($first_menu_element_data){
                $answer = $first_menu_element_data['item.autocomplete'];
            }
        }
    }
    return $answer;
};

LC.in_dollars = function($amount){
    return '$'+LC.format_number($amount);
};

/**
 * LC.init_content iterates through all of the children items of $context and calls all functions
 * registered in the data_bind_load attr
 */

LC.init_content = function($context){

    $('[data_bind_load]', $context).each(function(){

        var $jq_obj = $(this);

        $fn = LC.get_function_from_name($jq_obj.attr('data_bind_load'), window);
        $fn($jq_obj);
    });
};

LC.load_content_direct = function($target_key, $url, $src_jq_obj){

    if( ! $url)
    {
        $url = $src_jq_obj.attr('href');
    }

    switch($target_key)
    {
        case 'dialog':
            LC.load_dialog($url, null, null, $src_jq_obj);
            return false;
        break;

        case 'window':
            window.location.href = $url;
            return true;
        break;

        case 'new_window':
            LC.new_window($url);
            return false;
        break;

        case 'sub_window':
            LC.sub_window($url);
            return false;
        break;

        case 'element':
            // In page element
            var $target_selector = $src_jq_obj.attr('data_target_selector');
            var $target_jq_obj = $($target_selector);
            if($target_jq_obj && $url)
            {
                window.location.hash = $url;
                $target_jq_obj.load($url);
            }
            return false;
        break;
    }
};

LC.load_content = function($jq_obj){

    var $data_target = $jq_obj.attr('data_target');

    if( ! $data_target )
    {
        $data_target = 'window';
    }

    var $url = $jq_obj.attr('href');

    return LC.load_content_direct($data_target, $url, $jq_obj);

};

LC.log = function log($msg){
    if (navigator.userAgent.indexOf("Firefox") != -1)
    {
        console.log($msg);
    }
};

LC.limit = function($string, $limit, $dots){
    if(! $dots)
    {
        $dots = '..';
    }
    return $string.substr(0, $limit)+$dots;
};

LC.load_fancy = function($ajax_url, $div_name){
    //If you specify a div name it will use it, otherwise create a random one
    if(!$div_name){
        $div_name = "div_" + Math.floor(Math.random()*1000);
    }

    if($('#'+$div_name).length == 0){
        $(document.body).append('<div id="'+$div_name+'"></div>');
    }

    $('#'+$div_name).addClass('border_1');

    $('#'+$div_name).load($ajax_url,null,function(){

            $(this).fancybox({
                'transitionIn':'none',
                'transitionOut':'none',
                'overlayShow':false,
                'onClosed':function(){
                $('#'+$div_name).remove();

            }}).click();

            //$( '#fancybox-wrap' ).draggable({ handle: '#detached_header_wrapper' });

        });

    $('#'+$div_name).draggable();

    return false;

};

LC.load_dialog = function($ajax_url, $div_id, $options, $source_jq_obj, $dialog_content){

    if( ! $options)
    {
        $options = new Object();

        if($div_id)
        {
            $options.div_id = $div_id;
        }

        if($source_jq_obj)
        {
            if( ! $div_id)
            {
                $options.div_id = $source_jq_obj.attr('data_target_id');
            }

            $options.dialog_title = $source_jq_obj.attr('data_dialog_title');
            $options.width = $source_jq_obj.attr('data_dialog_width');
            $options.height = $source_jq_obj.attr('data_dialog_height');
        }
    }

    if( ! $options.div_id){
        $options.div_id = "dialog_" + Math.floor(Math.random()*100000);
    }

    /* Additional buttons
    if( ! $options.dialog_title){
        $options.dialog_title = "<div class='pointer right bold margin_right_20 font_size_xl' data_bind_click='LC.toggle_target' data_toggle_target='#"+$options.div_id+"'>_</div>";
    }
    */

    if( ! $options.width){
        $options.width = "auto";
    }

    if( ! $options.resizable){
        $options.resizable = false;
    }

    if( ! $options.zIndex){
        $options.zIndex = 1010;
    }

    var $dialog_jq_obj = $('#'+$options.div_id);

    if($dialog_jq_obj.length == 0)
    {
        $(document.body).append('<div class="hide" id="'+$options.div_id+'"></div>');
        $dialog_jq_obj = $('#'+$options.div_id);
    }

    $dialog_jq_obj.attr('data_container', 'T');

    if($dialog_content)
    {

    }
    else
    {
        // The div content is loaded via ajax.  When the div contents load, init dialog
        $dialog_jq_obj.load($ajax_url, null, function(){

            // The div contents are loaded, init
            $dialog_jq_obj.dialog({
                width:      $options.width,
                height:      $options.height,
                resizable:  $options.resizable,
                title: $options.dialog_title,
                close: function(){
                    $(this).remove();//rem 3-24-11 // added back
                },
                zIndex: $options.zIndex
            });

            LC.init_content($dialog_jq_obj);

        });

    }


    return false;
};

LC.new_window = function($href){

    var $pre = ''

    if($href.indexOf('http://') == -1 && $href.indexOf('https://') == -1)
    {
        $pre = 'http://'+document.domain;
    }

    if (navigator.userAgent.toLowerCase().indexOf("chrome") != -1)
    {
        // Fix for Chrome pop under bug
        setTimeout(function(){
            window.open($pre+$href);
        }, 1);
    }
    else
    {
        window.open($pre+$href);
    }


    return false;
};

LC.show_confirm_prompt = function($jq_obj){

    var $answer = window.confirm('Are you sure?');

    if($answer == true)
    {
        return true;
    }
    else
    {
        return false;
    }
};

LC.sub_window = function($href){
    var $pre = ''

    if($href.indexOf('http://') == -1 && $href.indexOf('https://') == -1)
    {
        $pre = 'http://'+document.domain;
    }

    var $window_key = 'sub_window';
    var $width = 800;
    var $height = 600;
    var $window_properties = "status=1, toolbar=0, location=0, menubar=1, " +
        "directories=0, resizable=1, scrollbars=1, width="+$width+", height="+$height;

    var $loc_x = 200;//(screen.width/2) - ($width/2);
    var $loc_y = 200;//(screen.height/2) - ($height/2);

    if (navigator.userAgent.toLowerCase().indexOf("chrome") != -1)
    {
        // Fix for Chrome pop under bug
        setTimeout(function(){
                var $sub_window = window.open($pre+$href, $window_key, $window_properties);
                $sub_window.moveTo($loc_x, $loc_y);
            },
            1
        );
    }
    else
    {
        var $sub_window = window.open($pre+$href, $window_key, $window_properties);
        $sub_window.moveTo($loc_x, $loc_y);
        
    }


    return false;
};

LC.popup_message = function($jq_obj){
    LC.fade_in_out($jq_obj);
};

LC.pressed_enter = function(e){
    var keycode;
    if (window.event){
        keycode = window.event.keyCode;
    }
    else if (e) {
        keycode = e.which;
    }
    else{
        alert('unknown key');
    }

    if (keycode == 13)    {
       return true;
    }
    else {
       return false;
    }
};

LC.reset_values = function($source_jq_obj){

    var $input_selector = $source_jq_obj.attr('data_input_selector');

    $($input_selector).each(function(){

        var $input_jq_obj = $(this);

        var $reset_value = $input_jq_obj.attr('data_reset_value');

        if(typeof $reset_value == "undefined" || $reset_value == "")
        {
            $input_jq_obj.val('');
        }
        else
        {
            switch($input_jq_obj.attr('type'))
            {
                case 'checkbox':

                    if($reset_value == 'T' || $reset_value == 'true')
                    {
                        $input_jq_obj.prop("checked", true);
                    }
                    else if($reset_value == 'F' || $reset_value == 'false')
                    {
                        $input_jq_obj.prop("checked", false);    
                    }

                break;

                default:
                    $input_jq_obj.val($reset_value);
            }
        }

    });

    if(LC.maps.big_map)
    {
        LC.maps.big_map.request_map_items();
    }

    return false;
};

LC.select_as_nav_menu = function($jq_obj){

    $jq_obj.bind('change',function(){
        var $event_selected_option_jq_obj = $(':selected', this);

        if($event_selected_option_jq_obj && LC.get_bool($event_selected_option_jq_obj.attr('href')))
        {
            return LC.load_content($event_selected_option_jq_obj)
        }
        else
        {
            return false;
        }
    });

};

LC.section_icon_click_handler = function($jq_source_obj){
    
    if( ! LC.maps.big_map)
    {
        // main map is not active, handle as normal link
        return true;
    }

    $('[data_group="sub_bars"]').each(function(){
        var $sub_bar_jq_obj = $(this);
        if($sub_bar_jq_obj.attr('data_item_group_key') != $jq_source_obj.attr('data_section_name'))
        {
            $sub_bar_jq_obj.hide();
        }
        else
        {
            $sub_bar_jq_obj.show();
        }
    });

    $('[data_group="main_icons"]').each(function(){
        var $icon_jq_obj = $(this);
        if($icon_jq_obj.attr('data_section_name') != $jq_source_obj.attr('data_section_name'))
        {
            $icon_jq_obj.removeClass('active');
        }
        else
        {
            $icon_jq_obj.addClass('active');
        }
    });

    $('[data_is_item_type_group_toggle="T"]').each(function(){
        var $group_toggle_jq_obj = $(this);
        if($group_toggle_jq_obj.attr('data_for_item_type_group') != $jq_source_obj.attr('data_section_name'))
        {
            $group_toggle_jq_obj.val('F');
        }
        else
        {
            $group_toggle_jq_obj.val('T');
        }
    });

    if(LC.maps.big_map)
    {
        LC.maps.big_map.request_map_items();
    }

    return false;
};

LC.sign_in_response = function($data){

    if($data.success == true)
    {
        $('#sign_in_dialog').remove();
        LC.show_message($data.messages[0].content);

        $('#welcome_wrapper').html('Welcome, '+$data.first_name);
        $('#sign_in_sign_out_link').html('Sign Out');
        $('#sign_in_sign_out_link').removeAttr('data_target');
        $('#sign_in_sign_out_link').removeAttr('data_target_id');
        $('#sign_in_sign_out_link').attr('href', '/c/auth/a/sign_out');

    }else{

        if($data.messages[0]){
            alert($data.messages[0].content);
        }
        $('#password').val('');
    }
};

LC.show_hide = function($jq_obj){

    $jq_obj.attr('data_active_inner_html', 'Hide');
    $jq_obj.attr('data_inactive_inner_html', 'Show');
    $jq_obj.attr('data_toggle_target', 'next_collapsible_content');
    $jq_obj.bind('click', function(){
        return LC.toggle_target($jq_obj);
    });

};

LC.show_message = function($msg){

    var $message_id = 'message_'+Math.floor(Math.random()*10001);
    $(document.body).append('<div id="'+$message_id+'" class="message_display"><div>'+$msg+'</div></div>');

    var $this_message = $('#'+$message_id);

    LC.fade_in_out($this_message);

};

LC.fade_in_out = function($this_message){

    var $message_count = $('.message_display').length;
    
    var $top = 10 + $message_count * 60;
    var $left = ($(window).width() - $this_message.outerWidth()) / 2;

    $this_message.css('top', $top+'px');
    $this_message.css('left', $left+'px');

    $this_message.fadeIn().delay(3000).fadeOut('slow');

    $event = window.setTimeout(
            function(){
                //$('#'+$message_id).remove();
                $this_message.remove();
            }
    ,4000);
};

LC.show_tooltip = function($msg, $jq_obj){
    $message_id     = 'tooltip_'+Math.floor(Math.random()*1001);

    $offset = $jq_obj.offset();

    $bottom = '20';
    $left   = '20';

    //$top = $offset.top + $jq_obj.height() - 10;
    //$left = $offset.left + ( $jq_obj.width() / 2) + 50;

    //top:%spx;

    $(document.body).append(LC.sprintf('<div style="bottom:%spx; left:%spx" id="%s" class="tooltip">%s</div>',
            $bottom,
            $left,
            $message_id,
            $msg
           ));

    //$(document.body).append('<div style=id="'+$message_id+'" class="tooltip">'+$msg+'</div>');

    $jq_obj.bind('mouseleave', function(){
        $('#'+$message_id).remove();
    });

};

LC.sprintf = function(){

    if (!arguments || arguments.length < 1){
      return;
    }

    var $string = arguments[0];

    for(var $i = 1; $i < arguments.length; $i++){
        if($string.indexOf('%s' != -1)){
            $string = $string.replace('%s', arguments[$i]);
        }
    }

    return $string;
};

LC.strip_non_numeric = function( str ){
    str += '';
    var rgx = /^\d|\.|-$/;
    var out = '';
    for( var i = 0; i < str.length; i++ ){
        if( rgx.test( str.charAt(i) ) ){
          if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) ||
                 ( str.charAt(i) == '-' && out.length != 0 ) ) ){
            out += str.charAt(i);
          }
        }
    }
    return out;
}

LC.submit_form = function($jq_obj){
    var $jq_form = $('#'+$jq_obj.attr('data_form_to_submit'));

    if($jq_form.length == 1)
    {
        $jq_form.submit();
        return false;
    }
};

LC.submit_handler = function($jq_form){

    if($jq_form.attr('data_target') == 'window' || ( ! $jq_form.attr('data_target') && ! $jq_form.attr('data_after')))
    {
        return true;
    }
    else
    {
        $.ajax({
            type: $jq_form.attr('method'),
            url: $jq_form.attr('action'),
            data: $jq_form.serialize(),
            success: function($data){

                switch($jq_form.attr('data_target'))
                {
                    case 'parent':
                        $jq_form.closest('[data_container]').html($data);
                    break;

                    default:
                        $('#'+$jq_form.attr('data_target')).html($data);
                    break;
                }

                if($jq_form.attr('data_after'))
                {
                    $fn = LC.get_function_from_name($jq_form.attr('data_after'), window);
                    $fn($data);
                }

            }
        });
        return false;
    }

};

LC.toggle_target = function($toggler_jq_obj){

    if(LC.get_bool($toggler_jq_obj.attr('data_use_click_away_handler')))
    {
        // set data_use_click_away_handler true when doing toggles for drop down menus but not expand lists
        LC.click_away_handler($toggler_jq_obj);
    }

    var $toggle_target_jq_obj = LC.get_toggle_target($toggler_jq_obj);

    if(! $toggle_target_jq_obj.length)
    {
        return false;
    }

    if($toggle_target_jq_obj.is(':visible'))
    {
        $toggle_target_jq_obj.hide();
    }
    else
    {
        $toggle_target_jq_obj.show();
    }

    if($toggler_jq_obj.attr('data_current_state') == 'active')
    {
        // Use inactive inner html if exists
        if($toggler_jq_obj.attr('data_inactive_inner_html'))
        {
            $toggler_jq_obj.html($toggler_jq_obj.attr('data_inactive_inner_html'));
        }

        // Handle Class Switching
        if($toggler_jq_obj.attr('data_inactive_class'))
        {
            $toggler_jq_obj.addClass($toggler_jq_obj.attr('data_inactive_class'));
        }

        if($toggler_jq_obj.attr('data_active_class'))
        {
            $toggler_jq_obj.removeClass($toggler_jq_obj.attr('data_active_class'));
        }

        $toggler_jq_obj.attr('data_current_state', 'inactive');
    }
    else
    {
        // Use active inner html if exists
        if($toggler_jq_obj.attr('data_active_inner_html'))
        {
            $toggler_jq_obj.html($toggler_jq_obj.attr('data_active_inner_html'));
        }

        // Handle Class Switching
        if($toggler_jq_obj.attr('data_inactive_class'))
        {
            $toggler_jq_obj.removeClass($toggler_jq_obj.attr('data_inactive_class'));
        }

        if($toggler_jq_obj.attr('data_active_class'))
        {
            $toggler_jq_obj.addClass($toggler_jq_obj.attr('data_active_class'));
        }

        $toggler_jq_obj.attr('data_current_state', 'active');
    }

    return false;
};

LC.val_or = function($var, $key, $alt){

    if($var && $var.hasOwnProperty($key)){
        return $var[$key];
    }else{
        return $alt;
    }
};

LC.window_close = function(){
    self.close();
};

function Keys(){}
Keys.loading = 'loading';

function Keys_Item_Type_Groups(){}
Keys_Item_Types.resi = 'resi';
Keys_Item_Types.land = 'land';
Keys_Item_Types.subdivisions = 'subdivisions';
Keys_Item_Types.condos = 'condos';
Keys_Item_Types.project = 'project';

function Keys_Item_Types(){}
Keys_Item_Types.resi = 'resi';
Keys_Item_Types.land = 'land';
Keys_Item_Types.pla_pro = 'pla_pro';
Keys_Item_Types.cdo_pro = 'cdo_pro';
Keys_Item_Types.project = 'project';
Keys_Item_Types.unit = 'unit';
Keys_Item_Types.contact = 'contact';
Keys_Item_Types.builder = 'builder';

$(document).ready(function(){
    LC.document_ready_handler();
});

$(document).bind('mobileinit',function(){
    //LC.log('init');
    //$.mobile.page.prototype.options.keepNative = "select, input, textarea";
    //$.mobile.page.prototype.options.keepNative = "select";
    //$.mobile.ajaxEnabled = false;
});

$(document).bind( "pagebeforeload", function( e, data ) {
    //LC.log(data.dataUrl);
    //data.dataUrl = data.dataUrl+'/render_type/solo';
    //LC.log(data.dataUrl);
});if(typeof Object.create!=="function"){
Object.create=function(o){
function F(){
};
F.prototype=o;
return new F();
};
}
var ua={toString:function(){
return navigator.userAgent;
},test:function(s){
return this.toString().toLowerCase().indexOf(s.toLowerCase())>-1;
}};
ua.version=(ua.toString().toLowerCase().match(/[\s\S]+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1];
ua.webkit=ua.test("webkit");
ua.gecko=ua.test("gecko")&&!ua.webkit;
ua.opera=ua.test("opera");
ua.ie=ua.test("msie")&&!ua.opera;
ua.ie6=ua.ie&&document.compatMode&&typeof document.documentElement.style.maxHeight==="undefined";
ua.ie7=ua.ie&&document.documentElement&&typeof document.documentElement.style.maxHeight!=="undefined"&&typeof XDomainRequest==="undefined";
ua.ie8=ua.ie&&typeof XDomainRequest!=="undefined";
var domReady=function(){
var _1=[];
var _2=function(){
if(!arguments.callee.done){
arguments.callee.done=true;
for(var i=0;i<_1.length;i++){
_1[i]();
}
}
};
if(document.addEventListener){
document.addEventListener("DOMContentLoaded",_2,false);
}
if(ua.ie){
(function(){
try{
document.documentElement.doScroll("left");
}
catch(e){
setTimeout(arguments.callee,50);
return;
}
_2();
})();
document.onreadystatechange=function(){
if(document.readyState==="complete"){
document.onreadystatechange=null;
_2();
}
};
}
if(ua.webkit&&document.readyState){
(function(){
if(document.readyState!=="loading"){
_2();
}else{
setTimeout(arguments.callee,10);
}
})();
}
window.onload=_2;
return function(fn){
if(typeof fn==="function"){
_1[_1.length]=fn;
}
return fn;
};
}();
var cssHelper=function(){
var _3={BLOCKS:/[^\s{][^{]*\{(?:[^{}]*\{[^{}]*\}[^{}]*|[^{}]*)*\}/g,BLOCKS_INSIDE:/[^\s{][^{]*\{[^{}]*\}/g,DECLARATIONS:/[a-zA-Z\-]+[^;]*:[^;]+;/g,RELATIVE_URLS:/url\(['"]?([^\/\)'"][^:\)'"]+)['"]?\)/g,REDUNDANT_COMPONENTS:/(?:\/\*([^*\\\\]|\*(?!\/))+\*\/|@import[^;]+;)/g,REDUNDANT_WHITESPACE:/\s*(,|:|;|\{|\})\s*/g,MORE_WHITESPACE:/\s{2,}/g,FINAL_SEMICOLONS:/;\}/g,NOT_WHITESPACE:/\S+/g};
var _4,_5=false;
var _6=[];
var _7=function(fn){
if(typeof fn==="function"){
_6[_6.length]=fn;
}
};
var _8=function(){
for(var i=0;i<_6.length;i++){
_6[i](_4);
}
};
var _9={};
var _a=function(n,v){
if(_9[n]){
var _b=_9[n].listeners;
if(_b){
for(var i=0;i<_b.length;i++){
_b[i](v);
}
}
}
};
var _c=function(_d,_e,_f){
if(ua.ie&&!window.XMLHttpRequest){
window.XMLHttpRequest=function(){
return new ActiveXObject("Microsoft.XMLHTTP");
};
}
if(!XMLHttpRequest){
return "";
}
var r=new XMLHttpRequest();
try{
r.open("get",_d,true);
r.setRequestHeader("X_REQUESTED_WITH","XMLHttpRequest");
}
catch(e){
_f();
return;
}
var _10=false;
setTimeout(function(){
_10=true;
},5000);
document.documentElement.style.cursor="progress";
r.onreadystatechange=function(){
if(r.readyState===4&&!_10){
if(!r.status&&location.protocol==="file:"||(r.status>=200&&r.status<300)||r.status===304||navigator.userAgent.indexOf("Safari")>-1&&typeof r.status==="undefined"){
_e(r.responseText);
}else{
_f();
}
document.documentElement.style.cursor="";
r=null;
}
};
r.send("");
};
var _11=function(_12){
_12=_12.replace(_3.REDUNDANT_COMPONENTS,"");
_12=_12.replace(_3.REDUNDANT_WHITESPACE,"$1");
_12=_12.replace(_3.MORE_WHITESPACE," ");
_12=_12.replace(_3.FINAL_SEMICOLONS,"}");
return _12;
};
var _13={mediaQueryList:function(s){
var o={};
var idx=s.indexOf("{");
var lt=s.substring(0,idx);
s=s.substring(idx+1,s.length-1);
var mqs=[],rs=[];
var qts=lt.toLowerCase().substring(7).split(",");
for(var i=0;i<qts.length;i++){
mqs[mqs.length]=_13.mediaQuery(qts[i],o);
}
var rts=s.match(_3.BLOCKS_INSIDE);
if(rts!==null){
for(i=0;i<rts.length;i++){
rs[rs.length]=_13.rule(rts[i],o);
}
}
o.getMediaQueries=function(){
return mqs;
};
o.getRules=function(){
return rs;
};
o.getListText=function(){
return lt;
};
o.getCssText=function(){
return s;
};
return o;
},mediaQuery:function(s,mql){
s=s||"";
var not=false,_14;
var exp=[];
var _15=true;
var _16=s.match(_3.NOT_WHITESPACE);
for(var i=0;i<_16.length;i++){
var _17=_16[i];
if(!_14&&(_17==="not"||_17==="only")){
if(_17==="not"){
not=true;
}
}else{
if(!_14){
_14=_17;
}else{
if(_17.charAt(0)==="("){
var _18=_17.substring(1,_17.length-1).split(":");
exp[exp.length]={mediaFeature:_18[0],value:_18[1]||null};
}
}
}
}
return {getList:function(){
return mql||null;
},getValid:function(){
return _15;
},getNot:function(){
return not;
},getMediaType:function(){
return _14;
},getExpressions:function(){
return exp;
}};
},rule:function(s,mql){
var o={};
var idx=s.indexOf("{");
var st=s.substring(0,idx);
var ss=st.split(",");
var ds=[];
var dts=s.substring(idx+1,s.length-1).split(";");
for(var i=0;i<dts.length;i++){
ds[ds.length]=_13.declaration(dts[i],o);
}
o.getMediaQueryList=function(){
return mql||null;
};
o.getSelectors=function(){
return ss;
};
o.getSelectorText=function(){
return st;
};
o.getDeclarations=function(){
return ds;
};
o.getPropertyValue=function(n){
for(var i=0;i<ds.length;i++){
if(ds[i].getProperty()===n){
return ds[i].getValue();
}
}
return null;
};
return o;
},declaration:function(s,r){
var idx=s.indexOf(":");
var p=s.substring(0,idx);
var v=s.substring(idx+1);
return {getRule:function(){
return r||null;
},getProperty:function(){
return p;
},getValue:function(){
return v;
}};
}};
var _19=function(el){
if(typeof el.cssHelperText!=="string"){
return;
}
var o={mediaQueryLists:[],rules:[],selectors:{},declarations:[],properties:{}};
var _1a=o.mediaQueryLists;
var ors=o.rules;
var _1b=el.cssHelperText.match(_3.BLOCKS);
if(_1b!==null){
for(var i=0;i<_1b.length;i++){
if(_1b[i].substring(0,7)==="@media "){
_1a[_1a.length]=_13.mediaQueryList(_1b[i]);
ors=o.rules=ors.concat(_1a[_1a.length-1].getRules());
}else{
ors[ors.length]=_13.rule(_1b[i]);
}
}
}
var oss=o.selectors;
var _1c=function(r){
var ss=r.getSelectors();
for(var i=0;i<ss.length;i++){
var n=ss[i];
if(!oss[n]){
oss[n]=[];
}
oss[n][oss[n].length]=r;
}
};
for(i=0;i<ors.length;i++){
_1c(ors[i]);
}
var ods=o.declarations;
for(i=0;i<ors.length;i++){
ods=o.declarations=ods.concat(ors[i].getDeclarations());
}
var ops=o.properties;
for(i=0;i<ods.length;i++){
var n=ods[i].getProperty();
if(!ops[n]){
ops[n]=[];
}
ops[n][ops[n].length]=ods[i];
}
el.cssHelperParsed=o;
_4[_4.length]=el;
return o;
};
var _1d=function(el,s){
el.cssHelperText=_11(s||el.innerHTML);
return _19(el);
};
var _1e=function(){
_5=true;
_4=[];
var _1f=[];
var _20=function(){
for(var i=0;i<_1f.length;i++){
_19(_1f[i]);
}
var _21=document.getElementsByTagName("style");
for(i=0;i<_21.length;i++){
_1d(_21[i]);
}
_5=false;
_8();
};
var _22=document.getElementsByTagName("link");
for(var i=0;i<_22.length;i++){
var _23=_22[i];
if(_23.getAttribute("rel").indexOf("style")>-1&&_23.href&&_23.href.length!==0&&!_23.disabled){
_1f[_1f.length]=_23;
}
}
if(_1f.length>0){
var c=0;
var _24=function(){
c++;
if(c===_1f.length){
_20();
}
};
var _25=function(_26){
var _27=_26.href;
_c(_27,function(_28){
_28=_11(_28).replace(_3.RELATIVE_URLS,"url("+_27.substring(0,_27.lastIndexOf("/"))+"/$1)");
_26.cssHelperText=_28;
_24();
},_24);
};
for(i=0;i<_1f.length;i++){
_25(_1f[i]);
}
}else{
_20();
}
};
var _29={mediaQueryLists:"array",rules:"array",selectors:"object",declarations:"array",properties:"object"};
var _2a={mediaQueryLists:null,rules:null,selectors:null,declarations:null,properties:null};
var _2b=function(_2c,v){
if(_2a[_2c]!==null){
if(_29[_2c]==="array"){
return (_2a[_2c]=_2a[_2c].concat(v));
}else{
var c=_2a[_2c];
for(var n in v){
if(v.hasOwnProperty(n)){
if(!c[n]){
c[n]=v[n];
}else{
c[n]=c[n].concat(v[n]);
}
}
}
return c;
}
}
};
var _2d=function(_2e){
_2a[_2e]=(_29[_2e]==="array")?[]:{};
for(var i=0;i<_4.length;i++){
_2b(_2e,_4[i].cssHelperParsed[_2e]);
}
return _2a[_2e];
};
domReady(function(){
var els=document.body.getElementsByTagName("*");
for(var i=0;i<els.length;i++){
els[i].checkedByCssHelper=true;
}
if(document.implementation.hasFeature("MutationEvents","2.0")||window.MutationEvent){
document.body.addEventListener("DOMNodeInserted",function(e){
var el=e.target;
if(el.nodeType===1){
_a("DOMElementInserted",el);
el.checkedByCssHelper=true;
}
},false);
}else{
setInterval(function(){
var els=document.body.getElementsByTagName("*");
for(var i=0;i<els.length;i++){
if(!els[i].checkedByCssHelper){
_a("DOMElementInserted",els[i]);
els[i].checkedByCssHelper=true;
}
}
},1000);
}
});
var _2f=function(d){
if(typeof window.innerWidth!="undefined"){
return window["inner"+d];
}else{
if(typeof document.documentElement!="undefined"&&typeof document.documentElement.clientWidth!="undefined"&&document.documentElement.clientWidth!=0){
return document.documentElement["client"+d];
}
}
};
return {addStyle:function(s,_30){
var el=document.createElement("style");
el.setAttribute("type","text/css");
document.getElementsByTagName("head")[0].appendChild(el);
if(el.styleSheet){
el.styleSheet.cssText=s;
}else{
el.appendChild(document.createTextNode(s));
}
el.addedWithCssHelper=true;
if(typeof _30==="undefined"||_30===true){
cssHelper.parsed(function(_31){
var o=_1d(el,s);
for(var n in o){
if(o.hasOwnProperty(n)){
_2b(n,o[n]);
}
}
_a("newStyleParsed",el);
});
}else{
el.parsingDisallowed=true;
}
return el;
},removeStyle:function(el){
return el.parentNode.removeChild(el);
},parsed:function(fn){
if(_5){
_7(fn);
}else{
if(typeof _4!=="undefined"){
if(typeof fn==="function"){
fn(_4);
}
}else{
_7(fn);
_1e();
}
}
},mediaQueryLists:function(fn){
cssHelper.parsed(function(_32){
fn(_2a.mediaQueryLists||_2d("mediaQueryLists"));
});
},rules:function(fn){
cssHelper.parsed(function(_33){
fn(_2a.rules||_2d("rules"));
});
},selectors:function(fn){
cssHelper.parsed(function(_34){
fn(_2a.selectors||_2d("selectors"));
});
},declarations:function(fn){
cssHelper.parsed(function(_35){
fn(_2a.declarations||_2d("declarations"));
});
},properties:function(fn){
cssHelper.parsed(function(_36){
fn(_2a.properties||_2d("properties"));
});
},broadcast:_a,addListener:function(n,fn){
if(typeof fn==="function"){
if(!_9[n]){
_9[n]={listeners:[]};
}
_9[n].listeners[_9[n].listeners.length]=fn;
}
},removeListener:function(n,fn){
if(typeof fn==="function"&&_9[n]){
var ls=_9[n].listeners;
for(var i=0;i<ls.length;i++){
if(ls[i]===fn){
ls.splice(i,1);
i-=1;
}
}
}
},getViewportWidth:function(){
return _2f("Width");
},getViewportHeight:function(){
return _2f("Height");
}};
}();
domReady(function enableCssMediaQueries(){
var _37;
var _38={LENGTH_UNIT:/[0-9]+(em|ex|px|in|cm|mm|pt|pc)$/,RESOLUTION_UNIT:/[0-9]+(dpi|dpcm)$/,ASPECT_RATIO:/^[0-9]+\/[0-9]+$/,ABSOLUTE_VALUE:/^[0-9]*(\.[0-9]+)*$/};
var _39=[];
var _3a=function(){
var id="css3-mediaqueries-test";
var el=document.createElement("div");
el.id=id;
var _3b=cssHelper.addStyle("@media all and (width) { #"+id+" { width: 1px !important; } }",false);
document.body.appendChild(el);
var ret=el.offsetWidth===1;
_3b.parentNode.removeChild(_3b);
el.parentNode.removeChild(el);
_3a=function(){
return ret;
};
return ret;
};
var _3c=function(){
_37=document.createElement("div");
_37.style.cssText="position:absolute;top:-9999em;left:-9999em;"+"margin:0;border:none;padding:0;width:1em;font-size:1em;";
document.body.appendChild(_37);
if(_37.offsetWidth!==16){
_37.style.fontSize=16/_37.offsetWidth+"em";
}
_37.style.width="";
};
var _3d=function(_3e){
_37.style.width=_3e;
var _3f=_37.offsetWidth;
_37.style.width="";
return _3f;
};
var _40=function(_41,_42){
var l=_41.length;
var min=(_41.substring(0,4)==="min-");
var max=(!min&&_41.substring(0,4)==="max-");
if(_42!==null){
var _43;
var _44;
if(_38.LENGTH_UNIT.exec(_42)){
_43="length";
_44=_3d(_42);
}else{
if(_38.RESOLUTION_UNIT.exec(_42)){
_43="resolution";
_44=parseInt(_42,10);
var _45=_42.substring((_44+"").length);
}else{
if(_38.ASPECT_RATIO.exec(_42)){
_43="aspect-ratio";
_44=_42.split("/");
}else{
if(_38.ABSOLUTE_VALUE){
_43="absolute";
_44=_42;
}else{
_43="unknown";
}
}
}
}
}
var _46,_47;
if("device-width"===_41.substring(l-12,l)){
_46=screen.width;
if(_42!==null){
if(_43==="length"){
return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44));
}else{
return false;
}
}else{
return _46>0;
}
}else{
if("device-height"===_41.substring(l-13,l)){
_47=screen.height;
if(_42!==null){
if(_43==="length"){
return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44));
}else{
return false;
}
}else{
return _47>0;
}
}else{
if("width"===_41.substring(l-5,l)){
_46=document.documentElement.clientWidth||document.body.clientWidth;
if(_42!==null){
if(_43==="length"){
return ((min&&_46>=_44)||(max&&_46<_44)||(!min&&!max&&_46===_44));
}else{
return false;
}
}else{
return _46>0;
}
}else{
if("height"===_41.substring(l-6,l)){
_47=document.documentElement.clientHeight||document.body.clientHeight;
if(_42!==null){
if(_43==="length"){
return ((min&&_47>=_44)||(max&&_47<_44)||(!min&&!max&&_47===_44));
}else{
return false;
}
}else{
return _47>0;
}
}else{
if("device-aspect-ratio"===_41.substring(l-19,l)){
return _43==="aspect-ratio"&&screen.width*_44[1]===screen.height*_44[0];
}else{
if("color-index"===_41.substring(l-11,l)){
var _48=Math.pow(2,screen.colorDepth);
if(_42!==null){
if(_43==="absolute"){
return ((min&&_48>=_44)||(max&&_48<_44)||(!min&&!max&&_48===_44));
}else{
return false;
}
}else{
return _48>0;
}
}else{
if("color"===_41.substring(l-5,l)){
var _49=screen.colorDepth;
if(_42!==null){
if(_43==="absolute"){
return ((min&&_49>=_44)||(max&&_49<_44)||(!min&&!max&&_49===_44));
}else{
return false;
}
}else{
return _49>0;
}
}else{
if("resolution"===_41.substring(l-10,l)){
var res;
if(_45==="dpcm"){
res=_3d("1cm");
}else{
res=_3d("1in");
}
if(_42!==null){
if(_43==="resolution"){
return ((min&&res>=_44)||(max&&res<_44)||(!min&&!max&&res===_44));
}else{
return false;
}
}else{
return res>0;
}
}else{
return false;
}
}
}
}
}
}
}
}
};
var _4a=function(mq){
var _4b=mq.getValid();
var _4c=mq.getExpressions();
var l=_4c.length;
if(l>0){
for(var i=0;i<l&&_4b;i++){
_4b=_40(_4c[i].mediaFeature,_4c[i].value);
}
var not=mq.getNot();
return (_4b&&!not||not&&!_4b);
}
};
var _4d=function(mql){
var mqs=mql.getMediaQueries();
var t={};
for(var i=0;i<mqs.length;i++){
if(_4a(mqs[i])){
t[mqs[i].getMediaType()]=true;
}
}
var s=[],c=0;
for(var n in t){
if(t.hasOwnProperty(n)){
if(c>0){
s[c++]=",";
}
s[c++]=n;
}
}
if(s.length>0){
_39[_39.length]=cssHelper.addStyle("@media "+s.join("")+"{"+mql.getCssText()+"}",false);
}
};
var _4e=function(_4f){
for(var i=0;i<_4f.length;i++){
_4d(_4f[i]);
}
if(ua.ie){
document.documentElement.style.display="block";
setTimeout(function(){
document.documentElement.style.display="";
},0);
setTimeout(function(){
cssHelper.broadcast("cssMediaQueriesTested");
},100);
}else{
cssHelper.broadcast("cssMediaQueriesTested");
}
};
var _50=function(){
for(var i=0;i<_39.length;i++){
cssHelper.removeStyle(_39[i]);
}
_39=[];
cssHelper.mediaQueryLists(_4e);
};
var _51=0;
var _52=function(){
var _53=cssHelper.getViewportWidth();
var _54=cssHelper.getViewportHeight();
if(ua.ie){
var el=document.createElement("div");
el.style.position="absolute";
el.style.top="-9999em";
el.style.overflow="scroll";
document.body.appendChild(el);
_51=el.offsetWidth-el.clientWidth;
document.body.removeChild(el);
}
var _55;
var _56=function(){
var vpw=cssHelper.getViewportWidth();
var vph=cssHelper.getViewportHeight();
if(Math.abs(vpw-_53)>_51||Math.abs(vph-_54)>_51){
_53=vpw;
_54=vph;
clearTimeout(_55);
_55=setTimeout(function(){
if(!_3a()){
_50();
}else{
cssHelper.broadcast("cssMediaQueriesTested");
}
},500);
}
};
window.onresize=function(){
var x=window.onresize||function(){
};
return function(){
x();
_56();
};
}();
};
var _57=document.documentElement;
_57.style.marginLeft="-32767px";
setTimeout(function(){
_57.style.marginTop="";
},20000);
return function(){
if(!_3a()){
cssHelper.addListener("newStyleParsed",function(el){
_4e(el.cssHelperParsed.mediaQueryLists);
});
cssHelper.addListener("cssMediaQueriesTested",function(){
if(ua.ie){
_57.style.width="1px";
}
setTimeout(function(){
_57.style.width="";
_57.style.marginLeft="";
},0);
cssHelper.removeListener("cssMediaQueriesTested",arguments.callee);
});
_3c();
_50();
}else{
_57.style.marginLeft="";
}
_52();
};
}());
try{
document.execCommand("BackgroundImageCache",false,true);
}
catch(e){
}


