/*
 * Critical Communication Module
 * Version: 1.0
 * Author: tdeater@biggs-gilmore.com
 *
 * Requires: critcomm_messages.js file
 */
 
var CritComm=(function(){var h,j='<p><a href="%URL%" target="_blank">%TEXT%</a></p>',g="UA-2860895-26",b={},k=false,a=false,p=new Error("StopIteration"),e=new Error("CritComm implementation error: calling site did not specify required callback function.");function s(v,x){if(!s[v]){s[v]="loading";var t=false,w=document.getElementsByTagName("head")[0],u=document.createElement("script");u.setAttribute("type","text/javascript");u.setAttribute("src",v);u.onload=u.onreadystatechange=u.onerror=function(){f("CritComm : loadscript ",v,"readystate",this.readyState);if(!t&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){t=true;s[v]="complete";if(typeof x==="function"){x()}u.onload=u.onreadystatechange=u.onerror=null;w.removeChild(u)}};w.appendChild(u)}}function f(){if(k){try{if(typeof loadFirebugConsole==="function"&&typeof console==="undefined"){window.loadFirebugConsole()}console.log.apply(this,arguments)}catch(u){var t="http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js";f.arg.push(arguments);if(!s[t]){s(t,function(){try{var v;firebug.init();while((v=f.arg.shift())){f(v)}}catch(w){}})}}}}f.arg=[];function m(y,z){var u=(("https:"===document.location.protocol)?"https://ssl.":"http://www.")+"google-analytics.com/ga.js";try{if(y){m.trackers.push({str:y,callback:z});f("CritComm : queueing tracker",m.trackers)}if(typeof _gat==="undefined"&&!m.abort){switch(s[u]){case"complete":m.abort=true;break;case"loading":f("CritComm : waiting for GA script",y);return;default:f("CritComm : loading GA script",y);s(u,m);return}}var v,x;while((v=m.trackers.shift())){if(!m.abort){f("CritComm : trackPageview",v.str);x=x||_gat._getTracker(g);x._trackPageview(v.str)}else{f("CritComm : tracking aborted",v.str)}if(typeof v.callback==="function"){v.callback()}}}catch(w){f(w,s[u]);if(typeof z==="function"){z()}}}m.abort=false;m.trackers=[];function q(t){return document.getElementById(t)}function l(x,y,w,v){var t=w||document.getElementsByTagName("body")[0];var u=document.createElement(x);u.id=y;if(v){t.insertBefore(u,v)}else{t.appendChild(u)}return u}function o(v,t,u){if(typeof v==="string"){v=q(v)}var w=v[t];if(typeof w==="function"){v[t]=function(){w();u()}}else{v[t]=u}}var c=function(){if(!document.getElementsByTagName("body")[0]){return false}c=function(){return true}};function r(t){f("CritComm : waiting for DOM");if(c()){if(typeof t==="function"){t()}}else{window.setTimeout(function(){r(t)},100)}}var i=(function(){var t=document.getElementsByTagName("script"),u=t[t.length-1];if(u.getAttribute.length!=="undefined"){return u.src}return u.getAttribute("src",-1)})();function d(t){if(!b.suppress){var u=l("div","CritCommWrapper",b.container,b.container.firstChild);u.innerHTML=j.replace(/%TEXT%/,t[0]).replace(/%URL%/,t[1]);m("/"+h+"/view");o(u.getElementsByTagName("a")[0],"onclick",function(){m("/"+h+"/click")})}else{m("/"+h+"/customdisplay");CritComm.track=function(v){m("/"+h+"/customdisplay/"+v)}}CritComm.text=t[0];CritComm.url=t[1];if(typeof b.callback==="function"){b.callback()}else{if(b.suppress){throw e}}}function n(){f("CritComm : searching messages");try{b.site.forEach(function(u){if(CritComm_Messages[u]&&CritComm_Messages[u].length===2){h=u;d(CritComm_Messages[u]);f('CritComm : message for "'+u+'" found',CritComm_Messages[u]);throw p}f('CritComm : message for "'+u+'" not found')})}catch(t){if(t!==p){throw t}}}return{init:function(t){if(!c()){r(function(){CritComm.init(t)});return}f("CritComm : initializing");b.site=t.site;b.container=t.container||"";b.suppress=t.suppress||false;b.callback=t.callback;k=t.debug||((/critcommdebug/i).test(window.location.hash));a=t.test||((/critcommtest/i).test(window.location.hash));if(a){b.site="test"}if(typeof b.site==="string"){b.site=b.site.split()}if(typeof b.container==="string"){b.container=q(b.container)||document.getElementsByTagName("body")[0]}f("CritComm : options",b);s(t.messagefile||i.replace(/critcomm(_min)?\.js/,"critcomm_messages.js"),n)}}})();if(!Array.prototype.forEach){Array.prototype.forEach=function(c,d){var a=this.length;for(var b=0;b<a;b++){c.call(d,this[b],b,this)}}};
