
if(typeof Tripline=='undefined'){var Tripline={};}
Tripline.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;i=i+1){d=(""+a[i]).split(".");o=Tripline;for(j=(d[0]=="Tripline")?1:0;j<d.length;j=j+1){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}
return o;};var YUE=YAHOO.util.Event,YUD=YAHOO.util.Dom,YUC=YAHOO.util.Connect;var doPost=function(form,bn){document[form].button.value=bn;return true;}
YUE.on('p','click',function(e){YUE.stopEvent(e);var iSearch=YUD.get('p');if(YUD.hasClass(iSearch,'light')){YUD.removeClass(iSearch,'light');}
if(iSearch.value=='search'){iSearch.value='';}else{iSearch.select();}});YUE.on('ask-button','click',function(e){YUE.stopEvent(e);var iSearch=YUD.get('p');if(!iSearch.value||iSearch.value=='search'){window.location='/ask/';}else{window.location='/ask?title='+iSearch.value;}});Tripline.tsearch=function(){if(Tripline.inFB){var oDS=new YAHOO.util.XHRDataSource("/api/v1/search/?fb=1&");}else{var oDS=new YAHOO.util.XHRDataSource("/api/v1/search/?");}
oDS.responseType=YAHOO.util.XHRDataSource.TYPE_JSON;oDS.responseSchema={resultsList:"content",fields:["display"]};oDS.maxCacheEntries=5;var oAC=new YAHOO.widget.AutoComplete("p","pcon",oDS);oAC.minQueryLength=4;oAC.queryDelay=0.2;oAC.suppressInputUpdate=true;oAC.allowBrowserAutocomplete=false;oAC.typeAhead=false;oAC.autoHighlight=false;oAC.queryQuestionMark=false;oAC.doBeforeExpandContainer=function(sQuery,oResponse){if(oAC._nDisplayedItems>=5){oAC.setFooter('<a class="normal" style="padding:5px 0px 5px 0px;" href="#search" onclick="document.forms.formSearch.submit()">go to search results</a>');}else{oAC.setFooter('');}
return true;}
var selectHandler=function(sType,aArgs){window.location=aArgs[1].childNodes[0].href;};oAC.itemSelectEvent.subscribe(selectHandler);return{oDS:oDS,oAC:oAC};}();YUE.onDOMReady(function(){if(!Tripline.login&&!Tripline.login.login_redirect){return;}
YUE.on('hd-sign-in','click',function(e){YUE.stopEvent(e);var bd=document.getElementsByTagName('body')[0];if(!YUD.hasClass(bd,'yui-skin-sam')){YUD.addClass(bd,'yui-skin-sam');}
window.setTimeout(function(){Tripline.login.dialogLogin.show();},100);})
YUE.on('home-sign-in','click',function(e){YUE.stopEvent(e);Tripline.login.login_redirect='/';var bd=document.getElementsByTagName('body')[0];if(!YUD.hasClass(bd,'yui-skin-sam')){YUD.addClass(bd,'yui-skin-sam');}
window.setTimeout(function(){Tripline.login.dialogLogin.show();},100);})
YUE.on('mytrips-sign-in','click',function(e){YUE.stopEvent(e);var bd=document.getElementsByTagName('body')[0];if(!YUD.hasClass(bd,'yui-skin-sam')){YUD.addClass(bd,'yui-skin-sam');}
window.setTimeout(function(){Tripline.login.dialogLogin.show();},100);})
YUE.on('create-sign-in','click',function(e){YUE.stopEvent(e);Tripline.login.login_redirect='/create/';var bd=document.getElementsByTagName('body')[0];if(!YUD.hasClass(bd,'yui-skin-sam')){YUD.addClass(bd,'yui-skin-sam');}
window.setTimeout(function(){Tripline.login.dialogLogin.show();},100);})
YUE.on('ask-sign-in','click',function(e){YUE.stopEvent(e);Tripline.login.login_redirect='/ask/';var bd=document.getElementsByTagName('body')[0];if(!YUD.hasClass(bd,'yui-skin-sam')){YUD.addClass(bd,'yui-skin-sam');}
window.setTimeout(function(){Tripline.login.dialogLogin.show();},100);})
YUE.on('dialogLogin','keydown',function(e){var target=YUE.getTarget(e);if(e.keyCode===13){if(target.nodeName.toLowerCase()==='input'){YUE.stopEvent(e);Tripline.login.dialogLogin.submit();}}
if(e.keyCode===27){YUE.stopEvent(e);Tripline.login.dialogLogin.cancel();}});var loginSubmit=function(){var iDone=YUD.get('login-done');iDone.value=Tripline.login.site_base+Tripline.login.login_redirect;this.submit();};var handleCancel=function(){this.cancel();};YUD.removeClass("dialogLogin","yui-pe-content");Tripline.login.dialogLogin=new YAHOO.widget.Dialog("dialogLogin",{width:"25em",fixedcenter:true,visible:false,modal:true,close:true,constraintoviewport:true,postmethod:'form',buttons:[{text:"Sign In",handler:loginSubmit}]});Tripline.login.dialogLogin.validate=function(){var data=this.getData();if(data.username==""||data.passwd==""){alert("Username and Password required.");return false;}
return true;};Tripline.login.dialogLogin.render();});YUE.onDOMReady(function(){Tripline.player={};Tripline.player.showDialog=function(t_id){if(!t_id)return;var playerEmbed='<object width="512" height="288"><param name="movie" value="'+Tripline.login.site_base+'/api/tripviewer.swf" /><param name="AllowScriptAccess" VALUE="always" /><param name="bgcolor" value="#111111" /><param name="allowFullScreen" value="true" /><param name="flashVars" value="tripId='+t_id+'&tripDataUrl='+Tripline.login.site_base+'/api/v1/kml/'+t_id+'?version=.2&mapsApiKey=ABQIAAAAA9rk3PBVYmwBFaK8U6L2BBSGk6n9_7P4Hc_MSCrbXGvqZu06axRNzkfL-lfkb7tx0GF_c1LVYHgGQg&embed=1&autoPlay=1" /><embed src="'+Tripline.login.site_base+'/api/tripviewer.swf" type="application/x-shockwave-flash" width="512" height="288" allowFullScreen="true" AllowScriptAccess="always" bgcolor="#111111" flashVars="tripId='+t_id+'&tripDataUrl='+Tripline.login.site_base+'/api/v1/kml/'+t_id+'?version=.2&mapsApiKey=ABQIAAAAA9rk3PBVYmwBFaK8U6L2BBSGk6n9_7P4Hc_MSCrbXGvqZu06axRNzkfL-lfkb7tx0GF_c1LVYHgGQg&embed=1"></embed></object>';YUD.get('dialog-player').innerHTML=playerEmbed;window.setTimeout(function(){Tripline.player.dialogPlayer.show();},100);};Tripline.player.showDialogVideo=function(videoId){if(!videoId)return;var playerEmbed='<iframe width="512" height="318" src="http://www.youtube.com/embed/'+videoId+'" frameborder="0" allowfullscreen></iframe>';YUD.get('dialog-player').innerHTML=playerEmbed;window.setTimeout(function(){Tripline.player.dialogPlayer.show();},100);};Tripline.player.closeDialog=function(){YUD.get('dialog-player').innerHTML='';Tripline.player.dialogPlayer.cancel();};YUD.removeClass("dialogPlayer","yui-pe-content");Tripline.player.dialogPlayer=new YAHOO.widget.Dialog("dialogPlayer",{width:"",fixedcenter:false,visible:false,modal:true,close:false,context:["bd","tl","tl",["beforeShow","windowResize"],[200,150]],constraintoviewport:true,buttons:[{text:"close",handler:Tripline.player.closeDialog}]});Tripline.player.dialogPlayer.render();});var fbconnect=function(done){document.location='/fbconnect.php'+'?done='+done;};var fblogout=function(){document.location='/sign_out/';};var fbshare=function(url,display){var share={method:'stream.share',u:url,display:display};FB.ui(share);};var fbsend=function(to,link,name,description,picture,display){var send={method:'send',to:to,link:link,name:name,description:description,picture:picture,display:display};FB.ui(send);};Tripline.davglass={getBrowserEngine:function(){var browsers=YAHOO.env.ua;browsers.msie=browsers.ie;browsers.ua=navigator.userAgent;return browsers;},getBrowserAgent:function(){return Tripline.davglass.getBrowserEngine();},getSizes:function(elm){elm=YUD.get(elm);var br=Tripline.davglass.getBrowserAgent(),out={},clipped=false;if(YUD.getStyle(elm,'display')=='none'){clipped=true;YUD.addClass(elm,'davglass');}
out.height=YUD.getStyle(elm,'height');out.width=YUD.getStyle(elm,'width');if(br.ie){if(out.height=='auto'){elm.style.zoom=1;out.height=elm.clientHeight+'px';}}
if(clipped){YUD.removeClass(elm,'davglass');}
return out;}};var TDG=Tripline.davglass;Tripline.nodeToggler={topNodes:{},togglers:{},hideAll:function(topNodes){if(typeof topNodes.visible!='undefined'){YUD.addClass(topNodes.visible,'hide');}},toggleHide:function(el){if(YUD.hasClass(el,'hide')){YUD.removeClass(el,'hide');}else{YUD.addClass(el,'hide');}},hide:function(togglers){var t=togglers;var targetHeight=parseInt(togglers.toggleNodeHeight,10);var toggleNode=togglers.toggleNode;var attributes={height:{from:targetHeight,to:0}}
if(YUD.getStyle(toggleNode,'overflow')!='hidden'){YUD.setStyle(toggleNode,'overflow','hidden');}
var objAnim=new YAHOO.util.Anim(toggleNode,attributes,.3,YAHOO.util.Easing.easeIn);var that=this;objAnim.onComplete.subscribe(function(){that.toggleHide(toggleNode);that.topNodes[t.topNodeId]['visibleCount']-=1;if(that.topNodes[t.topNodeId]['visibleCount']==0){YUD.removeClass(that.topNodes[t.topNodeId]['wpItem'],'wp-active');}});objAnim.animate();},show:function(togglers){var t=togglers;var targetHeight=parseInt(togglers.toggleNodeHeight,10);var toggleNode=togglers.toggleNode;if(YUD.hasClass(toggleNode,'chart')&&typeof Tripline.trip.t_id!='undefined'){var dChart=YUD.get('trip-image-chart');var src='/elev_chart.php?t_id='+Tripline.trip.t_id;dChart.src=src;}
var attributes={height:{from:0,to:targetHeight}}
if(YUD.getStyle(toggleNode,'overflow')!='hidden'){YUD.setStyle(toggleNode,'overflow','hidden');}
YUD.setStyle(toggleNode,'height','0px');var objAnim=new YAHOO.util.Anim(toggleNode,attributes,.3,YAHOO.util.Easing.easeIn);var that=this;objAnim.onComplete.subscribe(function(){that.topNodes[t.topNodeId]['visibleCount']=that.topNodes[t.topNodeId]['visibleCount']+1;if(!YUD.hasClass(that.topNodes[t.topNodeId]['wpItem'],'wp-active')){YUD.addClass(that.topNodes[t.topNodeId]['wpItem'],'wp-active');}
YUD.setStyle(toggleNode,'height','auto');});this.toggleHide(toggleNode);objAnim.animate();},toggle:function(el){var nodeId=YUD.getAttribute(el,'id');var rel=YUD.getAttribute(el,'rel');if(!rel){return;}
if(!nodeId){nodeId=YUD.generateId(el);}
if(typeof this.togglers[nodeId]=='undefined'){var topNode=YUD.getAncestorByClassName(el,'wp-top');var wpItem=YUD.getAncestorByClassName(el,'wp-item');var toToggle=YUD.getElementsByClassName(rel,'div',topNode)[0];var height=TDG.getSizes(toToggle).height;var toToggleNodeId=YUD.getAttribute(toToggle,'id');if(!toToggleNodeId){toToggleNodeId=YUD.generateId(toToggle);}
var topNodeId=YUD.getAttribute(topNode,'id');if(!topNodeId){topNodeId=YUD.generateId(topNode);}
if(typeof this.topNodes[topNodeId]=='undefined'){this.topNodes[topNodeId]=[];}
this.togglers[nodeId]={topNodeId:topNodeId,topNode:top,toggleNode:toToggle,toggleNodeHeight:height}
this.topNodes[topNodeId][toToggleNodeId]=this.togglers[nodeId].toggleNode;if(typeof this.topNodes[topNodeId]['wpItem']=='undefined'){this.topNodes[topNodeId]['wpItem']=wpItem;}
if(typeof this.topNodes[topNodeId]['visibleCount']=='undefined'){this.topNodes[topNodeId]['visibleCount']=0;}}
if(!this.togglers[nodeId].toggleNode||this.topNodes.visible==this.togglers[nodeId].toggleNode){return;}
if(this.topNodes.visible){}
if(YUD.hasClass(this.togglers[nodeId].toggleNode,'hide')){this.show(this.togglers[nodeId]);}else{this.hide(this.togglers[nodeId]);}},genericToggleHandler:function(e){var target=YUE.getTarget(e);if(YUD.hasClass(target,'toggle')){YUE.preventDefault(e);Tripline.nodeToggler.toggle(target);return;}
if(YUD.hasClass(target.parentNode,'toggle')){YUE.preventDefault(e);Tripline.nodeToggler.toggle(target.parentNode);return;}}}
YUE.onDOMReady(function(){Tripline.Copier={};Tripline.Copier.wpCopySuccess=function(o){var json;try{json=YAHOO.lang.JSON.parse(o.responseText);if(json.stat==1){var c=json.content;Tripline.Copier.dialogCopyWaypoint.cancel();if(Tripline.inFB){var url='/api/fbcanvas/trip.php?id='+c['place'].id;}else{var url='/trip/'+escape(c['place'].name)+'-'+c['place'].id;}
if(confirm('Place copied to '+c['place'].name+' successfully. Would you like to open the map page now?')){window.location.href=url;return;}else{return;}}}
catch(x){}
Tripline.Copier.wpCopyFail(o);};Tripline.Copier.wpCopyFail=function(o){alert('Error copying waypoint');}
Tripline.Copier.copyToNewTrip=function(tripTitle,scope,wpTitle,point){var callback={success:Tripline.Copier.wpCopySuccess,failure:Tripline.Copier.wpCopyFail};var sUrl='/ws/wrap/api/v1/kml/?format=json';var postData='title='+tripTitle+'&scope='+scope+'&u_id='+Tripline.login.id+'&point_name='+wpTitle+'&point='+point+'&point_start=1';YUC.asyncRequest('POST',sUrl,callback,postData);};Tripline.Copier.copyToExistingTrip=function(mstr_id,t_id){var callback={success:Tripline.Copier.wpCopySuccess,failure:Tripline.Copier.wpCopyFail};var sUrl='/ws/wrap/api/v1/kml/'+t_id+'/copy_waypoint?format=json';var postData='mstr_id='+mstr_id;YUC.asyncRequest('POST',sUrl,callback,postData);};Tripline.Copier.handleSubmit=function(){if(YUD.get('copy-type-new').checked){var tripTitle=escape(YUD.get('new_trip_title').value);if(!tripTitle){alert('You need to enter a title!');return;}
var selScope=YUD.get('sel_scope');var scope=selScope.options[selScope.selectedIndex].value;var wpTitle=YUD.get('copied_wp_title').innerHTML;var point=YUD.get('copied_wp_point').value;Tripline.Copier.copyToNewTrip(tripTitle,scope,wpTitle,point);}else if(YUD.get('copy-type-existing').checked){var mstr_id=YUD.get('copied_wp_mstr_id').value;var selTrip=YUD.get('sel-trip');var t_id=selTrip.options[selTrip.selectedIndex].value;if(!t_id||t_id==-1)return;Tripline.Copier.copyToExistingTrip(mstr_id,t_id);}};Tripline.Copier.handleCancel=function(){this.cancel();};Tripline.Copier.getMyTripsSuccess=function(o){var json;var elOptNew;var elSel=YUD.get('sel-trip');try{json=YAHOO.lang.JSON.parse(o.responseText);if(json.stat==1){var c=json.content;for(var i in c){elOptNew=document.createElement('option');elOptNew.text=c[i].title;elOptNew.value=c[i].t_id;try{elSel.add(elOptNew,null);}
catch(ex){elSel.add(elOptNew);}}
elOptNew=document.createElement('option');elOptNew.text='- select a map -';elOptNew.value='-1';elSel[0]=elOptNew;return;}else{elOptNew=document.createElement('option');elOptNew.text='No existing maps';elOptNew.value='-1';elSel[0]=elOptNew;}}
catch(x){Tripline.Copier.getMyTripsFail(o);}};Tripline.Copier.getMyTripsFail=function(o){}
Tripline.Copier.getMyTrips=function(){var callback={success:Tripline.Copier.getMyTripsSuccess,failure:Tripline.Copier.getMyTripsFail};var sUrl='/ws/wrap/api/v1/trip/litelist?u_id='+Tripline.login.id+'&format=json';YUC.asyncRequest('GET',sUrl,callback);};Tripline.Copier.open=function(mstr_id,wp_title,lat,lng){YUD.get('copied_wp_title').innerHTML=wp_title;YUD.get('copied_wp_mstr_id').value=mstr_id;YUD.get('copied_wp_point').value=lat+','+lng;Tripline.Copier.getMyTrips();window.setTimeout(function(){Tripline.Copier.dialogCopyWaypoint.show();},100);};YUE.on('dialogCopyWaypoint','keydown',function(e){var target=YUE.getTarget(e);if(e.keyCode===27){YUE.stopEvent(e);Tripline.Copier.dialogCopyWaypoint.cancel();}});YUE.on('copy-type-existing','click',function(e){YUD.removeClass('copy-to-existing','hide');YUD.addClass('copy-to-new','hide');});YUE.on('copy-type-new','click',function(e){YUD.removeClass('copy-to-new','hide');YUD.addClass('copy-to-existing','hide');});YUD.removeClass("dialogCopyWaypoint","yui-pe-content");Tripline.Copier.dialogCopyWaypoint=new YAHOO.widget.Dialog("dialogCopyWaypoint",{width:"32em",fixedcenter:false,visible:false,modal:true,close:true,context:["bd","tl","tl",["beforeShow","windowResize"],[200,150]],constraintoviewport:true,buttons:[{text:"Cancel",handler:Tripline.Copier.handleCancel},{text:"Save",handler:Tripline.Copier.handleSubmit,isDefault:true}]});Tripline.Copier.dialogCopyWaypoint.render();});var array_remove=function(id,ary){var new_ary=[];for(var i in ary){if(i!=id){new_ary[i]=ary[i];}}
return new_ary;}
function removeChildren(parent){while(parent.firstChild){parent.removeChild(parent.firstChild);}}
function createDiv(opt_text,opt_className){var el=document.createElement("div");if(opt_text){el.innerHTML=opt_text;}
if(opt_className){el.className=opt_className;}
return el;}
function resetInnerDiv(div,className){YUD.getElementsByClassName(className,'div',div)[0].innerHTML='';}
function getParamValueFromUrl(param,url){param=param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+param+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(url);if(results==null)
return"";else
return results[1];}
function textCounter(field,cntfield,maxlimit,trim){if(field.value.length>maxlimit){if(trim){field.value=field.value.substring(0,maxlimit);}else{cntfield.value=maxlimit-field.value.length;YUD.addClass(cntfield,'alert');}}else{cntfield.value=maxlimit-field.value.length;if(YUD.hasClass(cntfield,'alert')){YUD.removeClass(cntfield,'alert');}}}
function trimText(text,limit){if(!limit){return text;}
if(text.length>limit){return text.substr(0,limit-3)+'...';}
return text;};function linkify(string,options){if(!options)options={};if(!options.limit)options.limit=32;if(!options.tagFill)options.tagFill='';var regex=/((http\:\/\/|https\:\/\/|ftp\:\/\/)|(www\.))+(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi;string=string.replace(regex,function(value){var m=value.match(/^([a-z]+:\/\/)/);var nice;var url;if(m)
{nice=value.replace(m[1],'');url=value;}
else
{nice=value;url='http://'+nice;}
return'<a class="offsite" href="'+url+'"'+(options.tagFill!=''?(' '+options.tagFill):'')+' target="_blank" rel="nofollow" >'+trimText(nice,options.limit)+'</a>';});return string;};function nl2br(str,is_xhtml){var breakTag='<br />';if(typeof is_xhtml!='undefined'&&!is_xhtml){breakTag='<br>';}
return(str+'').replace(/([^>]?)\n/g,'$1'+breakTag+'\n');};function addslashes(str){str=str.replace(/\\/g,'\\\\');str=str.replace(/\'/g,'\\\'');str=str.replace(/\"/g,'\\"');str=str.replace(/\0/g,'\\0');return str;};function stripslashes(str){str=str.replace(/\\'/g,'\'');str=str.replace(/\\"/g,'"');str=str.replace(/\\0/g,'\0');str=str.replace(/\\\\/g,'\\');return str;};String.prototype.trunc=function(n){return this.substr(0,n-1)+(this.length>n?'...':'');};function stallForTime(ms){var date=new Date();var curDate=null;do{curDate=new Date();}
while(curDate-date<ms);};function toggleVis(id){var el=document.getElementById(id);if(el.style.display!='none'){el.style.display='none';}
else{el.style.display='block';}}
function dateString(date_str){date_str=date_str.replace(/-/g,'\/');return new Date(date_str).toDateString();}
function prettyDate(date_str){var time_formats=[[60,'seconds',1],[120,'1 minute ago','1 minute from now'],[3600,'minutes',60],[7200,'1 hour ago','1 hour from now'],[86400,'hours',3600],[172800,'yesterday','tomorrow'],[604800,'days',86400],[1209600,'last week','next week'],[2419200,'weeks',604800],[4838400,'last month','next month'],[29030400,'months',2419200],[58060800,'last year','next year'],[2903040000,'years',29030400],[5806080000,'last century','next century'],[58060800000,'centuries',2903040000]];var time=(''+date_str).replace(/-/g,"/").replace(/[TZ]/g," ").replace(/^\s\s*/,'').replace(/\s\s*$/,'');if(time.substr(time.length-4,1)==".")time=time.substr(0,time.length-4);var seconds=(new Date-new Date(time))/1000;var token='ago',list_choice=1;if(seconds<0){seconds=Math.abs(seconds);token='from now';list_choice=2;}
var i=0,format;while(format=time_formats[i++])
if(seconds<format[0]){if(typeof format[2]=='string')
return format[list_choice];else
return Math.floor(seconds/format[2])+' '+format[1]+' '+token;}
return time;};
