// JavaScript Document

$(document).ready(function() {
	formlicious_init();
});

function formlicious_init(){
	
	if($("form.formlicious").length>0){
		if($("form.formlicious input[type=text]").length>0){
			$("form.formlicious input[type=text]").each(function(){
				init_inputText(this);
			});
		}
		if($("form.formlicious textarea").length>0){
			$("form.formlicious textarea").each(function(){
				init_textarea(this);
			});
		}
		if($("form.formlicious input[type=radio]").length>0){
			$("form.formlicious input[type=radio]").each(function(){
				init_radioButtons(this);
			});
		}
		if($("form.formlicious input[type=checkbox]").length>0){
			$("form.formlicious input[type=checkbox]").each(function(){
				init_checkboxButtons(this);
			});
		}
		if($("form.formlicious input[type=checkbox]").length>0){
			$("form.formlicious input[type=checkbox]").each(function(){
			});
		}
		if($("form.formlicious select").length>0){
			$("form.formlicious select").each(function(){
				init_selectBox(this);
			});
		}
		if($("form.formlicious input[type=submit]").length>0){
			$("form.formlicious input[type=submit]").each(function(){
				init_inputSubmit(this);
			});
		}
	}
	
	if($("input[type=text].formlicious").length>0){
		$("input[type=text].formlicious").each(function(){
			init_inputText(this);
		});
	}
	if($("textarea.formlicious").length>0){
		$("textarea.formlicious").each(function(){
			init_textarea(this);
		});
	}
	if($("input[type=radio].formlicious").length>0){
		$("input[type=radio].formlicious").each(function(){
			init_radioButtons(this);
		});
	}
	if($("input[type=checkbox].formlicious").length>0){
		$("input[type=checkbox].formlicious").each(function(){
			init_checkboxButtons(this);
		});
	}
	if($("input[type=checkbox].formlicious").length>0){
		
	}
	if($("select.formlicious").length>0){
		$("select.formlicious").each(function(){
			init_selectBox(this);
		});
	}
	if($("input[type=submit].formlicious").length>0){
		$("input[type=submit].formlicious").each(function(){
			init_inputSubmit(this);
		});
	}
}

function init_inputText(element){
	if($(element).parents(".frmlcs_block").length<=0){
		$(element).wrap('<span class="objText" />');
		$(element).parents(".objText").wrap('<span class="frmlcs_block" />');
		$(element).width($(element).width()-(($(element).outerWidth(true)-$(element).width())));
	}
	$(element).focusin(function(){
		$(element).parents(".objText").addClass("objTextFocus");
	});
	$(element).focusout(function(){
		$(element).parents(".objText").removeClass("objTextFocus");
	});
}

function init_inputSubmit(element){
	if($(element).parents(".frmlcs_block").length<=0){
		$(element).wrap('<span class="objSubmit" />');
		$(element).parents(".objSubmit").wrap('<span class="frmlcs_block" />');
		$("<a href='javascript:;'>"+$(element).val()+"</a>").appendTo($(element).parents(".objSubmit"));
		$(element).css({"width":"1px","height":"1px","position":"absolute"});
	}
	$(element).unbind("focusin");
	$(element).focusin(function(){
		$(element).parents(".objSubmit").addClass("objSubmitFocus");
	});
	$(element).unbind("focusout");
	$(element).focusout(function(){
		$(element).parents(".objSubmit").removeClass("objSubmitFocus");
	});
	$(element).parents(".objSubmit").find("a").click(function(){
		$(this).trigger("submit");
	});
}

function init_textarea(element){
	if($(element).parents(".frmlcs_block").length<=0){
		$(element).wrap('<span class="objTextarea" />');
		$(element).parents(".objTextarea").wrap('<span class="frmlcs_block" />');
		$(element).parents(".frmlcs_block").height($(element).height());
		$(element).width($(element).width()-(($(element).outerWidth(true)-$(element).width())));
		$(element).css("maxWidth", $(element).width())
		$(element).height($(element).height()-(($(element).innerHeight()-$(element).height())));
		$(element).css("maxHeight", $(element).height())
	}
	$(element).focusin(function(){
		$(element).parents(".objTextarea").addClass("objTextareaFocus");
	});
	$(element).focusout(function(){
		$(element).parents(".objTextarea").removeClass("objTextareaFocus");
	});
}


