var blogSearch;var months=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];var days=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];var mapsEnabled,map,mapIcon,pagePoints,mapText;var maxZIndex=1000;function init(){initSearch();initArchiveLinks();initMenuAndPageOption();window.setTimeout(initMap,100);}
function initSearch(){var q=$('q');q.observe('focus',checkSearch);q.observe('blur',checkSearch);blogSearch=new google.search.BlogSearch()
blogSearch.setSiteRestriction("http://www.foodmayhem.com/");blogSearch.setResultSetSize(GSearch.LARGE_RESULTSET);blogSearch.setNoHtmlGeneration();blogSearch.setSearchCompleteCallback(this,searchDone);$('search-form').observe('submit',doSearch);new Insertion.After('banner','<div id="searchResults" style="display:none;"><div id="search-close"><a href="#" id="search-close-link">close</a></div><div id="searchResult-items"></div><div class="gsc-branding">powered by <a href="http://www.google.com/"><img class="gsc-branding-img" src="http://www.google.com/uds/css/small-logo.png"></a></div></div>');$('search-close-link').observe('click',closeSearch);}
function initMenuAndPageOption(){$('menu-contact').observe('click',openContact);var hashP=getHashVal('p');if(hashP&&(p=='index'||p=='about'||p=='mayhem'||p=='images'||p=='contact'||p=='search'))p=hashP;if(p=='contact'){p=null;openContact();}}
function closeSearch(callBack){if(p==null)return;p=null;if(callBack&&('function'==typeof callBack)){new Effect.SlideUp('searchResults',{afterFinish:callBack});}else
new Effect.SlideUp('searchResults');}
function checkSearch(e){var s=$('q');if(e.type=='focus'){if(s.value=='Type search here...')s.value='';s.removeClassName('inactive');s.addClassName('active');}else{s.removeClassName('active');s.addClassName('inactive');if(s.value==null||s.value=='')s.value='Type search here...';}}
function doSearch(e){blogSearch.execute($('q').value);Event.stop(e);}
function searchDone(){if(p=='search'){closeSearch(searchDone);return;}
p='search';var sr=$('searchResult-items');sr.innerHTML='';var r=blogSearch.results;if(r.length>0){for(var i=0;i<r.length;i++)
sr.innerHTML+='<div class="result"><div class="result-title"><a href="/'+r[i].postUrl.substring(26)+'">'+r[i].title+'</a> <span class="result-date">('+formatSearchDate(r[i].publishedDate)+')</span></div><div class="result-content">'+r[i].content+'</div></div>';}else{sr.innerHTML='<div class="search-no-results">No Results</div>';window.setTimeout(closeSearch,3000);}
new Effect.SlideDown('searchResults',{scaleContent:false,scaleFrom:0,scaleTo:100,duration:.5});}
function formatSearchDate(d){var n=new Date();n.setTime(Date.parse(d));return days[n.getDay()]+', '+months[n.getMonth()]+' '+n.getDate()+', '+n.getFullYear();}
function closeOpen(){if(p=='about')closeAbout();else if(p=='contact')closeContact();else if(p=='error')closeError();else if(p=='search')closeSearch();}
function openContact(e){if(p!='contact'&&p!='error'){var opt={method:'post',onSuccess:function(t){showContact(t.responseText);},on404:function(t){showError(t.statusText);},onFailure:function(t){showError(t.status+': '+t.statusText);}};new Ajax.Request('/_contact.php',opt);}
if(e)Event.stop(e);return false;}
function showError(s){new Insertion.After('banner','<div id="error" style="display:none;"><div id="error-close" class="close-button">X</div><div><p>'+s+'</p></div></div>');Event.observe('error-close','click',closeError);p='error';new Effect.SlideDown('error',{scaleContent:false,scaleFrom:0,scaleTo:100,duration:.5});}
function closeError(){new Effect.SlideUp('error',{afterFinish:function(){Element.remove('error');p=null;}});}
function showContact(s){closeOpen();new Insertion.After('banner','<div id="contact-page" style="display:none;"><div id="contact-close" class="close-button">close</div><div><p>'+s+'</p></div></div>');Event.observe('contact-close','click',closeContact);new Effect.SlideDown('contact-page',{scaleContent:false,scaleFrom:0,scaleTo:100,duration:.5});Element.addClassName('menu-contact','menu-current');updateHash('p',p='contact');}
function closeContact(){new Effect.SlideUp('contact-page',{afterFinish:function(){Element.remove('contact-page');}});updateHash('p',p=null);Element.removeClassName('menu-contact','menu-current');}
function initMap(){if(window.location.href.indexOf('www.foodmayhem.com')==-1)return;if(!(mapsEnabled=GBrowserIsCompatible()))return;var postLocs=$('content').select('.goomappr-adr');var d=new Array();for(var i=0;i<postLocs.length;i++){var articleUrl=postLocs[i].up(2).select('.article-title a')[0].readAttribute('href'),orgName=postLocs[i].select('a')[0].innerHTML,st=postLocs[i].select('.goomappr-adr-street')[0].innerHTML,loc=postLocs[i].select('.goomappr-adr-locality')[0].innerHTML,reg=postLocs[i].select('.goomappr-adr-region')[0].innerHTML,pcode=postLocs[i].select('.goomappr-adr-pcode')[0].innerHTML,orgAdr=st+', '+pcode,txtAlt='Show Map for '+orgName+' at '+st+', '+loc+', '+reg+' '+pcode;d.push(new Array(orgName,orgAdr,articleUrl));var mapIconSpan=new Element('span');postLocs[i].appendChild(mapIconSpan);var mapIcon=new Element('img',{'src':'/img/mapIcon.png','alt':txtAlt,'title':txtAlt});mapIconSpan.addClassName('goomappr-mapicon');mapIconSpan.appendChild(mapIcon);mapIconSpan.innerHTML='('+mapIconSpan.innerHTML+')';postLocs[i].addClassName('goomappr-on');Event.observe(postLocs[i],"click",openMap);}
if(d.length>0){mapIcon=new GIcon(G_DEFAULT_ICON,'/img/fmMarker.png');pagePoints=new Array();mapText='<ul>';var gc=new GClientGeocoder();for(var i=0;i<d.length;i++){var text='<a href="'+d[i][2]+'" title="Click for article about '+d[i][0]+'">'+d[i][0]+'</a><br/>'+cleanAddress(d[i][1]);mapText+='<li>'+text+'</li>';pushPagePoint(d[i][1],text,gc);}
mapText+='</ul>';}}
function pushPagePoint(address,text,geocoder){var gc=geocoder?geocoder:new GClientGeocoder();gc.getLatLng(address,function(point){if(point){point.fmInfo='<div class="map-info-window">'+text+'</div>';pagePoints.push(point);}});}
function initMapPane(){new Insertion.Before('sidebar','<div id="map-wrapper"><div id="map-hider"><div id="map-pane"><div id="map-slide-rail"><h1><div id="map-close" class="close-button" title="Close">&raquo;</div>Location Mayhem</h1><div id="map"></div><div id="map-pane-content" style="height: '+(window.innerHeight-463)+'px;">&nbsp;</div></div></div></div></div>');$('map-close').observe('click',closeMap);map=new GMap2(document.getElementById("map"));map.addControl(new GSmallMapControl());refreshMap(pagePoints);$('map-pane-content').innerHTML=mapText;$('map-hider').hide();}
function cleanAddress(a){if(!a)return;return a.gsub(',','<br/>');}
function slideMap(){var deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;if(deltaY<173)deltaY=0;else deltaY-=150;return new Effect.Move('map-slide-rail',{y:deltaY,mode:'absolute'});}
function closeMap(){new Effect.SlideUp('map-hider',{scaleX:true,scaleY:false,scaleContent:false});}
function openMap(){if(mapsEnabled===false)return;if(!map)initMapPane();new Effect.SlideDown('map-hider',{scaleX:true,scaleY:true,scaleFrom:0,scaleTo:100.0,scaleContent:true});Event.observe(window,'scroll',slideMap);slideMap();}
function refreshMap(points){var west,east,north,south;map.clearOverlays();for(var i=0;i<points.length;i++){var lat=points[i].lat();var lng=points[i].lng();if(west==null||lng<west)west=lng;if(east==null||lng>east)east=lng;if(south==null||lat<south)south=lat;if(north==null||lat>north)north=lat;}
var center=new GLatLng((south+north)/2,(west+east)/2);var zoom=map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(south,west),new GLatLng(north,east)));map.setCenter(center,zoom);for(var i=0;i<points.length;i++){var m=new GMarker(points[i],mapIcon);var ciw=new CustomInfoWindow('ciw'+i,m,points[i].fmInfo);m.ciwId='ciw'+i;map.addOverlay(m);map.addOverlay(ciw);GEvent.addListener(m,'click',function(){$(this.ciwId).show();map.panTo(this.getPoint());});}}
function updateHash(n,v){var query=window.location.hash.substring(1);var newHash='';if(query){var vars=query.split("&");for(var i=0;i<vars.length;i++){var pair=vars[i].split("=");if(pair[0]==n){if(v!=null)newHash+=(i>0?'&':'')+pair[0]+'='+v;}else
newHash+=(i>0?'&':'')+vp[0]+'='+vp[1];}}else
if(v!=null)newHash=n+'='+v;if(newHash=='')newHash='#';window.location.hash=newHash;}
function getHashVal(n){var query=window.location.hash.substring(1);if(query){var vars=query.split("&");for(var i=0;i<vars.length;i++){var pair=vars[i].split("=");if(pair[0]==n)
return pair[1];}}
return false;}
function initArchiveLinks(){var archives=$('archives-2');if(!archives)return;var origMos=$$('#archives-2 li');var re=/href=['|"](.*)['|"]\stitle(?:.*)['|"]>([A-Za-z]+)\s(\d{4}).*nbsp\;\((\d+)\)/i;var reParts;var curYear=null;var ul,li;for(var i=0;i<origMos.length;++i){reParts=re.exec(origMos[i].innerHTML);if(reParts[3]!=curYear){curYear=reParts[3];archives.appendChild(new Element('h3').update(curYear));ul=new Element('ul',{'class':'archive-list'});ul.observe('mouseout',closeArchiveList);archives.appendChild(ul);li=new Element('li',{'class':'archive-select-item'}).update('Select a month...');li.observe('mouseover',openArchiveList);ul.appendChild(li);}
li=new Element('li');li.appendChild(new Element('a',{'href':reParts[1]}).update(reParts[2]+' '+curYear+' <span class="archive-post-count">('+reParts[4]+(reParts[4]==1?' post':' posts')+')</span>'));ul.appendChild(li);li.hide();origMos[i].hide();}}
function openArchiveList(ev){var aList=Event.element(ev);if(!aList)return;if(!aList.hasClassName('.archive-list'))
aList=aList.up('.archive-list');if(!aList)return;aList.setStyle({zIndex:++maxZIndex});aList.down('.archive-select-item').addClassName('archive-select-item-on');var aItems=aList.select('li');for(var i=0;i<aItems.length;++i){if(!aItems[i].hasClassName('archive-select-item')){aItems[i].show();aItems[i].addClassName('archive-month-item-on');}}}
function closeArchiveList(ev){var aList=Event.element(ev);if(!aList)return;if(!aList.hasClassName('.archive-list'))
aList=aList.up('.archive-list');if(!aList)return;var aItems=aList.select('li');var over=false,x=Event.pointerX(ev),y=Event.pointerY(ev);if(!(over=Position.within(aList,x,y))){for(var i=0;i<aItems.length;++i){if(over=Position.within(aItems[i],x,y))break;}}
if(!over){aList.down('.archive-select-item').removeClassName('archive-select-item-on');for(var i=0;i<aItems.length;++i){if(!aItems[i].hasClassName('archive-select-item')){aItems[i].hide();aItems[i].removeClassName('archive-month-item-on');}}}}
function hideIngredientIndex(){hideAllIngredientLetters();$('ingredient-index').addClassName('ingredient-index-box');items=$$('#ingredient-letter-bookmarks a');if(!items)return;for(var i=0;i<items.length;++i){items[i].observe('click',showIngredientLetter);}}
function hideAllIngredientLetters(){var items=$$('#ingredient-index div');if(!items)return;for(var i=0;i<items.length;++i){items[i].hide();}}
function showIngredientLetter(e){e=e.element().innerHTML;hideAllIngredientLetters();var indexSection="ingredient-list-"+e;new Effect.SlideDown(indexSection,{scaleContent:false,scaleFrom:0,scaleTo:100,duration:.5});}
document.observe("dom:loaded",init);
