/* - ++resource++plone.formwidget.masterselect/masterselect.js - */
// http://www.buscajovem.org.br/portal_javascripts/++resource++plone.formwidget.masterselect/masterselect.js?original=1
(function($){var cache={};var masterVocabularyQueue={};var masterVocabularyComplete={};
function sprintf(format,etc){var arg=arguments;var i=1;return format.replace(/%((%)|s)/g, function(m){return m[2]||arg[i++]})}
function populateSelectOptions(items){var options='';var selected='';for(var i=0;i<items.length;i++){selected=items[i].selected?' selected="selected"':'';options+=sprintf('<option id="%s" value="%s"%s>%s</option>',items[i].id,items[i].value,selected,items[i].content)}
return options}
function updateSelect(slaveID,data){$(slaveID).closest('select').empty().html(populateSelectOptions(data.items)).end().change().attr('disabled','')};
function handleMasterVocabularyChange(event){var value=$.nodeName(this,'input')?''+this.checked:$(this).val();var slaveID=event.data.slaveID;var name=event.data.name;var masterID=event.data.masterID;var cachekey=[this.id,slaveID,value].join(':');$(slaveID).find('option').slice(event.data.empty_length).remove();$(slaveID).change();$(slaveID).closest(':input').attr('disabled','disabled');if(masterVocabularyQueue[event.data.slaveID]){masterVocabularyQueue[event.data.slaveID].abort();delete(masterVocabularyQueue[event.data.slaveID])}
var prevent_ajax_values=event.data.prevent_ajax_values!=undefined?event.data.prevent_ajax_values:[]
if(typeof prevent_ajax_values=='string')
prevent_ajax_values=[prevent_ajax_values];var val=$.nodeName(this,'input')?this.checked:$(this).val();val=prevent_ajax_values.length==0?false:$.inArray(val,prevent_ajax_values)>-1;if(val)
return;var queuekey=event.data.masterID;if(masterVocabularyQueue[queuekey]){masterVocabularyQueue[queuekey].abort();delete(masterVocabularyQueue[queuekey])}
if(value!=null){if(cache[cachekey]==undefined){masterVocabularyQueue[queuekey]=$.getJSON(event.data.url,{field:this.id,name:name,slaveID:slaveID,masterID:masterID,value:value},
function(data){cache[cachekey]=data;updateSelect(slaveID,data)})}
else
updateSelect(slaveID,cache[cachekey])}};$.fn.bindMasterSlaveVocabulary=function(data){var trigger=data.initial_trigger?data.initial_trigger:false;var emptyLength=data.empty_length?data.empty_length:0
var slaveLength=$(data.slaveID)[0].length;if(slaveLength<=emptyLength)
$(data.slaveID).attr('disabled','disabled');$(this).live('change',data,handleMasterVocabularyChange);if(trigger)
$(this).trigger('change')};
function updateAttr(slaveID,data){$(slaveID).attr(data.attr,data.value).change()}
function handleMasterAttrChange(event){var value=$.nodeName(this,'input')?''+this.checked:$(this).val();var slaveID=event.data.slaveID;var name=event.data.name;var masterID=event.data.masterID;var cachekey=[this.id,slaveID,value].join(':');if(cache[cachekey]==undefined)
$.getJSON(event.data.url,{field:this.id,slaveID:slaveID,name:name,masterID:masterID,value:value},
function(data){cache[cachekey]=data;updateAttr(slaveID,data)});else updateAttr(slaveID,cache[cachekey])};$.fn.bindMasterSlaveAttr=function(data){var trigger=data.initial_trigger?data.initial_trigger:true;$(this).live('change',data,handleMasterAttrChange);if(trigger)
$(this).trigger('change')};
function updateValue(slaveID,data){slaveID=$(slaveID)
slaveID.val(data).change();if(slaveID.is('.kupu-editor-textarea'))
slaveID.siblings('iframe:first').contents().find('body').html(data)}
function handleMasterValueChange(event){var value=$.nodeName(this,'input')?''+this.checked:$(this).val();var slaveID=event.data.slaveID;var name=event.data.name;var masterID=event.data.masterID;var cachekey=[this.id,slaveID,value].join(':');if(cache[cachekey]==undefined)
$.getJSON(event.data.url,{field:this.id,slaveID:slaveID,name:name,masterID:masterID,value:value},
function(data){cache[cachekey]=data;updateValue(slaveID,data)});else updateValue(slaveID,cache[cachekey])};$.fn.bindMasterSlaveValue=function(data){var trigger=data.initial_trigger?data.initial_trigger:true;$(this).live('change',data,handleMasterValueChange);if(trigger)
$(this).trigger('change')};
function handleMasterToggle(event){var action=event.data.action;var slaveID=$(event.data.slaveID);var val=$.nodeName(this,'input')?this.checked:$(this).val();val=event.data.values.length==0?true:$.inArray(val,event.data.values)>-1;if($.inArray(action,['hide','disable'])>-1){val=!val;action=action=='hide'?'show':'enable'}
if(action=='show'){var selector=event.data.siblings?slaveID.parent():slaveID;selector.each(function(){$(this)[val?"show":"hide"]()})} else
slaveID.closest(':input').attr('disabled',val?'':'disabled')}
$.fn.bindMasterSlaveToggle=function(data){var trigger=data.initial_trigger?data.initial_trigger:true;$(this).live('change',data,handleMasterToggle);if(trigger)
$(this).trigger('change')}})(jQuery);

