(function($){$.fn.richFormElement=function(options){var defaults={selectVisOptions:6,selectOptionBorder:0,selectTextbarBorder:0,selectAutoWide:false,customWrapName:""};var opt=$.extend(defaults,options);var test=0;var wrapName="";return this.each(function(){if($(this).css('display')=='none'){return;}
if($(this).attr('type')=='radio')
{if(opt.customWrapName!=""){wrapName=opt.customWrapName;}else{wrapName="richFormRadio";}
$(this).wrap('<div class="'+wrapName+'" />');var radioGroup=$(this).attr('name');$.fn.richFormElement.updateRadioGroup(radioGroup);$(this).hide();$(this).parent().append('<a class="htmlControl">html control</a>');$(this).parent().find('.htmlControl').click(function(){var formElement=$(this).parent().find('input');$(formElement).trigger('click');var radioGroup=$(formElement).attr('name');$.fn.richFormElement.updateRadioGroup(radioGroup);});$(this).change(function(){var radioGroup=$(this).attr('name');$.fn.richFormElement.updateRadioGroup(radioGroup);});var inputId=$(this).attr('id');$('label[for='+inputId+']').click(function(){var inputId=$(this).attr('for');var radioGroup=$('input[id='+inputId+']').attr('name');$('input[id='+inputId+']').attr('checked',true);$.fn.richFormElement.updateRadioGroup(radioGroup);});}
else if($(this).attr('type')=='checkbox')
{if(opt.customWrapName!=""){wrapName=opt.customWrapName;}else{wrapName="richFormCheckbox";}
$(this).wrap('<div class="'+wrapName+'" />');$(this).parent().append('<a class="htmlControl">html control</a>');$(this).parent().find('.htmlControl').click(function(){var formElement=$(this).parent().find('input');$(formElement).trigger('click');if($(formElement).attr('checked')==true){$(this).removeClass('unchecked').addClass('checked');}else{$(this).removeClass('checked').addClass('unchecked');}});if($(this).attr('checked')==true){$(this).parent().find('.htmlControl').addClass('checked');}
$(this).hide();}
else if($(this).attr('type')=='select-one'||$(this).attr('type')=='select-multiple')
{var buttonHtml='<a class="button"></a>';if(opt.customWrapName!=""){wrapName=opt.customWrapName;}else{if($(this).attr('type')=='select-one'){wrapName="richFormSelectOne";}else{wrapName="richFormSelectMultiple";}}
$(this).wrap('<div class="'+wrapName+'" />');$(this).parent().append('<div class="textbar"><div class="text"></div>'+buttonHtml+'</div><ul class="options-container"></ul>');$(this).find('option').each(function(){var newText=$.fn.richFormElement.trim($(this).text());var selClass="";if($(this).attr("selected")==true){selClass="class=\"selected\" ";$(this).parent().parent().find('.text').html(newText);}
$(this).parent().parent().find('.options-container').append('<li '+selClass+'val="'+$(this).val()+'">'+newText+'</li>');});$(this).parent().find('.options-container li').each(function(){$(this).hover(function(){$(this).addClass('hover');},function(){$(this).removeClass('hover');});});if($(this).find('option').size()>opt.selectVisOptions){var boxHeight=($(this).parent().find('.options-container li').height()+opt.selectOptionBorder)*opt.selectVisOptions;$(this).parent().find('.options-container').css('height',boxHeight+'px');}
var boxWidth=$(this).parent().find('.textbar').width()+opt.selectTextbarBorder;if(opt.selectAutoWide){if($(this).parent().find('.options-container').width()<boxWidth){$(this).parent().find('.options-container').css('width',boxWidth+'px');}}
else
{$(this).parent().find('.options-container').css('width',boxWidth+'px');}
$(this).parent().find('.text').css('width',(boxWidth-39)+'px');$(this).parent().find('.options-container').hide(1);$(this).parent().find('.button').bind('showHide',function(event){if(!$(this).hasClass('menuOpen')){$.fn.richFormElement.closeSelectBoxes();$(this).addClass('menuOpen');$(this).parent().parent().find('.options-container').show(1);$('body').one('click',function(){$.fn.richFormElement.closeSelectBoxes();});event.stopPropagation();}else{$(this).removeClass('menuOpen');$(this).parent().parent().find('.options-container').hide(1);}});$(this).parent().find('.textbar').click(function(event){$(this).parent().find('.button').trigger('showHide');event.stopPropagation();});$(this).parent().find('.options-container li').click(function(event){var val=$(this).attr('val');var text=$(this).text();if(!$(this).parent().parent().hasClass('richFormSelectMultiple')){$(this).parent().find('li[class=selected]').removeClass('selected');$(this).addClass('selected');$(this).parent().parent().find('select option').each(function(){if($(this).attr('value')==val){$(this).attr("selected","selected");$(this).parent().parent().find('.text').html(text);}});$(this).parent().parent().find('select').trigger('change');}else{var text="";event.stopPropagation();if($(this).hasClass('selected')){$(this).removeClass('selected');$(this).parent().parent().find('select option').each(function(){if($(this).attr('value')==val){$(this).attr("selected",false);}
if($(this).attr("selected")==true){text+=$.fn.richFormElement.trim($(this).text())+', ';}});}else{$(this).addClass('selected');$(this).parent().parent().find('select option').each(function(){if($(this).attr('value')==val){$(this).attr("selected",true);}
if($(this).attr("selected")==true){text+=$.fn.richFormElement.trim($(this).text())+', ';}});}
$(this).parent().parent().find('.text').html(text);}});$(this).hide();}
else if($(this).attr('type')=='button'||$(this).attr('href')!="")
{if(opt.customWrapName!=""){wrapName=opt.customWrapName;}else{wrapName="richFormButton";}
$(this).wrap('<div class="'+wrapName+'" />');var wrap=$(this).parent();$(wrap).mouseover(function(){$(this).addClass('buttonHover');});$(wrap).mouseout(function(){$(this).removeClass('buttonHover');});}
else if($(this).attr('type')=='text')
{if(opt.customWrapName!=""){wrapName=opt.customWrapName;}else{wrapName="richFormInput";}
$(this).wrap('<div class="'+wrapName+'" />');var wrap=$(this).parent();$(wrap).hover(function(){$(this).addClass('hover');},function(){$(this).removeClass('hover');});$(this).focus(function(){$(this).parent().addClass('focus');});$(this).blur(function(){$(this).parent().removeClass('focus');});}
else
{}});}
$.fn.richFormElement.updateRadioGroup=function(radioGroup){$('input[name*='+radioGroup+']').each(function(){if($(this).attr("checked"))
{$(this).parent().find('.htmlControl').removeClass('unchecked').addClass('checked');}
else
{$(this).parent().find('.htmlControl').removeClass('checked').addClass('unchecked');}});}
$.fn.richFormElement.closeSelectBoxes=function(){$('.richFormSelectOne .button, .richFormSelectMultiple .button').each(function(){$(this).removeClass('menuOpen');});$('.richFormSelectOne .options-container, .richFormSelectMultiple .options-container').each(function(){$(this).hide(1);});}
$.fn.richFormElement.trim=function(text){return text.replace(/^\s+|\s+$/g,'');}})(jQuery);
