/* 
 *  main.js
 *  Created on Oct 5, 2011 11:07:54 PM by bob
 */
var autocompleteOpen = false;
var findCityDefault = "Type Your City";
var findCountyDefault = "Type Your County";

function initPopups() {    
    //these popups......
    $('.licenseBase').hover(function() {
        $(this).addClass('active');
        $(this).children ('.popup').fadeIn('fast');						  
    }, function(){
        $(this).removeClass('active');
        $(this).children ('.popup').fadeOut('fast');
    });
            
    $('.popbase').hover	(function() {
        $(this).addClass('active');                
        $(this).children ('.popup').fadeIn('fast');						  
    }, function(){
        $(this).removeClass('active');
        $(this).children ('.popup').fadeOut('fast');
    });            
            
    $('.topNav li').mouseenter(function(){
        unbindMap();
        $(this).addClass('active');
        $(this).children ('div').fadeIn('fast');
    });
    
    $('.topNav li').mouseleave(function(){
        if(!autocompleteOpen) {
            $(this).removeClass('active');
            $(this).children('div').fadeOut();           
        }
        bindMap();
    });
}

function initAutoComplete(stateAcId, cityAcId) {
    $(stateAcId).autocomplete({
        source: baseUrl + "search/states_json",
        minLength: 1,
        select: function( event, ui ) {               
            $(stateAcId + '-code').val(ui.item.state_code);
        },
        focus: function() {
            return false;
        },
        open: function(event, ui) {
            $(".ui-autocomplete li.ui-menu-item:odd").addClass("ui-menu-item-alternate");
        }
    });
    
    $(cityAcId).autocomplete({ 
        source: function(request, response) {            
            var stateVal = $(stateAcId).val();
            $.ajax({
                url: baseUrl + "search/cities_json",
                dataType: "json",
                data: {
                    term: request.term,
                    state: stateVal
                },
                success: function(data) {                    
                    response(data);
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {               
            $(cityAcId + '-id').val(ui.item.id);
        },
        focus: function() {
            return false;
        },
        open: function(event, ui) {
            $(".ui-autocomplete li.ui-menu-item:odd").addClass("ui-menu-item-alternate");
        }
    });
}

function initFindForm(countyFieldId, cityFieldId) {    
    $(cityFieldId).autocomplete({
        source: baseUrl + "search/cities_full_json",
        minLength: 2,
        select: function( event, ui ) {               
            $(cityFieldId + '-id').val(ui.item.id);
            $(countyFieldId + '-id').val('');
            $(countyFieldId).val(findCountyDefault);
        },
        focus: function() {
            return false;
        },
        open: function(event, ui) {
            autocompleteOpen = true;
            $(".ui-autocomplete li.ui-menu-item:odd").addClass("ui-menu-item-alternate");
        },
        close: function(event, ui) {
            autocompleteOpen = false;
        }
    });    
    
    $(countyFieldId).autocomplete({
        source: baseUrl + "search/counties_full_json",
        minLength: 2,
        select: function( event, ui ) {               
            $(countyFieldId + '-id').val(ui.item.id);
            $(cityFieldId + '-id').val('');
            $(cityFieldId).val(findCityDefault);
        },
        focus: function() {
            return false;
        },
        open: function(event, ui) {
            autocompleteOpen = true;
            $(".ui-autocomplete li.ui-menu-item:odd").addClass("ui-menu-item-alternate");
            
        },
        close: function(event, ui) {
            autocompleteOpen = false;
        }
    });
}

function bindFocusBlur(selector, defaultVal) {
    $(selector).val(defaultVal);
    $(selector).focus(function(){
        if($(this).val() == defaultVal) {
            $(this).val('');
        }
    });
    $(selector).blur(function(){
        if($(this).val() == '') {
            $(this).val(defaultVal);
        }
    });
}

function initStateCityFields() {
    bindFocusBlur('.state-field', "Arrest State");
    bindFocusBlur('.city-field', "Arrest City");
    bindFocusBlur('.find-city-field', findCityDefault);
    bindFocusBlur('.find-county-field', findCountyDefault);
    /*
    $.ajax({
        //url: baseUrl + "search/visitor_city_json",
        url: "http://temp.godui.org/search/visitor_city_json",
        dataType: "json",
        data: {            
        },
        success: function(data) {  
            if(data.state != '' && data.city != '') {
                $('.state-field').val(data.state);
                $('.city-field').val(data.city);
            }
        }
    });
    */  
}

function initCountyCityAutocomplete() {
    $('#county-city-field').autocomplete({ 
        source: function(request, response) {            
            var countyId = $('#county-id').val();
            $.ajax({
                url: baseUrl + "search/cities_for_county_json",
                dataType: "json",
                data: {
                    term: request.term,
                    county_id: countyId
                },
                success: function(data) {                    
                    response(data);
                }
            });
        },
        minLength: 2,
        select: function( event, ui ) {               
            $('#city-id').val(ui.item.id);
        },
        focus: function() {
            return false;
        },
        open: function(event, ui) {
            $(".ui-autocomplete li.ui-menu-item:odd").addClass("ui-menu-item-alternate");
        }
    });
}

function bindMap() {
    if($('#usa').length > 0) {
        $('#usa').mapster({
            stroke: true, 
            isSelectable:false, 
            fillColor: 'DE6311',
            fade: true,
            fadeDuration: 250,
            fillOpacity: 0.6,
            //altImage: baseUrl + 'assets/images/alt-map.jpg',
            onClick:function(data) {
                window.location = $(this).attr("href");
            }
        });
    }
}

function unbindMap() {
    if($('#usa').length > 0) {
        $('#usa').mapster("unbind");
    }
}

$(document).ready(function(){
    initPopups();
    initAutoComplete("#top-state-ac", "#top-city-ac");
    initAutoComplete("#side-state-ac", "#side-city-ac");
    initFindForm('#find-box-county', '#find-box-city');
    initFindForm('#find-dialog-county', '#find-dialog-city');
    initFindForm('#find-inline-county', '#find-inline-city');
    initCountyCityAutocomplete();
    $("#combobox").ufd( /*{log:true}*/);
    bindMap();
    initStateCityFields();   
    $('.date-field').datepicker({
        dateFormat: 'yy-mm-dd',
        numberOfMonths: 1,
        nextText: '',
        prevText: ''       
    }); 
    
    $( "#popup-dialog" ).dialog({
        autoOpen: false,
        width: 'auto',
        height: '126',
        modal: true,
        resizable:false,
        show: "blind",
        hide: "blind",
        open: function(event, ui) { 
            $('.ui-widget-overlay').bind('click', function(){ 
                $("#popup-dialog").dialog('close'); 
            });
            $('#popup-dialog').find("input").each(function(){
                $(this).blur();
            });
        }, 
        beforeClose: function(event, ui) {
            $('#find-dialog-city').autocomplete("close");
            $('#find-dialog-county').autocomplete("close");
        },
        dragStart: function(event, ui) {
            $('#find-dialog-city').autocomplete("close");
            $('#find-dialog-county').autocomplete("close");
        }
    }).siblings('.ui-dialog-titlebar').remove();
    
    $('a[href="#popup-box"]').click(function() { 
//        var tit = $(this).attr("title");
//        if(tit) {
//            $('#popup-dialog').dialog({
//                title:tit
//            });
//        }        
        $('#popup-dialog').dialog("open");        
        return false;
    });
    
    $('.banner').cycle({
        fx: 'fade',
        timeout: 3000
    });
    
});

