(function($){Drupal.flagLink=function(context){function updateLink(element,newHtml){var $newLink=$(newHtml);$('.flag-message',$newLink).css('display','none');var $nucleus=$newLink.is('a')?$newLink:$('a.flag',$newLink);$nucleus.addClass('flag-processed').click(flagClick);var $wrapper=$(element).parents('.flag-wrapper:first');if($wrapper.length==0){$wrapper=$(element);}
$wrapper.after($newLink).remove();Drupal.attachBehaviors($newLink.get(0));$('.flag-message',$newLink).fadeIn();setTimeout(function(){$('.flag-message',$newLink).fadeOut()},3000);return $newLink.get(0);}
function flagClick(){var element=this;var $wrapper=$(element).parents('.flag-wrapper');if($wrapper.is('.flag-waiting')){return false;}
$wrapper.addClass('flag-waiting');$('span.flag-message:visible').fadeOut();$.ajax({type:'POST',url:element.href,data:{js:true},dataType:'json',success:function(data){if(data.status){data.link=$wrapper.get(0);$.event.trigger('flagGlobalBeforeLinkUpdate',[data]);if(!data.preventDefault){data.link=updateLink(element,data.newLink);}
$.event.trigger('flagGlobalAfterLinkUpdate',[data]);}
else{alert(data.errorMessage);$wrapper.removeClass('flag-waiting');}},error:function(xmlhttp){alert('An HTTP error '+xmlhttp.status+' occurred.\n'+element.href);$wrapper.removeClass('flag-waiting');}});return false;}
$('a.flag-link-toggle:not(.flag-processed)',context).addClass('flag-processed').click(flagClick);};Drupal.flagAnonymousLinks=function(context){$('a.flag:not(.flag-anonymous-processed)',context).each(function(){this.href+=(this.href.match(/\?/)?'&':'?')+'has_js=1';$(this).addClass('flag-anonymous-processed');});}
String.prototype.flagNameToCSS=function(){return this.replace(/_/g,'-');}
Drupal.flagAnonymousLinkTemplates=function(context){var templates=Drupal.settings.flag.templates;var userFlags=Drupal.flagCookie('flags');if(userFlags){userFlags=userFlags.split('+');for(var n in userFlags){var flagInfo=userFlags[n].match(/(\w+)_(\d+)/);var flagName=flagInfo[1];var contentId=flagInfo[2];if(templates[flagName+'_'+contentId]){$('.flag-'+flagName.flagNameToCSS()+'-'+contentId,context).after(templates[flagName+'_'+contentId]).remove();}}}
var globalFlags=document.cookie.match(/flag_global_(\w+)_(\d+)=([01])/g);if(globalFlags){for(var n in globalFlags){var flagInfo=globalFlags[n].match(/flag_global_(\w+)_(\d+)=([01])/);var flagName=flagInfo[1];var contentId=flagInfo[2];var flagState=(flagInfo[3]=='1')?'flag':'unflag';if(templates[flagName+'_'+contentId]){$('.flag-'+flagName.flagNameToCSS()+'-'+contentId,context).each(function(){if($(this).find('.'+flagState+'-action').size()){$(this).after(templates[flagName+'_'+contentId]).remove();}});}}}}
Drupal.flagCookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1;}
var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
expires='; expires='+date.toUTCString();}
var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}
return cookieValue;}};Drupal.behaviors.flagLink=function(context){if(Drupal.settings.flag&&Drupal.settings.flag.templates){Drupal.flagAnonymousLinkTemplates(context);}
if(Drupal.settings.flag&&Drupal.settings.flag.anonymous){Drupal.flagAnonymousLinks(context);}
Drupal.flagLink(context);};})(jQuery);