function init_radioButtons(element){
	if($(element).parents(".frmlcs_block").length<=0){
		$(element).hide();
		$(element).wrap('<span class="frmlcs_block" />');
		$('<a href="javascript:;"></a>').appendTo($(element).parents(".frmlcs_block"));
		if($(element).attr("checked")){
			$(element).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(element).parents(".frmlcs_block").find("a:first").addClass("objRadioOnFocusOut");
		}else{
			$(element).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(element).parents(".frmlcs_block").find("a:first").addClass("objRadioOffFocusOut");
		}
	}
	$(element).parents(".frmlcs_block").find("a:first").unbind("click");
	$(element).parents(".frmlcs_block").find("a:first").click(function(){
		if(!$(this).parents(".frmlcs_block").find("input[type=radio]").attr("checked")){
			$("input[name="+$(this).parents(".frmlcs_block").find("input[type=radio]").attr("name")+"]:radio").parents(".frmlcs_block").find("a:first").addClass("objRadioOffFocusOut");
			$(this).parents(".frmlcs_block").find("input[type=radio]").attr("checked","checked");
			$(this).parents(".frmlcs_block").find("input[type=radio]").trigger("change");
			$(this).trigger("focusin");
		}
		formlicious_init();
	});
	$(element).parents(".frmlcs_block").find("a:first").unbind("focusin");
	$(element).parents(".frmlcs_block").find("a:first").focusin(function(){
		if($(this).parents(".frmlcs_block").find("input[type=radio]").attr("checked")){
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objRadioOnFocusIn");
		}else{
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objRadioOffFocusIn");
		}
		
	});
	
	$(element).parents(".frmlcs_block").find("a:first").unbind("focusout");
	$(element).parents(".frmlcs_block").find("a:first").focusout(function(){
		if($(this).parents(".frmlcs_block").find("input[type=radio]").attr("checked")){
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objRadioOnFocusOut");
		}else{
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objRadioOffFocusOut");
		}
	});
	
	$(element).parents(".frmlcs_block").find("a:first").unbind("keydown");
	$(element).parents(".frmlcs_block").find("a:first").keydown(function(event){	
		if(event.keyCode==32){
			$(this).trigger("click");
			event.preventDefault();
			//formlicious_init();
		}
	});
}

function init_checkboxButtons(element){
	if($(element).parents(".frmlcs_block").length<=0){
		$(element).hide();
		$(element).wrap('<span class="frmlcs_block" />');
		$('<a href="javascript:;"></a>').appendTo($(element).parents(".frmlcs_block"));
		if($(element).attr("checked")){
			$(element).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(element).parents(".frmlcs_block").find("a:first").addClass("objCheckboxOnFocusOut");
		}else{
			$(element).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(element).parents(".frmlcs_block").find("a:first").addClass("objCheckboxOffFocusOut");
		}
	}
	$(element).parents(".frmlcs_block").find("a:first").unbind("click");
	$(element).parents(".frmlcs_block").find("a:first").click(function(){
		$("input[name="+$(this).parents(".frmlcs_block").find("input[type=checkbox]").attr("name")+"]:checkbox").parents(".frmlcs_block").find("a:first").trigger("focusout");
		if($(this).parents(".frmlcs_block").find("input[type=checkbox]").attr("checked")){
			$(this).parents(".frmlcs_block").find("input[type=checkbox]").removeAttr("checked");
			$(this).parents(".frmlcs_block").find("input[type=checkbox]").trigger("change");
			$(this).trigger("focusin");			
		}else{
			$(this).parents(".frmlcs_block").find("input[type=checkbox]").attr("checked","checked");
			$(this).parents(".frmlcs_block").find("input[type=checkbox]").trigger("change");
			$(this).trigger("focusin");
		}
		formlicious_init();
	});
	$(element).parents(".frmlcs_block").find("a:first").unbind("focusin");
	$(element).parents(".frmlcs_block").find("a:first").focusin(function(){
		if($(this).parents(".frmlcs_block").find("input[type=checkbox]").attr("checked")){
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objCheckboxOnFocusIn");
		}else{
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objCheckboxOffFocusIn");
		}
		
	});
	
	$(element).parents(".frmlcs_block").find("a:first").unbind("focusout");
	$(element).parents(".frmlcs_block").find("a:first").focusout(function(){
		if($(this).parents(".frmlcs_block").find("input[type=checkbox]").attr("checked")){
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objCheckboxOnFocusOut");
		}else{
			$(this).parents(".frmlcs_block").find("a:first").removeAttr("class");
			$(this).parents(".frmlcs_block").find("a:first").addClass("objCheckboxOffFocusOut");
		}
	});
	
	$(element).parents(".frmlcs_block").find("a:first").unbind("keydown");
	$(element).parents(".frmlcs_block").find("a:first").keydown(function(event){	
		if(event.keyCode==32){
			$(this).trigger("click");
			event.preventDefault();
		}
	});
}


