﻿/* * UPDATED: 12.19.07 * * jNice * by Sean Mooney (sean@whitespace-creative.com)  * * 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 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 */
        var _ie = $.browser.msie;

        /* each form */
        this.each(function() {
            /***************************			  Buttons		
            ***************************/

            /*
            var setButton = function() {
            $(this).replaceWith('<button id="' + this.id + '" name="' + this.name + '" type="' + this.type + '" class="' + this.className + '"><span><span>' + $(this).attr('value') + '</span></span>');
            };
            $('input:submit, input:reset', this).each(setButton);
            
            
            */

            /***************************			  Text Fields 			 ***************************/

            /*
            var setText = function() {
            var $input = $(this);
            $input.addClass("jNiceInput").wrap('<div class="jNiceInputWrapper"><div class="jNiceInputInner"><div></div></div></div>');
            var $wrapper = $input.parents('div.jNiceInputWrapper');
            $wrapper.css("width", $(this).width() + 10);
            $input.focus(function() {
            $wrapper.addClass("jNiceInputWrapper_hover");
            }).blur(function() {
            $wrapper.removeClass("jNiceInputWrapper_hover");
            });
            };
            $('input:text:visible, input:password', this).each(setText);
            */
            /* 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); }); }
            /***************************			  Check Boxes 			 ***************************/
            $('input:checkbox', this).each(function() {
                $(this).addClass('jNiceHidden').wrap('<span></span>');
                var $wrapper = $(this).parent();
                $wrapper.prepend('<a href="#" class="jNiceCheckbox"></a>');
                /* Click Handler */
                $(this).siblings('a.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');
                    }
                    return false;
                });
                /* set the default state */
                if (this.checked) { $('a.jNiceCheckbox', $wrapper).addClass('jNiceChecked'); }
            });
            /***************************			  Radios 			 ***************************/
            $('input:radio', this).each(function() {
                $input = $(this);
                $input.addClass('jNiceHidden').wrap('<span class="jRadioWrapper"></span>');
                var $wrapper = $input.parent();
                $wrapper.prepend('<a href="#" class="jNiceRadio" rel="' + this.name + '"></a>');
                /* Click Handler */
                $('a.jNiceRadio', $wrapper).click(function() {
                    var $a = $(this);
                    $a.siblings('input')[0].checked = true;
                    $a.addClass('jNiceChecked');
                    /* uncheck all others of same name */
                    $('a[rel="' + $a.attr('rel') + '"]').not($a).each(function() {
                        $(this).removeClass('jNiceChecked').siblings('input')[0].checked = false;
                    });
                    return false;
                });
                /* set the default state */
                if (this.checked) { $('a.jNiceRadio', $wrapper).addClass('jNiceChecked'); }
            });
            /***************************			  Selects 			 ***************************/
            $('select', this).each(function(index) {
                var $select = $(this);
                /* First thing we do is Wrap it */
                $(this).addClass('jNiceHidden').wrap('<div class="jNiceSelectWrapper"></div>');
                var $wrapper = $(this).parent().css({ zIndex: 100 - index });
                /* Now add the html for the select */
                $wrapper.prepend('<div><a href="#" class="jNiceSelectOpen"></a><a href="#" class="jNiceSelectOpen"></a></div><ul></ul>');
                var $ul = $('ul', $wrapper);

                if (_ie)
                    $ul.css("height", "auto");

                /* Now we add the options */
                $('option', this).each(function(i) {
                    $ul.append('<li><a href="#" index="' + i + '">' + this.text + '</a></li>');
                });
                /* Hide the ul and add click handler to the a */
                $ul.hide().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');
                    $('a:eq(0)', $wrapper).html($(this).html());
                    $ul.hide();
                    return false;
                });
                /* Set the defalut */
                $('a:eq(' + this.selectedIndex + ')', $ul).click();
            }); /* End select each */
            
            
            
            /* Apply the click handler to the Open */
            $('a.jNiceSelectOpen', this).click(function() {
                var $ul = $(this).parent().siblings('ul');
                if ($ul.css('display') == 'none') { hideSelect(); } /* 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;
            });
        }); /* End Form each */
        /* Hide all open selects */
        var hideSelect = function() {
            $('.jNiceSelectWrapper ul:visible').hide();
        };
        /* Check for an external click */
        var checkExternalClick = function(event) {
            if ($(event.target).parents('.jNiceSelectWrapper').length === 0) { hideSelect(); }
        };
        /* Apply document listener */
        $(document).mousedown(checkExternalClick);
        /* Add a new handler for the reset action */
        var jReset = function(f) {
            var sel;
            $('.jNiceSelectWrapper select', f).each(function() { sel = (this.selectedIndex < 0) ? 0 : this.selectedIndex; $('ul', $(this).parent()).each(function() { $('a:eq(' + sel + ')', this).click(); }); });
            $('a.jNiceCheckbox, a.jNiceRadio', f).removeClass('jNiceChecked');
            $('input:checkbox, input:radio', f).each(function() { if (this.checked) { $('a', $(this).parent()).addClass('jNiceChecked'); } });
        };
        this.bind('reset', function() { var action = function() { jReset(this); }; window.setTimeout(action, 10); });
    }; /* End the Plugin */
    /* Automatically apply to any forms with class jNice */
    $(function() { $('div.jNice').jNice(); });
})(jQuery);function OpenLink(_link) {
        if (_link!='') {
                window.open(_link, "", "", "_blank");
        }
}; 				   
