;(function(window,document,undefined){;(function(window,document,undefined){window.Logger=window.Logger||(function(){var storage=window.localStorage;var enabled=storage?storage['loggers']?JSON.parse(storage['loggers']):{}:{};var historyMap={};var logHistory=true;var save=function(){if(storage){storage['loggers']=JSON.stringify(enabled);}};var print=function(args){if(typeof(console)==="undefined"||!console.log)return;console.log(args);};var addToHistory=function(region,args){if(!logHistory)return;if(!historyMap[region]){historyMap[region]=[];}
historyMap[region].push(args);if(region!=='all'){if(!historyMap['all']){historyMap['all']=[];}
historyMap['all'].push(args);}};var isArray=function(value){return Object.prototype.toString.apply(value)==='[object Array]';};var keys=function(value){var keys=[];for(var key in value){if(value.hasOwnProperty(key)){keys[keys.length]=key;}}
return keys;};var self={log:function(region){var isRegionEnabled=false;var args;if(arguments.length===1){isRegionEnabled=true;args=Array.prototype.slice.call(arguments);region='all';}else{isRegionEnabled=enabled['all']||enabled[region]||false;args=Array.prototype.slice.call(arguments,1);}
if(isRegionEnabled){if(args.length===1&&isArray(args[0])){args=args[0];}
args.unshift(region);print(args);}
addToHistory(region,args);},enable:function(region){region=region||'all';enabled[region]=true;save();},disable:function(region){region=region||'all';delete enabled[region];save();},disableAll:function(){enabled={};enabled['all']=false;save();},enableAll:function(){enabled['all']=true;save();},printHistory:function(region){region=region||'all';for(var i=0;i<historyMap[region].length;i++){print(historyMap[region][i]);}},list:function(){print(keys(historyMap));}};return self;})();})(window,document);var XD=function(){var attached_callback,window=this;return{postMessage:function(message,target_url,target){if(!target_url){return;}
target=target||parent;if(window['postMessage']){target['postMessage'](message,target_url.replace(/([^:]+:\/\/[^\/]+).*/,'$1'));}},receiveMessage:function(callback,source_origin){if(window['postMessage']){if(callback){attached_callback=function(e){if((typeof source_origin==='string'&&e.origin!==source_origin)||(Object.prototype.toString.call(source_origin)==="[object Function]"&&source_origin(e.origin)===!1)){return!1;}
callback(e);};}
if(window['addEventListener']){window[callback?'addEventListener':'removeEventListener']('message',attached_callback,!1);}else{window[callback?'attachEvent':'detachEvent']('onmessage',attached_callback);}}}};}();if(!Comm){var Comm=function(pageKey){this.pageKey=pageKey;}
Comm.prototype.sendMessage=function(name,command,data,target){target=target||window.parent;var obj={pageKey:this.pageKey,command:command,data:data};var msg=JSON.stringify(obj);Logger.log('comm',[name,'send',msg,this.pageKey]);XD.postMessage(msg,'*',target);};Comm.prototype.receiveMessage=function(name,domain,commandHandlers){var self=this;XD.receiveMessage(function(e){Logger.log('comm',[name,'receive',e.data,self.pageKey]);try{var obj=JSON.parse(e.data);if(!obj||typeof(obj)!=='object'){Logger.log('comm',[name,'missing command object',e.data,self.pageKey]);return;}
if(obj.pageKey!==self.pageKey){Logger.log('comm',[name,'received bogus message (mismatching page keys)',self.pageKey]);return;}
if(obj.command&&typeof(commandHandlers[obj.command])==='function'){commandHandlers[obj.command](obj.data);}}catch(err){Logger.log('comm',[name,'error parsing data',err,e.data,self.pageKey]);}},domain);};}
var pageKey='agtzfmNzc2ZpZGRsZXIMCxIEUGFnZRj06gsM';var comm=new Comm(pageKey);var getLinkTag=function(){var style=document.getElementById(pageKey);if(style){return style;}else{var tags=document.getElementsByTagName('link');for(var ix=0;ix<tags.length;ix++){if(tags[ix].getAttribute('href').indexOf(pageKey)>-1){Logger.log('iframe',['found matching link tag (by href)',pageKey]);return tags[ix];}}
Logger.log('iframe',["couldn't find a matching link/style tag...page/style key mismatch?",pageKey]);return null;}};var firebugEmbedded=false;var customizeFirebugLite=function(){var hideFirebugButton=false;var hideDeactivateButton=true;var hideOtherPanels=false;if(!(Firebug&&Firebug.chrome&&Firebug.chrome.document)){setTimeout(customizeFirebugLite,50);return;}
var doc=Firebug.chrome.document;if(hideFirebugButton){var fbButton=doc.getElementById('fbFirebugButton');fbButton.style.display='none';}
if(hideDeactivateButton){var btDeactivate=doc.getElementById('fbWindow_btDeactivate');btDeactivate.style.display='none';}
if(hideOtherPanels){Firebug.chrome.selectPanel('HTML');doc.getElementById('fbConsoleTab').style.display='none';doc.getElementById('fbScriptTab').style.display='none';doc.getElementById('fbDOMTab').style.display='none';}
Logger.log('iframe',['finished customizing Firebug Lite',pageKey]);};if(window!=window.top){;(function(){var _jq=window._jq=null;Logger.log('jqinject','loading jQuery...');if(typeof(jQuery)!=='undefined'){Logger.log('jqinject','jQuery is already loaded');_jq=window._jq=jQuery;return;}
var script=document.createElement('script');script.src='//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js';var head=document.getElementsByTagName('head')[0];var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){done=true;if(jQuery){Logger.log('jqinject','jQuery loaded');_jq=window._jq=jQuery.noConflict(true);}else{Logger.log('jqinject','jQuery failed to load');}
script.onload=script.onreadystatechange=null;head.removeChild(script);}};head.appendChild(script);})();comm.receiveMessage('iframe','http://www.webputty.net',{ready:function(data){comm.sendMessage('iframe','ready',{href:window.location.href});},printLog:function(data){Logger.printHistory(data);},update:function(data){var style=getLinkTag();if(!style){comm.sendMessage('iframe','missing_style_tag',{href:window.location.href});return;}
var head=style.parentNode;style.id='';new_style=document.createElement('style');new_style.id=pageKey;new_style.type='text/css';if(new_style.styleSheet){new_style.styleSheet.cssText=data;}else{new_style.innerHTML=data;}
head.appendChild(new_style);head.removeChild(style);},highlight:function(data){_jq('#css_editor_highlight_container').remove();selectors=data.selectors;if(!selectors||!selectors[0]){Logger.log('iframe',['got empty selector',pageKey]);return;}
var j=_jq(selectors[0]);for(var i=1;i<selectors.length;i++){j=j.find(selectors[i]);}
var container=_jq('<div id="css_editor_highlight_container">');j.each(function(i,e){var self=_jq(e);var offset=self.offset();var top=offset.top;var left=offset.left;var width=self.width();var height=self.height();var padding=[self.css('padding-top'),self.css('padding-right'),self.css('padding-bottom'),self.css('padding-left')];var margin=[self.css('margin-top'),self.css('margin-right'),self.css('margin-bottom'),self.css('margin-left')];var border=[self.css('border-top-width'),self.css('border-right-width'),self.css('border-bottom-width'),self.css('border-left-width')];var marginTop=margin[0].match(/^(\d+(\.\d+)?)px$/);if(marginTop&&Number(marginTop[1])){top-=Number(marginTop[1]);}
var marginLeft=margin[3].match(/^(\d+(\.\d+)?)px$/);if(marginLeft&&Number(marginLeft[1])){left-=Number(marginLeft[1]);}
var inner=_jq('<div>').css({width:width,height:height,margin:border.join(' '),border:'0 solid SlateBlue',borderWidth:padding.join(' '),backgroundColor:'SkyBlue'});var outer=_jq('<div>').css({opacity:0.8,top:top,left:left,backgroundColor:'#f99',zIndex:2147483647,border:'0 solid #EDFF64',borderWidth:margin.join(' '),position:'absolute'});inner.appendTo(outer);outer.appendTo(container);});container.appendTo('body');},firebug:function(data){if(data&&!firebugEmbedded){Logger.log('iframe',['adding Firebug Lite...',pageKey]);var script=document.createElement('script');script.src='https://getfirebug.com/firebug-lite.js#startOpened,disableWhenFirebugActive=false';var head=document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0];script.onload=script.onreadystatechange=function(){if(!firebugEmbedded&&(!this.readyState||this.readyState=='loaded'||this.readyState=='complete')){firebugEmbedded=true;script.onload=script.onreadystatechange=null;head.removeChild(script);Logger.log('iframe',['Firebug Lite loaded',pageKey]);customizeFirebugLite();}};head.appendChild(script);}else{Logger.log('iframe',['Firebug Lite already loaded, so re-open if closed',pageKey]);Firebug.chrome.open();}}});comm.sendMessage('iframe','ready',{href:window.location.href});}else{Logger.log('iframe',['top window, no one to talk to',pageKey]);if(window.location.search.indexOf('__preview_css__')!==-1){Logger.log('iframe',['__preview_css__ set in query string, so updating link tag...',pageKey]);var style=getLinkTag();if(!style)return;style.href+='?preview=1';}}})(window,document);
