/* * jNice * version: 1.0 (11.26.08) * by Sean Mooney (sean@whitespace-creative.com)  * Examples at: http://www.whitespace-creative.com/jquery/jnice/ * Dual licensed under the MIT and GPL licenses: *   http://www.opensource.org/licenses/mit-license.php *   http://www.gnu.org/licenses/gpl.html * * To Use: place in the head  *  <link href="inc/style/jNice.css" rel="stylesheet" type="text/css" /> *  <script type="text/javascript" src="inc/js/jquery.jNice.js"></script> * * And apply the jNice class to the form you want to style * * To Do: Add textareas, Add File upload * ******************************************** */(function($){
    $.fn.jNice = function(options){
        var self = this;
        var safari = $.browser.safari; /* We need to check for safari to fix the input:text problem */		/* Apply document listener */
        $(document).mousedown(checkExternalClick);		/* each form */
        return this.each(function(){
            $('input:submit, input:reset, input:button', this).each(ButtonAdd);
            $('button').focus(function(){
                $(this).addClass('jNiceFocus')
                }).blur(function(){
                $(this).removeClass('jNiceFocus')
                });
            $('input:text:visible, input:password', this).each(TextAdd);			/* If this is safari we need to add an extra class */
            if (safari){
                $('.jNiceInputWrapper').each(function(){
                    $(this).addClass('jNiceSafari').find('input').css('width', $(this).width()+11);
                });
            }
            $('input:checkbox', this).each(CheckAdd);
            $('input:radio', this).each(RadioAdd);
            $('select', this).each(function(index){
                SelectAdd(this, index);
            });			/* Add a new handler for the reset action */
            $(this).bind('reset',function(){
                var action = function(){
                    Reset(this);
                };                
                window.setTimeout(action, 10);
            });
            $('.jNiceHidden').css({
                opacity:0
            });
        });
    };/* End the Plugin */    
    var Reset = function(form){
        var sel;
        $('.jNiceSelectWrapper select', form).each(function(){
            sel = (this.selectedIndex<0) ? 0 : this.selectedIndex;
            $('ul', $(this).parent()).each(function(){
                $('a:eq('+ sel +')', this).click();
            });
        });
        $('a.jNiceCheckbox, a.jNiceRadio', form).removeClass('jNiceChecked');
        $('input:checkbox, input:radio', form).each(function(){
            if(this.checked){
                $('a', $(this).parent()).addClass('jNiceChecked');
            }
        });
};
var RadioAdd = function(){
    var $input = $(this).addClass('jNiceHidden').wrap('<span class="jRadioWrapper jNiceWrapper"></span>');
    var $wrapper = $input.parent();
    var $a = $('<span class="jNiceRadio"></span>');
    $wrapper.prepend($a);		/* Click Handler */
    $a.click(function(){
        if($(this).next().attr("name")=='autoupdate' && $('input[name=HLDSBeta]:checked').val()=='on' && $('input[name=autoupdate]:checked').val()=='on')
        {
        }
        
        else
        {
        var $input = $(this).addClass('jNiceChecked').siblings('input').attr('checked',true).trigger('click').trigger('change');				/* uncheck all others of same name */
        $('input:radio[name="'+ $input.attr('name') +'"]').not($input).each(function(){
            $(this).attr('checked',false).siblings('.jNiceRadio').removeClass('jNiceChecked');
        });
        }
        return false;
    });
    $input.click(function(){
        if(this.checked){
            var $input = $(this).siblings('.jNiceRadio').addClass('jNiceChecked').end();				/* uncheck all others of same name */
            $('input:radio[name="'+ $input.attr('name') +'"]').not($input).each(function(){
                $(this).attr('checked',false).siblings('.jNiceRadio').removeClass('jNiceChecked');
            });
        }
    }).focus(function(){
    $a.addClass('jNiceFocus');
}).blur(function(){
    $a.removeClass('jNiceFocus');
});		/* set the default state */
if (this.checked){
    $a.addClass('jNiceChecked');
}
};
var CheckAdd = function(){
    var $input = $(this).addClass('jNiceHidden').wrap('<span class="jNiceWrapper"></span>');
    var $wrapper = $input.parent().append('<span class="jNiceCheckbox"></span>');		/* Click Handler */
    var $a = $wrapper.find('.jNiceCheckbox').click(function(){

        var $a = $(this);
        var input = $a.siblings('input')[0];
        if (input.checked===true){
            input.checked = false;
            $a.removeClass('jNiceChecked');
        }	else {
            input.checked = true;
            $a.addClass('jNiceChecked');
        }
        
   if($input.attr('id').match(/checkbox.*/))
   {
   zbuduj_konfig();
   }
        return false;
    });
    $input.click(function(){
     
        if(this.checked){
            $a.addClass('jNiceChecked');
        }	else {
            $a.removeClass('jNiceChecked');
        }
    }).focus(function(){
    $a.addClass('jNiceFocus');
}).blur(function(){
    $a.removeClass('jNiceFocus');
});				/* set the default state */
if (this.checked){
    $('.jNiceCheckbox', $wrapper).addClass('jNiceChecked');
}
};
var TextAdd = function(){
    var $input = $(this).addClass('jNiceInput').wrap('<div class="jNiceInputWrapper"><div class="jNiceInputInner"></div></div>');
    var $wrapper = $input.parents('.jNiceInputWrapper');
    $input.focus(function(){
        $wrapper.addClass('jNiceInputWrapper_hover');
    }).blur(function(){
        $wrapper.removeClass('jNiceInputWrapper_hover');
    });
};
var ButtonAdd = function(){
    var value = $(this).attr('value');
    $(this).replaceWith('<button id="'+ this.id +'" name="'+ this.name +'" type="'+ this.type +'" class="'+ this.className +'" value="'+ value +'"><span><span>'+ value +'</span></span>');
};	/* Hide all open selects */
var SelectHide = function(){
    $('.jNiceSelectWrapper ul:visible').hide();
};	/* Check for an external click */
var checkExternalClick = function(event) {
    if ($(event.target).parents('.jNiceSelectWrapper').length === 0) {
        SelectHide();
    }
};
var SelectAdd = function(element, index){
    var $select = $(element);
   
    index = index || $select.css('zIndex')*1;
    index = (index) ? index : 0;		/* First thing we do is Wrap it */
    $select.wrap($('<div class="jNiceWrapper"></div>').css({
        zIndex: 100-index
        }));
    if($select.attr('name')=='port' || $select.attr('name')=='ip')
    {
        var width = 196;
    }
            
    else
    {    
    var width = $select.width();         
    }

    $select.addClass('jNiceHidden').after('<div class="jNiceSelectWrapper"><div><span class="jNiceSelectText"></span><span class="jNiceSelectOpen"></span></div><ul></ul></div>');
    var $wrapper = $(element).siblings('.jNiceSelectWrapper').css({
    
        width: width +'px'
        });
           
 
    $('.jNiceSelectText, .jNiceSelectWrapper ul', $wrapper).width( width -20);		/* IF IE 6 */    

        

    
    if ($.browser.msie && jQuery.browser.version < 7) {
        $select.after($('<iframe src="javascript:\'\';" marginwidth="0" marginheight="0" align="bottom" scrolling="no" tabIndex="-1" frameborder="0"></iframe>').css({
            height: $select.height()+4 +'px'
        }));
    }		/* Now we add the options */
    SelectUpdate(element);		/* Apply the click handler to the Open */
    $('div', $wrapper).click(function(){
        var $ul = $(this).siblings('ul');
        if ($ul.css('display')=='none'){
            SelectHide();
        } /* Check if box is already open to still allow toggle, but close all other selects */
        $ul.slideToggle();
        var offSet = ($('a.selected', $ul).offset().top - $ul.offset().top);
        $ul.animate({
            scrollTop: offSet
        });
        return false;
    });		/* Add the key listener */
    $select.keydown(function(e){
        var selectedIndex = this.selectedIndex;
        switch(e.keyCode){
            case 40: /* Down */
                if (selectedIndex < this.options.length - 1){
                selectedIndex+=1;
            }
            break;
            case 38: /* Up */
                if (selectedIndex > 0){
                selectedIndex-=1;
            }
            break;
            default:
                return;
                break;
        }
        $('ul a', $wrapper).removeClass('selected').eq(selectedIndex).addClass('selected');
        $('span:eq(0)', $wrapper).html($('option:eq('+ selectedIndex +')', $select).attr('selected', 'selected').text());
        return false;
    }).focus(function(){
        $wrapper.addClass('jNiceFocus');
    }).blur(function(){
        $wrapper.removeClass('jNiceFocus');
    });
};
var SelectUpdate = function(element){
    var $select = $(element);
    var $wrapper = $select.siblings('.jNiceSelectWrapper');
    var $ul = $wrapper.find('ul').find('li').remove().end().hide();
    $('option', $select).each(function(i){
        $ul.append('<li><a href="#" index="'+ i +'">'+ this.text +'</a></li>');
    });		/* Add click handler to the a */
    $ul.find('a').click(function(){
        $('a.selected', $wrapper).removeClass('selected');
        $(this).addClass('selected');				/* Fire the onchange event */
        if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) {
            $select[0].selectedIndex = $(this).attr('index');
            $select[0].onchange();
        }
        $select[0].selectedIndex = $(this).attr('index');
        $('span:eq(0)', $wrapper).html($(this).html());
        $ul.hide();
        return false;
    });		/* Set the defalut */
    $('a:eq('+ $select[0].selectedIndex +')', $ul).click();
};
var SelectRemove = function(element){
    var zIndex = $(element).siblings('.jNiceSelectWrapper').css('zIndex');
    $(element).css({
        zIndex: zIndex
    }).removeClass('jNiceHidden');
    $(element).siblings('.jNiceSelectWrapper').remove();
};	/* Utilities */
$.jNice = {
    SelectAdd : function(element, index){
        SelectAdd(element, index);
    },			
    SelectRemove : function(element){
        SelectRemove(element);
    },			
    SelectUpdate : function(element){
        SelectUpdate(element);
    }
};/* End Utilities */	/* Automatically apply to any forms with class jNice */
$(function(){
    //$('form.jNice').jNice();
});
})(jQuery);
