var $j = jQuery.noConflict(); 
(function($j)  // secure $j jQuery alias
{
/*******************************************************************************************/	
// jquery.tak.createcustomselectbox.js - rev 1
// Copyright (c) 2009, TAK! Design (http://www.taktak.net)
// Liscensed under the MIT License (MIT-LICENSE.txt)
// http://www.opensource.org/licenses/mit-license.php
// Created: 2009-07-14 | Updated: 2009-11-20
// Author: Chris Lind
/*******************************************************************************************/
// Events: createCustomSelectBox
/*******************************************************************************************/

	// jquery method
    $j.fn.createCustomSelectBox = function(options) 
	{
		//default parameters
        var defaults = 
		{
			alternateRows: true, // True: li-classes alternates between .primary and .secondary classes, false: no specific li-class
			animationIn: {height:"show"}, // Animation in
			animationOut: {height:"hide"}, // Animation out
	       	hideFirstItem: true, // Hides the first li 
			ulClass: "jquery-tak-selectbox", // Default ul-class
			sort: "none" // "none","asc" and "desc"
        };

        var settings = $j.extend(defaults, options); //replaces defaults with any parameters passed on
		
		var newHTML = "<ul class=\""+settings.ulClass+"\">";
		
		var alternateClass = "primary";
		
		this.children().each(
			function(i)
			{
				if(settings.hideFirstItem && i == 0)
				{
					newHTML += "<li class=\"first hidden\"><a href=\"javascript:void(0);\">"+this.text+"</a></li>";
				}
				else if(i == 0)
				{
					newHTML += "<li class=\"first\"><a href=\"javascript:void(0);\">"+this.text+"</a></li>";
					
					if(settings.alternateRows)
					{
						if(alternateClass == "primary")
							alternateClass = "secondary";
						else
							alternateClass = "primary";
					}
					
					newHTML += "<li class=\"" + alternateClass + "\"><a class=\"jquery-tak-option\" href=\"#\" id=\"" + this["value"] + "\">" + this.text + "</a></li>";
				}
				else
				{
					if(settings.alternateRows)
					{
						if(alternateClass == "primary")
							alternateClass = "secondary";
						else
							alternateClass = "primary";
					}

					newHTML += "<li class=\"" + alternateClass + "\"><a class=\"jquery-tak-option\" href=\"#\" id=\"" + this["value"] + "\">" + this.text + "</a></li>";
				}
			}
		);
		
		this.replaceWith(newHTML);
		
		$j("ul."+settings.ulClass+" li.first a").toggle(toggleDropDown,toggleDropDown);
		$j("ul."+settings.ulClass+" li:first a").attr('href','javascript:void(0)');
		
		var thisReference = $j("ul."+settings.ulClass+" li.first a");
		
		function toggleDropDown()
		{
			if($j(this).parent("li").parent("ul").children("li").is(':hidden'))
			{
				$j(this).parent("li").parent("ul").children("li").slideDown();
		
				$j(this).parent("li").parent("ul").children("li").bind("click", function(e) 
				{
					//alert(thisReference.parent("li").html()+' turns into '+$j(this).html())
					thisReference.parent("li").html($j(this).html());
					thisReference.parent("li").parent("ul").children("li").unbind("click");
					resetDropDown();
				});
		
				$j("body").bind("click", resetDropDown);
			}
			else
			{
				$j("body").unbind("click");
				$j(this).parent("li").parent("ul").children("li:not(:first)").slideUp();	
			}
		}
		
		function resetDropDown()
		{
			$j("body").unbind("click");
			$j("ul."+settings.ulClass+" li.first a").parent("li").parent("ul").children("li:not(:first)").slideUp();
			$j("ul."+settings.ulClass+" li.first a").trigger("toggle");
			$j("ul."+settings.ulClass+" li.first a").toggle(toggleDropDown,toggleDropDown);
			$j("ul."+settings.ulClass+" li:first a").attr('href','javascript:void(0)');
			thisReference = $j("ul."+settings.ulClass+" li.first a");
		}
    };
})(jQuery);