/**
 * Creates a custom form select type element based on the elements passed
 * @author chris nasr
 * @copyright FUEL for the FIRE (free for non-commercial use)
 * @version 1.0
 * @date 2014-02-09
 */
(function($){$.fn.customFormSelect=function(in_opts){var aOptions={"multiple":false,"name":"select","onChange":function(){},"selectedClass":'selected'};if(in_opts){$.extend(aOptions,in_opts);}
var iValue=(aOptions.value)?aOptions.value:'';return this.each(function(){var $this=$(this);var sName=$this.attr('name');if(!sName){sName=aOptions.name;}
var bMultiple=$this.attr('multiple');if(bMultiple)bMultiple=(bMultiple=='multiple')?true:false;if(!bMultiple){bMultiple=aOptions.multiple;}
$this.data('multiple',bMultiple);if(bMultiple)
{if(!$this.data('select'))
{var oSelect=$('<select name="'+sName+'" multiple="multiple" style="display: none;"></select>');$this.after(oSelect);$this.data('select',oSelect);}
else
{$this.data('select').attr('name',sName);}}
else
{if(!$this.data('input'))
{var oInput=$('<input type="hidden" name="'+sName+'" value="'+iValue+'" />');$this.after(oInput);$this.data('input',oInput);}
else
{$this.data('input').attr('name',sName);}
$this.data('last',null);}
var aChildren=$this.children();aChildren.each(function(){var oEl=$(this);if(bMultiple)
{sSelected=(oEl.attr('selected')=='selected')?' selected="selected"':'';if(sSelected){oEl.attr('selected','selected')
oEl.addClass(aOptions.selectedClass);}
var oOption=$('<option value="'+oEl.attr('value')+'"'+sSelected+'>'+oEl.attr('value')+'</option>');$this.data('select').show();$this.data('select').append(oOption);$this.data('select').hide();}
else
{if(iValue==oEl.attr('value')||oEl.attr('selected')=='selected')
{oEl.addClass(aOptions.selectedClass);$this.data('last',oEl);$this.data('input').val(oEl.attr('value'));}}});aChildren.click(function(ev){var el=$(this);if(bMultiple)
{$this.data('select').show();var opt=$this.data('select').find('option[value="'+el.attr('value')+'"]');var newValue=!opt.prop('selected');opt.prop('selected',newValue);var values=$this.data('select').val();$this.data('select').hide();if(newValue){el.attr('selected','selected');el.addClass(aOptions.selectedClass);}else{el.removeAttr('selected');el.removeClass(aOptions.selectedClass);}
aOptions.onChange(values,ev);}
else
{if(el.attr('value')==$this.data('input').val()){return;}
var currSel=$this.data('last');if(currSel){currSel.removeAttr('selected');currSel.removeClass(aOptions.selectedClass);}
$this.data('input').val(el.attr('value'));$this.data('last',el);el.attr('selected','selected');el.addClass(aOptions.selectedClass);aOptions.onChange(el.attr('value'),ev);}});});};$.fn.customFormSelectClear=function(){return this.each(function(){var $this=$(this);if($this.data('multiple')){$this.data('select').show();$this.data('select').val([]);$this.data('select').hdie();}else{$this.data('input').val(iValue);$this.data('last',null);}});};})(jQuery);