﻿/*

 * UPDATED: 12.19.07

 *

 ******************************************** */

(function($){

	$.fn.jNice = function(options){

		var self = this;

		var safari = $.browser.safari; /* We need to check for safari to fix the input:text problem */

	

		/* 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.closest('div.jNiceInputWrapper');
				
				if($(this).attr('id')=='acp2'){
				  $wrapper.css("width", (parseInt($(this).width()) ? $(this).width() : 254)+10);
				  $wrapper.css("margin", '0 2px 0 0');
				}
				else if($(this).attr('id')=='acp0'){
				  $wrapper.css("width", (parseInt($(this).width()) ? $(this).width() : 254)+10);
				}
				else{
				 $wrapper.css("width", (parseInt($(this).width()) ? $(this).width() : 254)+10);
				}
				
				$input.focus(function(){

					$wrapper.addClass("jNiceInputWrapper_hover");

				}).blur(function(){

					$wrapper.removeClass("jNiceInputWrapper_hover");

				});
				
				

			};

			$('input:text, 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', parseInt($(this).width()) ? $(this).width()+11 : 261);});}

			

			/***************************

			  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);

            var $b = $a.siblings('input')[0];

						$b.checked = true;

            if ($b.onclick) $b.onclick();

						$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);

        if ($(this).attr('name') == 'id_cousine') {

          $("head").append("<link>");

          css = $("head").children(":last");

          css.attr({

            rel:  "stylesheet",

            type: "text/css",

            href: "/_excss.php"

          });

        }

				/* 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><span></span><a href="#" class="jNiceSelectOpen"></a></div><ul></ul>');

				var $ul = $('ul', $wrapper);

				/* Now we add the options */

				$('option', this).each(function(i){

					$ul.append('<li'+($(this).hasClass('ignore') ? ' class="ignore"' : '')+($(this).attr('rel') ? ' class="hd '+$(this).attr('rel')+'"' : '')+'><a href="#" index="'+ i +'"'+ ($(this).attr('rel') ? ' rel="'+$(this).attr('rel')+'"' : '')+'>'+ 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');	 

            if ($wrapper.attr('rel'))

            {

              $wrapper.parent().parent().removeClass($wrapper.attr('rel'));

              $wrapper.attr('rel', '');

            }

            if ($(this).attr('rel'))

            {

              $wrapper.parent().parent().addClass($(this).attr('rel'));

              $wrapper.attr('rel', $(this).attr('rel'));

            }

						/* 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('+ 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;

												}).prev().click(function(){$(this).next().click();});

		

		}); /* 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(){$('form.jNice').jNice();	});



})(jQuery);

				   



