$(function(){

    /**
     * Změna hodnoty selectBoxu
     */
    $("#anySelectbox").live("change", function(){
        if($(this).val() == "addItem"){
            $(this).anySelectBoxShowInputAdd();
        }else{
            anySelectBoxSelectedLastItemId = $(this).val();
            var selectedItem = $(this).anySelectBoxGetSelectedItem();
            anySelectBoxAjax = $(this).attr('data-ajax');
            if(anySelectBoxAjax == 1){
                $.get(selectedItem.attr("data-link-url"));
            }else{
                if($(this).attr("data-on-change") == true){
                    location.href = selectedItem.attr("data-link-url");
                }
            }
        }
    });
    
    $("#anySelectbox").live("click", function(){
        var count = 0;
        var firstValue = null;
        $(this).find( "option" ).each( function() {
            if(count == 0){
                firstValue = $(this).attr("value");
            }
            count++;
        });

        if(firstValue == "addItem"){
            $(this).anySelectBoxShowInputAdd();
        }
    });

    $("#anySelectboxFormItemInput").live("keydown", function(event){
        if (event.keyCode == '13'){ // ENTER
            var payload = new Object();
                payload['itemValue'] = $(this).val();
                
            $.post( $("#anySelectboxForm").attr("data-submit-url"), payload );
        }

    });

    $("#anySelectboxBtnSave").live("click",function(){
        var payload = new Object();
            payload['itemValue'] = $("#anySelectboxFormItemInput").val();
        $.post( $("#anySelectboxForm").attr("data-submit-url"), payload );
    });

    $("#anySelectboxBtnDelete").live("click", function(event){
        var selectedItemValue = $(this).anySelectBoxGetLastItemId(anySelectBoxSelectedLastItemId)
        $("#anySelectbox").val(selectedItemValue);
        $("#anySelectboxForm").hide();
    });

});


jQuery.fn.extend({

    /**
     * zobrazí input pro přidání nové položky
     */
    anySelectBoxShowInputAdd: function() {
        $("#anySelectboxForm").show();
        var selectBoxPosition = $("#anySelectbox").position();
        var selectBoxWidth = $("#anySelectbox").width();

        // nastavení pozice selectboxu
        $("#anySelectboxForm").offset({
            top : selectBoxPosition.top,
            left: selectBoxPosition.left
        });
        // automatické nastavení šířky selectboxu
        if(selectBoxWidth < 100){
            selectBoxWidth = 100;
        }
        $("#anySelectboxFormItemInput").css("width", selectBoxWidth + "px");
        $("#anySelectboxFormItemInput").focus();
    },

    anySelectBoxGetLastItemId: function(anySelectBoxSelectedLastItemId){
        return anySelectBoxSelectedLastItemId;
        
        /*
        if (anySelectBoxSelectedLastItemId > 0){
            return
        }
        */
    },
    
    /**
     * vrací položku ve formátu jQuery označeného elementu selectBoxu. Je pak možné číst např. atributy tohoto elementu
     */
    anySelectBoxGetSelectedItem: function(){
         var selectedItem = null;
         var val = $(this).val();
         $(this).find( "option" ).each( function() {
            var value = $(this).attr("value");
            if(value == val){
                selectedItem = $(this);
            }
         });
         
         return selectedItem;
    }
});
