
/* - jquery.toChecklist.js - */
// http://svea.org/portal_javascripts/jquery.toChecklist.js?original=1
(function(jq){jQuery.fn.toChecklist=function(o){var updateChecklist=function(action,checklistElem){var showSelectedItemsSetting;var disableDynamicList=function(checklistLength){if(checklistLength>3){showSelectedItemsSetting=jq(checklistElem).attr('showSelectedItems');jq(checklistElem).attr('showSelectedItems','false')}}
var enableDynamicList=function(){jq(checklistElem).attr('showSelectedItems',showSelectedItemsSetting)}
switch(action){case 'clearAll':var selector='li:has(input:checked)';break;case 'checkAll':var selector='li:has(input:not(:checked,:disabled))';break;case 'invert':var selector='li:has(input)';break;default:alert("toChecklist Plugin says:\n\nWarning - Invalid action requested on checklist.\nThe action requested was: "+action);break}
var checklistLength=jq(selector,checklistElem).length;disableDynamicList(checklistLength);jq(selector,checklistElem).each(function(i){if(i==checklistLength-2&&checklistLength>3)
enableDynamicList();jq(this).trigger('click')})};if(typeof o=='string'){this.each(function(){if(!jq(this).isChecklist())
return true;updateChecklist(o,this)});return jq}
o=jQuery.extend({addScrollBar:true,addSearchBox:false,searchBoxText:'Type here to search list...',showCheckboxes:false,showSelectedItems:false,submitDataAsArray:false,preferIdOverName:true,maxNumOfSelections:-1,onMaxNumExceeded: function(){alert('You cannot select more than '+this.maxNumOfSelections+' items in this list.')},cssChecklist:'checklist',cssChecklistHighlighted:'checklistHighlighted',cssLeaveRoomForCheckbox:'leaveRoomForCheckbox',cssEven:'even',cssOdd:'odd',cssChecked:'checked',cssDisabled:'disabled',cssShowSelectedItems:'showSelectedItems',cssFocused:'focused',cssFindInList:'findInList',cssBlurred:'blurred',cssOptgroup:'optgroup'},o);var error=function(msg){alert("jQuery Plugin Error (Plugin: toChecklist)\n\n"+msg)}
var overflowProperty=(o.addScrollBar)?'overflow-y: auto; overflow-x: hidden;':'';var leaveRoomForCheckbox=(o.showCheckboxes)?'padding-left: 25px':'padding-left: 3px';this.each(function(){var jSelectElem=jq(this);var jSelectElemId=jSelectElem.attr('id');if(jSelectElemId==''||!o.preferIdOverName){jSelectElemId=jSelectElem.attr('name').replace(/\[\]/,'');if(jSelectElemId==''){error('Can\'t convert element to checklist.\nYour SELECT element must'+' have a "name" attribute and/or an "id" attribute specified.');return jq}}
var h=jSelectElem.height();var w=jSelectElem.width();w-=4;if(this.type!='select-multiple'&&this.type!='select-one'){error("Can't convert element to checklist.\n"+"Expecting SELECT element with \"multiple\" attribute.");return jq} else if(this.type=='select-one'){return jq}
var convertListItemsToCheckboxes=function(){var checkboxValue=jq(this).attr('value');if(checkboxValue==''){checkboxValue=this.innerHTML}
checkboxValue=checkboxValue.replace(/ /g,'_');var checkboxId=jSelectElemId+'_'+checkboxValue;var labelText=jq(this).attr('innerHTML');var selected='';if(jq(this).attr('disabled')){var disabled=' disabled="disabled"';var disabledClass=' class="disabled"'} else{var disabled='';var disabledClass='';var selected=(jq(this).attr('selected'))?'checked="checked"':''}
var arrayBrackets=(o.submitDataAsArray)?'[]':'';jq(this).replaceWith('<li tabindex="0"><input type="checkbox" value="'+checkboxValue+'" name="'+jSelectElemId+arrayBrackets+'" id="'+checkboxId+'" '+selected+disabled+' /><label for="'+checkboxId+'"'+disabledClass+'>'+labelText+'</label></li>');if(o.showCheckboxes===false){jq('#'+checkboxId).css('position','absolute').css('left','-50000px')} else{jq('label[for='+checkboxId+']').addClass(o.cssLeaveRoomForCheckbox)}};jq('optgroup',jSelectElem).each(function(){jq('option',this).each(convertListItemsToCheckboxes);jq(this).replaceWith('<li class="'+o.cssOptgroup+'">'+jq(this).attr('label')+'</li>'+jq(this).html())});jq('option',jSelectElem).each(convertListItemsToCheckboxes);jq('li:first',jSelectElem).each(function(){if(jq(this).hasClass('optgroup'))
jq(this).css('border-top','none')});var checklistId=jSelectElemId+'_'+'checklist';jSelectElem.replaceWith('<div id="'+jSelectElemId+'"><div id="'+checklistId+'">'+'<ul>'+jSelectElem.attr('innerHTML')+'</ul></div></div>');var checklistDivId='#'+checklistId;jq('#'+jSelectElemId).attr('showSelectedItems',o.showSelectedItems.toString());jq(checklistDivId).css('position','relative');var findInListDivHeight=0;if(o.addSearchBox){var focusSearchBox=function(){this.value="";jq(this).removeClass(o.cssBlurred)}
var blurSearchBox=function(){this.value=this.defaultValue;jq(this).addClass(o.cssBlurred)}
jq(checklistDivId).before('<div class="findInList" id="'+jSelectElemId+'_findInListDiv">'+'<input type="text" value="'+o.searchBoxText+'" id="'+jSelectElemId+'_findInList" class="'+o.cssBlurred+'" /></div>');jq('#'+jSelectElemId+'_findInList').css('width',w);jq('#'+jSelectElemId+'_findInList').bind('focus.focusSearchBox',focusSearchBox).bind('blur.blurSearchBox',blurSearchBox).keyup(function(event){var textbox=this;if(this.value==''){jq(checklistDivId).attr('scrollTop',0);jq(this).unbind('keydown.tabToFocus');return false}
jq('label',checklistDivId).each(function(){if(!jq(this).is(':disabled')){var curItem=jq(this).html().toLowerCase();var typedText=textbox.value.toLowerCase();if(curItem.indexOf(typedText)==0){var curLabelObj=this;var scrollValue=this.parentNode.offsetTop;jq(checklistDivId).attr('scrollTop',scrollValue);jq(textbox).unbind('blur.blurSearchBox').unbind('keydown.tabToFocus').bind('keydown.tabToFocus', function(event){if(event.keyCode==9){event.preventDefault();jq(curLabelObj.parentNode).bind('blur.restoreDefaultText',function(){var defaultVal=jq(textbox).attr('defaultValue');jq(textbox).attr('value',defaultVal).addClass(o.cssBlurred).bind('blur.blurSearchBox',blurSearchBox);jq(this).unbind('blur.restoreDefaultText')}).bind('keydown.tabBack', function(event){if(event.keyCode==9&&event.shiftKey){event.preventDefault();jq(textbox).unbind('focus.focusSearchBox').removeClass(o.cssBlurred).bind('focus.focusSearchBox',focusSearchBox).bind('blur.blurSearchBox',blurSearchBox).focus();jq(this).unbind('keydown.tabBack')}}).focus();jq(this).unbind('keydown.tabToFocus')}});return false}}});return});findInListDivHeight=jq('#'+jSelectElemId+'_findInListDiv').height()+3}
jq(checklistDivId).addClass(o.cssChecklist);if(o.addScrollBar){jq(checklistDivId).height(h-findInListDivHeight).width('100%')} else{jq(checklistDivId).height('100%').width('100%')}
jq('ul',checklistDivId).addClass(o.cssChecklist).height(h);jq('li:even',checklistDivId).addClass(o.cssEven);jq('li:odd',checklistDivId).addClass(o.cssOdd);jq('li',checklistDivId).focus(function(){jq(this).addClass(o.cssFocused)}).blur(function(event){jq(this).removeClass(o.cssFocused)});jq('li',checklistDivId).each(function(){if(jq('input',this).attr('checked')){jq(this).addClass(o.cssChecked)}});var toggleDivGlow=function(){if(jq('li',checklistDivId).hasClass(o.cssChecked)){jq(checklistDivId).addClass(o.cssChecklistHighlighted)} else{jq(checklistDivId).removeClass(o.cssChecklistHighlighted)}}
var moveToNextLi=function(){if(jq(this).attr('tagName')!='LI')
return;if(jq(this).is('li:has(input)'))
jq(this).focus();else
jq(this).next().each(moveToNextLi)}
var check=function(event){if(event.type=='keydown'){if(event.keyCode==32||event.keyCode==13) event.preventDefault();if(event.keyCode==9&&!event.shiftKey){event.preventDefault();jq(this).unbind('keydown.tabBack').blur().next().each(moveToNextLi)} else if(event.keyCode==9&&event.shiftKey){}
if(event.keyCode!=32) return}
var numOfItemsChecked=jq('input:checked',checklistDivId).length;if(o.maxNumOfSelections!=-1&&numOfItemsChecked==o.maxNumOfSelections&&!jq('input',this).attr('checked')){o.onMaxNumExceeded();event.preventDefault();return}
jq('label',this).unbind();if(event.target.tagName!='INPUT'&&event.target.tagName!='LABEL'){jq('input',this).trigger('click')}
var checkbox=jq('input',this).get(0);updateLIStyleToMatchCheckedStatus(checkbox);if(jq('#'+jSelectElemId).attr('showSelectedItems')==='true') showSelectedItems()};var updateLIStyleToMatchCheckedStatus=function(checkbox){if(checkbox.checked){jq(checkbox).parent().addClass(o.cssChecked)} else{jq(checkbox).parent().removeClass(o.cssChecked)}
toggleDivGlow()}
var handFocusToLI=function(){jq(this).parent().focus()};jq('li:has(input)',checklistDivId).click(check).keydown(check);jq('label',checklistDivId).focus(handFocusToLI);jq('input',checklistDivId).focus(handFocusToLI);toggleDivGlow();var fixFormElems=function(event){jq('input',this).each(function(){this.checked=this.defaultChecked;updateLIStyleToMatchCheckedStatus(this);if(o.showSelectedItems) showSelectedItems()}).parent()}
jq('form:has(div.'+o.cssChecklist+')').bind('reset.fixFormElems',fixFormElems);var selectedItemsListId='#'+jSelectElemId+'_selectedItems';if(o.showSelectedItems){jq(selectedItemsListId).addClass(o.cssShowSelectedItems)}
var showSelectedItems=function(){jq(selectedItemsListId).html('');jq('label',checklistDivId).each(function(){if(jq(this).parent().hasClass(o.cssChecked)){var labelText=jQuery.trim(this.innerHTML);jq(selectedItemsListId).append('<li>'+labelText+'</li>')}})};if(o.showSelectedItems) showSelectedItems()})};jQuery.fn.isChecklist=function(){var isChecklist=false;this.each(function(){var divContainsChecklist=jq('#'+this.id+'_checklist',this).get();isChecklist=(this.tagName=='DIV'&&divContainsChecklist);return false});return(isChecklist)?true:false}})(jQuery);jq(document).ready(function(){jq('.portletOpenMember select').toChecklist()});

