(function($){Drupal.behaviors.HierarchicalSelect=function(context){$('.hierarchical-select-wrapper:not(.hierarchical-select-wrapper-processed)',context).addClass('hierarchical-select-wrapper-processed').each(function(){var hsid=$(this).attr('id').replace(/^hierarchical-select-(\d+)-wrapper$/,"$1");Drupal.HierarchicalSelect.initialize(hsid);});};Drupal.HierarchicalSelect={};Drupal.HierarchicalSelect.state=[];Drupal.HierarchicalSelect.context=function(){return $("form .hierarchical-select-wrapper");};Drupal.HierarchicalSelect.initialize=function(hsid){if(undefined==Drupal.settings.HierarchicalSelect||undefined==Drupal.settings.HierarchicalSelect.settings[hsid]){return false;}
if(undefined!=Drupal.settings.HierarchicalSelect.pretendNoJS){return false;}
if($.browser.mozilla){$('#hierarchical-select-'+hsid+'-wrapper').parents('form').attr('autocomplete','off');}
if(this.cache!=null){this.cache.initialize();}
Drupal.settings.HierarchicalSelect.settings[hsid]['updatesEnabled']=true;if(undefined==Drupal.HierarchicalSelect.state[hsid]){Drupal.HierarchicalSelect.state[hsid]={};}
this.transform(hsid);if(Drupal.settings.HierarchicalSelect.settings[hsid].resizable){this.resizable(hsid);}
Drupal.HierarchicalSelect.attachBindings(hsid);if(this.cache!=null&&this.cache.status()){this.cache.load(hsid);}
Drupal.HierarchicalSelect.log(hsid);};Drupal.HierarchicalSelect.log=function(hsid,messages){if(Drupal.settings.HierarchicalSelect.initialLog==undefined||Drupal.settings.HierarchicalSelect.initialLog[hsid]==undefined){return;}
else{Drupal.HierarchicalSelect.state[hsid].log=[];}
if(Drupal.HierarchicalSelect.state[hsid].log.length==0){Drupal.HierarchicalSelect.state[hsid].log.push(Drupal.settings.HierarchicalSelect.initialLog[hsid]);}
else{Drupal.HierarchicalSelect.state[hsid].log.push(messages);}
console.log("HIERARCHICAL SELECT "+hsid);var logIndex=Drupal.HierarchicalSelect.state[hsid].log.length-1;for(var i=0;i<Drupal.HierarchicalSelect.state[hsid].log[logIndex].length;i++){console.log(Drupal.HierarchicalSelect.state[hsid].log[logIndex][i]);}
console.log(' ');};Drupal.HierarchicalSelect.transform=function(hsid){var removeString=$('#hierarchical-select-'+hsid+'-wrapper .dropbox .dropbox-remove:first',Drupal.HierarchicalSelect.context).text();$('#hierarchical-select-'+hsid+'-wrapper',Drupal.HierarchicalSelect.context).find('.nojs').remove().end().find('.dropbox .dropbox-remove').find('*').css('display','none').end().append('<a href="">'+removeString+'</a>');};Drupal.HierarchicalSelect.resizable=function(hsid){var $selectsWrapper=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects',Drupal.HierarchicalSelect.context);if($selectsWrapper.length==0){return;}
$selectsWrapper.append($('<div class="grippie"></div>'));var $selects=$selectsWrapper.find('select');var defaultHeight=Drupal.HierarchicalSelect.state[hsid].defaultHeight=$selects.slice(0,1).height();var defaultSize=Drupal.HierarchicalSelect.state[hsid].defaultSize=$selects.slice(0,1).attr('size');defaultSize=(defaultSize==0)?1:defaultSize;var margin=Drupal.HierarchicalSelect.state[hsid].margin=parseInt($selects.slice(0,1).css('margin-bottom').replace(/^(\d+)px$/,"$1"));$('.grippie',$selectsWrapper).mousedown(startDrag).dblclick(function(){if(Drupal.HierarchicalSelect.state[hsid].resizedHeight==undefined){Drupal.HierarchicalSelect.state[hsid].resizedHeight=defaultHeight;}
var resizedHeight=Drupal.HierarchicalSelect.state[hsid].resizedHeight=(Drupal.HierarchicalSelect.state[hsid].resizedHeight>defaultHeight+2)?defaultHeight:4.6/defaultSize*defaultHeight;Drupal.HierarchicalSelect.resize($selects,defaultHeight,resizedHeight,defaultSize,margin);});function startDrag(e){staticOffset=$selects.slice(0,1).height()-e.pageY;$selects.css('opacity',0.25);$(document).mousemove(performDrag).mouseup(endDrag);return false;}
function performDrag(e){var resizedHeight=staticOffset+e.pageY;Drupal.HierarchicalSelect.resize($selects,defaultHeight,resizedHeight,defaultSize,margin);return false;}
function endDrag(e){var height=$selects.slice(0,1).height();$(document).unbind("mousemove",performDrag).unbind("mouseup",endDrag);$selects.css('opacity',1);if(height!=Drupal.HierarchicalSelect.state[hsid].resizedHeight){Drupal.HierarchicalSelect.state[hsid].resizedHeight=(height>defaultHeight)?height:defaultHeight;}}};Drupal.HierarchicalSelect.resize=function($selects,defaultHeight,resizedHeight,defaultSize,margin){if(resizedHeight==undefined){resizedHeight=defaultHeight;}
$selects.attr('size',(resizedHeight>defaultHeight)?2:defaultSize).height(Math.max(defaultHeight+margin,resizedHeight));};Drupal.HierarchicalSelect.disableForm=function(hsid){$('form:has(#hierarchical-select-'+hsid+'-wrapper) input[type=submit]').add('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select').add('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select input').attr('disabled',true);$('#hierarchical-select-'+hsid+'-wrapper').addClass('waiting');$('body').css('cursor','wait');};Drupal.HierarchicalSelect.enableForm=function(hsid){$e=$('form:has(#hierarchical-select-'+hsid+'-wrapper) input[type=submit]');$e=$e.add('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select input[type!=submit]');dropboxLimitExceeded=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select-dropbox-limit-warning').length>0;if(!dropboxLimitExceeded){$e=$e.add($('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select'));}
$e.attr('disabled',false);if(dropboxLimitExceeded){$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select input[type=submit]').attr('disabled',true);}
$('#hierarchical-select-'+hsid+'-wrapper').removeClass('waiting');$('body').css('cursor','auto');};Drupal.HierarchicalSelect.throwError=function(hsid,message){alert(message);Drupal.HierarchicalSelect.log(hsid,[message]);var $select=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select:first');var levelLabelOption=$('option[value^=label_]',$select).val();if(levelLabelOption!==undefined){$select.val(levelLabelOption);}
else{var noneOption=$('option[value=none]',$select).val();if(noneOption!==undefined){$select.val(noneOption);}}
Drupal.HierarchicalSelect.enableForm(hsid);};Drupal.HierarchicalSelect.prepareGETSubmit=function(hsid){$('#hierarchical-select-'+hsid+'-wrapper',Drupal.HierarchicalSelect.context).find('input, select').not('.flat-select').removeAttr('name');var $flatSelect=$('#hierarchical-select-'+hsid+'-wrapper .flat-select',Drupal.HierarchicalSelect.context);var newName=$flatSelect.attr('name').replace(/^([a-zA-Z0-9_\-]*)(?:\[flat_select\]){1}(\[\])?$/,"$1$2");$flatSelect.attr('name',newName);Drupal.HierarchicalSelect.triggerEvents(hsid,'prepared-GET-submit',{});};Drupal.HierarchicalSelect.attachBindings=function(hsid){var addOpString=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select input',Drupal.HierarchicalSelect.context).val();var createNewItemOpString=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .create-new-item-create',Drupal.HierarchicalSelect.context).val();var cancelNewItemOpString=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .create-new-item-cancel',Drupal.HierarchicalSelect.context).val();var data={};data.hsid=hsid;$('#hierarchical-select-'+hsid+'-wrapper',this.context).unbind('disable-updates').bind('disable-updates',data,function(e){Drupal.settings.HierarchicalSelect.settings[e.data.hsid]['updatesEnabled']=false;}).unbind('enforce-update').bind('enforce-update',data,function(e,extraPost){Drupal.HierarchicalSelect.update(e.data.hsid,'enforced-update',{extraPost:extraPost});}).unbind('prepare-GET-submit').bind('prepare-GET-submit',data,function(e){Drupal.HierarchicalSelect.prepareGETSubmit(e.data.hsid);}).find('.hierarchical-select .selects select').unbind().change(function(_hsid){return function(){if(Drupal.settings.HierarchicalSelect.settings[_hsid]['updatesEnabled']){Drupal.HierarchicalSelect.update(_hsid,'update-hierarchical-select',{select_id:$(this).attr('id')});}};}(hsid)).end().find('.hierarchical-select .create-new-item .create-new-item-create').unbind().click(function(_hsid){return function(){Drupal.HierarchicalSelect.update(_hsid,'create-new-item',{opString:createNewItemOpString});return false;};}(hsid)).end().find('.hierarchical-select .create-new-item .create-new-item-cancel').unbind().click(function(_hsid){return function(){Drupal.HierarchicalSelect.update(_hsid,'cancel-new-item',{opString:cancelNewItemOpString});return false;};}(hsid)).end().find('.hierarchical-select .add-to-dropbox').unbind().click(function(_hsid){return function(){Drupal.HierarchicalSelect.update(_hsid,'add-to-dropbox',{opString:addOpString});return false;};}(hsid)).end().find('.dropbox .dropbox-remove a').unbind().click(function(_hsid){return function(){var isDisabled=$('#hierarchical-select-'+hsid+'-wrapper',Drupal.HierarchicalSelect.context).attr('disabled');if(isDisabled){return false;}
$(this).parent().find('input[type=checkbox]').attr('checked',true);Drupal.HierarchicalSelect.update(_hsid,'remove-from-dropbox',{});return false;};}(hsid));};Drupal.HierarchicalSelect.preUpdateAnimations=function(hsid,updateType,lastUnchanged,callback){switch(updateType){case'update-hierarchical-select':var animationDelay=Drupal.settings.HierarchicalSelect.settings[hsid]['animationDelay'];var $animatedSelects=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select',Drupal.HierarchicalSelect.context).slice(lastUnchanged);if($animatedSelects.size()>0){$animatedSelects.hide();for(var i=0;i<$animatedSelects.size();i++){if(i<$animatedSelects.size()-1){$animatedSelects.slice(i,i+1).hide("drop",{direction:"left"},animationDelay);}
else{$animatedSelects.slice(i,i+1).hide("drop",{direction:"left"},animationDelay,callback);}}}
else if(callback){callback();}
break;default:if(callback){callback();}
break;}};Drupal.HierarchicalSelect.postUpdateAnimations=function(hsid,updateType,lastUnchanged,callback){if(Drupal.settings.HierarchicalSelect.settings[hsid].resizable){Drupal.HierarchicalSelect.resize($('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select',Drupal.HierarchicalSelect.context),Drupal.HierarchicalSelect.state[hsid].defaultHeight,Drupal.HierarchicalSelect.state[hsid].resizedHeight,Drupal.HierarchicalSelect.state[hsid].defaultSize,Drupal.HierarchicalSelect.state[hsid].margin);}
switch(updateType){case'update-hierarchical-select':var $createNewItemInput=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .create-new-item-input',Drupal.HierarchicalSelect.context);if($createNewItemInput.size()==0){if(!$.browser.mozilla){$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select',Drupal.HierarchicalSelect.context).slice(lastUnchanged,lastUnchanged+1).focus();}}
else{$createNewItemInput.focus();$createNewItemInput[0].select();}
var animationDelay=Drupal.settings.HierarchicalSelect.settings[hsid]['animationDelay'];var $animatedSelects=$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select',Drupal.HierarchicalSelect.context).slice(lastUnchanged);if($animatedSelects.size()>0){$animatedSelects.hide();for(var i=0;i<$animatedSelects.size();i++){if(i<$animatedSelects.size()-1){$animatedSelects.slice(i,i+1).show("drop",{direction:"left"},animationDelay);}
else{$animatedSelects.slice(i,i+1).show("drop",{direction:"left"},animationDelay,callback);}}}
else if(callback){callback();}
break;case'create-new-item':var cacheId=Drupal.settings.HierarchicalSelect.settings[hsid].cacheId;for(var otherHsid in Drupal.settings.HierarchicalSelect.settings){if(Drupal.settings.HierarchicalSelect.settings[otherHsid].cacheId==cacheId){$('#hierarchical-select-'+otherHsid+'-wrapper').trigger('enforce-update');}}
case'cancel-new-item':$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select',Drupal.HierarchicalSelect.context).slice(0,1).focus();if(callback){callback();}
break;default:if(callback){callback();}
break;}};Drupal.HierarchicalSelect.triggerEvents=function(hsid,updateType,settings){$('#hierarchical-select-'+hsid+'-wrapper',Drupal.HierarchicalSelect.context).trigger(updateType,[hsid,settings]);};Drupal.HierarchicalSelect.update=function(hsid,updateType,settings){var post=$('form:has(#hierarchical-select-'+hsid+'-wrapper)',Drupal.HierarchicalSelect.context).formToArray();post.push({name:'hsid',value:hsid});if(Drupal.HierarchicalSelect.cache!=null){post.push({name:'client_supports_caching',value:Drupal.HierarchicalSelect.cache.status()});}
switch(updateType){case'update-hierarchical-select':var value=$('#'+settings.select_id).val();var lastUnchanged=parseInt(settings.select_id.replace(/^.*-hierarchical-select-selects-(\d+)$/,"$1"))+1;var optionClass=$('#'+settings.select_id).find('option[value='+value+']').attr('class');if((value=='none'&&Drupal.settings.HierarchicalSelect.settings[hsid]['renderFlatSelect']==false)||value.match(/^label_\d+$/)||(optionClass=='has-no-children'&&((Drupal.settings.HierarchicalSelect.settings[hsid]['renderFlatSelect']==false||$('#hierarchical-select-'+hsid+'-wrapper .dropbox').length>0)&&Drupal.settings.HierarchicalSelect.settings[hsid]['createNewLevels']==false)))
{Drupal.HierarchicalSelect.preUpdateAnimations(hsid,updateType,lastUnchanged,function(){$('#hierarchical-select-'+hsid+'-wrapper .hierarchical-select .selects select',Drupal.HierarchicalSelect.context).slice(lastUnchanged).remove();Drupal.HierarchicalSelect.triggerEvents(hsid,'change-hierarchical-select',settings);});return;}
break;case'enforced-update':post=post.concat(settings.extraPost);break;case'create-new-item':case'cancel-new-item':case'add-to-dropbox':post.push({name:'op',value:settings.opString});break;}
var url=Drupal.settings.HierarchicalSelect.basePath+Drupal.settings.HierarchicalSelect.settings[hsid]['path'];if(Drupal.settings.HierarchicalSelect.getArguments.length>0){url+=(url.indexOf('?')==-1)?'?':'&';url+=Drupal.settings.HierarchicalSelect.getArguments;}
var ajaxOptions={url:url,type:'POST',dataType:'json',data:post,beforeSend:function(){Drupal.HierarchicalSelect.triggerEvents(hsid,'before-'+updateType,settings);Drupal.HierarchicalSelect.disableForm(hsid);},error:function(XMLHttpRequest,textStatus,errorThrown){Drupal.HierarchicalSelect.throwError(hsid,Drupal.t('Received an invalid response from the server.'));},success:function(response){if($('.hierarchical-select-wrapper > *',$(response.output)).length==0){Drupal.HierarchicalSelect.throwError(hsid,Drupal.t('Received an invalid response from the server.'));return;}
$('#hierarchical-select-'+hsid+'-wrapper',Drupal.HierarchicalSelect.context).removeClass('hierarchical-select-wrapper-processed').html($('.hierarchical-select-wrapper > *',$(response.output)));Drupal.attachBehaviors(Drupal.HierarchicalSelect.context);Drupal.HierarchicalSelect.enableForm(hsid);Drupal.HierarchicalSelect.postUpdateAnimations(hsid,updateType,lastUnchanged,function(){if(response.cache!=null&&Drupal.HierarchicalSelect.cache!=null&&Drupal.HierarchicalSelect.cache.status()){Drupal.HierarchicalSelect.cache.sync(hsid,response.cache);}
if(response.log!=undefined){Drupal.HierarchicalSelect.log(hsid,response.log);}
Drupal.HierarchicalSelect.triggerEvents(hsid,updateType,settings);if(updateType=='update-hierarchical-select'){Drupal.HierarchicalSelect.triggerEvents(hsid,'change-hierarchical-select',settings);}});}};if(updateType=='update-hierarchical-select'&&Drupal.settings.HierarchicalSelect.settings[hsid]['renderFlatSelect']==false&&Drupal.settings.HierarchicalSelect.settings[hsid]['createNewItems']==false&&Drupal.HierarchicalSelect.cache!=null&&Drupal.HierarchicalSelect.cache.status())
{Drupal.HierarchicalSelect.cache.updateHierarchicalSelect(hsid,value,settings,lastUnchanged,ajaxOptions);}
else{Drupal.HierarchicalSelect.preUpdateAnimations(hsid,updateType,lastUnchanged,function(){$.ajax(ajaxOptions);});}};Drupal.HierarchicalSelect.ajaxViewPagerSettingsUpdate=function(target,response){$.extend(Drupal.settings.HierarchicalSelect.settings,response.hs_drupal_js_settings);Drupal.attachBehaviors($(target));};})(jQuery);