function init_selectBox(element){
	if($(element).parents(".frmlcs_block").length<=0){
		$(element).hide();
		$(element).wrap('<span class="frmlcs_block" />');
		$(element).parents(".frmlcs_block").data("type","select");
		$('<span class="objSelect"><a href="javascript:;"><span></span></a></span><div class="formliciousscroll"><div class="scrollbar"><div class="track"><div class="thumb"><div class="end"></div></div></div></div><div class="viewport"><div class="overview"><ul></ul></div></div></div>').appendTo($(element).parents(".frmlcs_block"));
		$(element).parents(".frmlcs_block").find(".objSelect").width($(element).width());
	}
	
	$(element).parents(".frmlcs_block").data("status","closed");
	$(element).parents(".frmlcs_block").find(".objSelect a span").html($(element).find("option:selected").html());
	
	$(element).parents(".frmlcs_block").find(".objSelect").unbind("click");
	$(element).parents(".frmlcs_block").find(".objSelect").click(function(){
		$(this).parents(".frmlcs_block").find(".objSelect a").focus();
		if($(this).parents(".frmlcs_block").data("status") == "closed"){
			$(this).parents(".frmlcs_block").data("status","open");
			$(this).parents(".frmlcs_block").find("ul").empty().width(($(this).parents(".frmlcs_block").find("select").width()));
			$(this).parents(".frmlcs_block").find(".scrollbar").css("margin-left",$(this).parents(".frmlcs_block").find("select").width()-10)
			$(this).parents(".frmlcs_block").find(".formliciousscroll").width($(this).parents(".frmlcs_block").find("select").width());
			$(this).parents(".frmlcs_block").find(".viewport").width(($(this).parents(".frmlcs_block").find("select").width()))
			for(i=0;i<$(this).parents(".frmlcs_block").find("option").length;i++){
				$("<li>"+$(this).parents(".frmlcs_block").find("option:eq("+i+")").html()+"</li>").appendTo($(this).parents(".frmlcs_block").find("ul")).click(function(){
					$(this).parents(".frmlcs_block").find("select option:eq("+$(this).index()+")").attr("selected", "selected").trigger("change");
					$(this).parents(".frmlcs_block").find(".objSelect span").empty().html($(this).html());
					$(this).parents(".frmlcs_block").find(".objSelect a").trigger("focusout");
				})
			}
			
			
			$(this).parents(".frmlcs_block").find("ul li").unbind("mouseenter");
			$(this).parents(".frmlcs_block").find("ul li").unbind("mouseleave");
			$(this).parents(".frmlcs_block").find("ul li").mouseenter(function(){
				$(this).addClass("atual");
			}).mouseleave(function(){
				$(this).removeClass("atual");
			});
			$(this).parents(".frmlcs_block").find(".formliciousscroll").show();
			if($(this).parents(".frmlcs_block").find(".overview").height() < $(this).parents(".frmlcs_block").find(".viewport").height()){
				$(this).parents(".frmlcs_block").find(".viewport").height($(this).parents(".frmlcs_block").find(".overview").height());
				$(this).parents(".frmlcs_block").find(".select").width($(this).parents(".frmlcs_block").find(".formliciousscroll").width());
				$(this).parents(".frmlcs_block").find(".viewport").width($(this).parents(".frmlcs_block").find(".formliciousscroll").width());
			}
			$(this).parents(".frmlcs_block").find(".formliciousscroll").tinyscrollbar({sizethumb: 44});
		}else{
			$(this).parents(".frmlcs_block").data("status","closed");
			$(this).parents(".frmlcs_block").find(".formliciousscroll").hide();
		}
	});
	
	
	$(element).parents(".frmlcs_block").find(".objSelect a").unbind("focusin");
	$(element).parents(".frmlcs_block").find(".objSelect a").focusin(function(){
		$(this).parents(".objSelect").addClass("objSelectFocus");
	});
	$(element).parents(".frmlcs_block").find(".objSelect a").unbind("focusout");
	$(element).parents(".frmlcs_block").find(".objSelect a").focusout(function(e){
		$(this).parents(".objSelect").removeClass("objSelectFocus");
		$(this).parents(".frmlcs_block").find(".formliciousscroll").fadeOut(200);
		$(this).parents(".frmlcs_block").data("status","closed");
	});
	
	$(element).parents(".frmlcs_block").unbind("keydown");
	$(element).parents(".frmlcs_block").keydown(function(event){
		if(event.keyCode==32){
			$(this).find(".objSelect").trigger("click");
			event.preventDefault();
		}else{
			if($(this).find("ul li").length==0){
				for(i=0;i<$(this).find("select option").length;i++){
					$("<li>"+$(this).parents(".frmlcs_block").find("select option:eq("+i+")").html()+"</li>").appendTo($(this).find("ul"));
				}
			}
			$(this).find("ul li:eq("+$(this).find("select option:selected").index()+")").addClass("atual");
			if(event.keyCode == 38){
				if($(this).find("ul li.atual").length>0){
					if(!$(this).find("ul li:first").hasClass("atual")){
						$(this).find("ul li.atual").removeClass("atual").prev().addClass("atual");
					}
				}else{
					$(this).find("ul li:last").addClass("atual");
				}
				$(this).find("select option:eq("+$(this).find("ul li.atual").index()+")").attr("selected", "selected").trigger("change");
				$(this).find(".objSelect span").empty().html($(this).find("ul li.atual").html());
				event.preventDefault();
			}else if(event.keyCode == 40){
				if($(this).find("ul li.atual").length>0){
					if(!$(this).find("ul li:last").hasClass("atual")){
						$(this).find("ul li.atual").removeClass("atual").next().addClass("atual");
					}
				}else{
					$(this).find("ul li:first").addClass("atual");
				}
				$(this).find("select option:eq("+$(this).find("ul li.atual").index()+")").attr("selected", "selected").trigger("change");
				$(this).find(".objSelect span").empty().html($(this).find("ul li.atual").html());
				event.preventDefault();
			}
		}
	});
}
