// Author: Mehmet Hazar Artuner
// Version: 1.5
// Date: 02.11.2010 - 15:33
// www.hazarartuner.com

jQuery.fn.languagebox = function(options)
{
	var languages = new Array();
	languages = [
	                 {"id":"en","name":"English"},
	                 {"id":"ru","name":"Russian"},
	                 {"id":"es","name":"Spanish"},
	                 {"id":"fr","name":"French"},
	                 {"id":"ar","name":"Arabic"},
	                 {"id":"bg","name":"Bulgarian"},
	                 {"id":"it","name":"Italian"},
	                 {"id":"de","name":"Deutsch"},
	                 {"id":"pt","name":"Portuguese"},
	                 {"id":"nl","name":"Dutch"},
	                 {"id":"jp","name":"Japanese"},
	                 {"id":"hu","name":"Hungarian"},
	                 {"id":"ro","name":"Romanian"},
	                 {"id":"sr","name":"Serbian"},
	                 {"id":"pl","name":"Polish"},
	                 {"id":"cz","name":"Czech"},
	                 {"id":"tr","name":"Türkçe"}       
				];
	
	var defaultOptions = {
			"languages":["tr","en","de"],
			"selectedFunc":function(){},
			"speed":500,
			"activeLanguage" : "tr"
	};
	
	var languageSliderHeight = 0;
	var languageBox;
	var child;
	var triggerSelectedFunc = false;
	
	
	return this.each(function(){
		options = $.extend({},defaultOptions,options);
		
		$(this).css({
			"width":"126px",
			"height":"24px",
			"position":"relative"
		});
		
		$(this).html(setupLanguageBox(options.languages));
		
		$(this).bind("selectedFunc",options.selectedFunc);
		languageBox = $(this);
		setupFunctions();
		
	});
	
	function setupLanguageBox(selectedLanguages)
	{
		var inner = "";

		for(var i=0; i<languages.length; i++)
		{
			if(options.activeLanguage == languages[i].id)
			{
				inner += '<label class="selectedLanguage"><span class="selectedLanguageFlag ' + languages[i].id + '">' + languages[i].name + '</span></label>';
			}
		}
		
		inner += '<span class="button"></span>';
		inner += '<div class="languageSliderOuter">';
		inner += '<div class="languageSlider_center">';
		inner += '<div class="languageSlider_top">';
		inner += '<ul>';
		
		languageSliderHeight = (selectedLanguages.length * 24);
		if($.browser.msie)
		{
			languageSliderHeight = languageSliderHeight + (selectedLanguages.length * 3);
		}
		
		
		for(var i=0; i<selectedLanguages.length; i++)
		{
			for(var j=0; j<languages.length; j++)
			{
				if(selectedLanguages[i] == languages[j].id)
				{
					inner += '<li><label class=' + languages[j].id + ' language=' + languages[j].id + '>'+ languages[j].name + '</label></li>';
				}
			}
		}
		
		inner += '</ul>';
		inner += '</div>';
		inner += '</div>';
		inner += '</div>';
		
		return inner;
	}

	function setupFunctions()
	{
		languageBox.find(".languageSlider_top ul li:last").css({"background-image":"url()"});
		
		languageBox.find(".button,.selectedLanguage").click(function()
			{
				if(languageBox.find(".languageSliderOuter").height() <= 0)
					languageBox.find(".languageSliderOuter").animate({"height":languageSliderHeight,"padding-bottom":"4px"},options.speed);
			}
		);

		languageBox.find(".languageSlider_top ul li label").click(function()
		{
			triggerSelectedFunc = true;
			languageBox.find(".selectedLanguageFlag").attr("class","selectedLanguageFlag " + $(this).attr("language"));
			languageBox.find(".selectedLanguageFlag").html($(this).html());
			languageBox.attr("language",$(this).attr("language"));
		});
		
		$(document).mouseup(function(){
			if(languageBox.find(".languageSliderOuter").height() > 0)
				languageBox.find(".languageSliderOuter").animate({"height":"0px","padding-bottom":"0px"},options.speed,function(){
					if(triggerSelectedFunc)
						languageBox.trigger("selectedFunc");
					
					triggerSelectedFunc = false;
				});
		});
	}
}






