
$(function(){
    $('select.custom').selectbox();
    $('input.custom').custominput();
    $('.date-pick').datePicker({autoFocusNextInput: true});
    $('.date-pick').dpSetOffset(-4, 0);
    $('.custombox').customboxes();
});

/* --- PLUGINS --- */
// selectbox
(function($){
    $.fn.selectbox = function(settings){
        this.each(function(){
            var sb = $(this);
            var sbWidth = this.offsetWidth;
            var sbOptions = $('option', sb);
            var sbSelected = $('option:selected', sb);
            
            var cbHTML = '<div class="select" style="width: '+sbWidth+'px;">';
            cbHTML += '<div class="title">'+sbSelected.text()+'</div>';
            cbHTML += '<div class="list"><ul>';
            $('option', sb).each(function(){
                var option = $(this);
                var li = '<li>'+$(this).text()+'</i></li>';
                cbHTML += li;
            });
            cbHTML += '</ul></div>';
            cbHTML += '<i class="arr"></i><i class="select-lt"></i><i class="select-rt"></i><i class="select-rb"></i><i class="select-lb"></i></div>';

            sb.hide().after(cbHTML);

            var cb = sb.next();
            var cbTitle = $('.title', cb);
            var cbList = $('.list', cb);
            var cbItems = $('li', cbList);
            var cbClicked = false;

            cb.click(function(){
                if (cbTitle.is(':visible')) {
                    cbTitle.hide();
                    cbList.show();
                    cb.addClass('select-drop');
                    cb.parent().css("z-index", "999");
                } else {
                    cbTitle.show();
                    cbList.hide();
                    cb.removeClass('select-drop');
                    cb.parent().css("z-index", "");
                }
                cbClicked = true;
            });

            cbItems.click(function(){
                var item = $(this);
                var index = cbItems.index(item);
                sb.val(sbOptions.eq(index).val());
                cbTitle.text(item.text());
                cb.parent().css("z-index", "");
            }).hover(
                function(){
                    $(this).addClass('hover');
                },
                function(){
                    $(this).removeClass('hover');
                }
            );

            $(document).click(function(){
                if (!cbClicked) {
                    cbTitle.show();
                    cbList.hide();
                    cb.removeClass('select-drop');
                    cb.parent().css("z-index", "");
                }
                cbClicked = false;
            });
        });
        return this;
    };
})(jQuery);

// input 
(function($){
    $.fn.custominput = function(settings){
        this.each(function(){
            var ciWidth = this.offsetWidth;
            ciHTML = '<i class="input-lt"></i><i class="input-rt"></i><i class="input-rb"></i><i class="input-lb"></i>';
            $(this).after(ciHTML);
            $(this).parent().css("width", ciWidth+"px");
        });
        return this;
    };
})(jQuery);

// checkboxes & radio
(function($){
    $.fn.customboxes = function(settings){
        this.each(function(){
            
            var curr = $(this);
            curr.addClass('custombox-set');
            var box = curr.children('input');
        		box.addClass('lost');
        		cn = box.attr('type');
        		cn += (box.attr('checked')) ? '-on' : '-off';
        		curr.addClass(cn);
            
            if(box.attr('type') == 'checkbox'){
                box.click(function(){
                    var label = $(this).parent();
                    label.toggleClass('checkbox-on').toggleClass('checkbox-off');
                });
            }
            
            if(box.attr('type') == 'radio'){
                box.click(function(){
                    var label = $(this).parent();
                    var prinp = $(this);
                    label.parents('form').find('input').each(function(){
                        if($(this).attr('name') == prinp.attr('name') && $(this).parent().hasClass('radio-on')){
                            $(this).parent().removeClass('radio-on').addClass('radio-off');
                        }
                    });
                    label.removeClass('radio-off').addClass('radio-on');
                });
            }
        });
        return this;
    };
})(jQuery);

