/* - ++resource++inqbus.bizdict.javascript/jquery.relatedselects.min.js - */
// http://costarica-information.com/portal_javascripts/++resource++inqbus.bizdict.javascript/jquery.relatedselects.min.js?original=1
(function(jq){var opts={};jq.fn.relatedSelects=function(options){opts=jq.extend({},jq.fn.relatedSelects.options,options);return this.each(function(){var $this=jq(this);var selects=[];if(jq.isArray(opts.selects)){var arrSelects=opts.selects;opts.selects={};for(var i=0;i<arrSelects.length;i++){opts.selects[arrSelects[i]]={}}};for(key in opts.selects)selects.push(key);$this.data('selects',selects);saveDefaults($this);jq.each(opts.selects,function(elem,o){var $select=jq("select[name='"+elem+"']",$this);var $next=next(elem,$this);var selectedValue=$select.find('option:selected').attr('value');o=jq.extend({defaultOptionText:opts.defaultOptionText||$select.data('defaultOption')},opts,o);$select.data('defaultOption',o.defaultOptionText);$select.change(function(){o.onChange.call($select);process($select,$next,elem,o,$this)});if(selectedValue&&selectedValue.length>0&&isPopulated($next))return;process($select,$next,elem,o,$this)})})};function saveDefaults(context){jq.each(opts.selects,function(elem,o){var $elem=jq("select[name='"+elem+"']",context);$elem.data('defaultOption',$elem.find('option[value=""]').text())})};function process($select,$next,elem,o,context){if($next.length===0)return;var value=jq.trim($select.find('option:selected').attr('value'));if(value.length>0&&value!==o.loadingMessage&&$next){resetAfter(elem,context);populate($select,$next,o,context)}else if($next){resetAfter(elem,context)}};function populate($callerSelect,$select,o,context){var selects=context.data('selects'),selectors=[],params=[];for(var x=0;x<selects.length;x++){selectors.push('select[name="'+selects[x]+'"]')};params=jq(selectors.join(','),context).serialize();$select.attr("disabled","disabled").html('<option value="">'+o.loadingMessage+'</option>');jq.ajax({beforeSend:function(){o.onLoadingStart.call($select)},complete:function(){o.onLoadingEnd.call($select)},dataType:'json',data:params,url:o.onChangeLoad,success:function(data){var html='<option value="" selected="selected">'+$select.data('defaultOption')+'</option>';if(typeof(data)==='object'&&data){jq.each(data,function(i,item){html+='<option value="'+i+'">'+item+'</option>'});$select.html(html).removeAttr('disabled')}else{$select.html(html);if(!o.disableIfEmpty){$select.removeAttr('disabled')};o.onEmptyResult.call($callerSelect)}}})};function isPopulated($select){var options=$select.find('option');return(options.length===0||(options.length===1&&options.filter(':first').attr('value').length===0))?false:true};function resetAfter(elem,context){var thispos=getPosition(elem,context),selects=context.data('selects');for(var x=thispos+1;x<selects.length;x++){jq("select[name='"+selects[x]+"']",context).attr("disabled","disabled").find("option:first").attr("selected","selected")}};function next(elem,context){return jq("select[name='"+context.data('selects')[getPosition(elem,context)+1]+"']",context)};function getPosition(elem,context){var selects=context.data('selects');for(var i=0;i<selects.length;i++){if(selects[i]===elem){return i}}};jq.fn.relatedSelects.options={selects:{},loadingMessage:'Loading, please wait...',disableIfEmpty:false,onChangeLoad:'',onLoadingStart:function(){},onLoadingEnd:function(){},onChange:function(){},onEmptyResult:function(){}}})(jQuery);

