 /*
Master JavaScript File.
 */
 
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Section: ajaxclientfx
Purpose: 
1. Contains client side javascript AJAX functions calls
2. Contains javascript to toggle phone# visibility 
Date     	Name        	Description
8/25/06 	erbjorkman  	Initial creation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
 
    var phone_state = 'hidden';
    
	function showhide(layer_ref)
	/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Purpose: Toggles client phone# to visible onclicking phone link
	Date     	Name        	Description
	8/25/06 	erbjorkman  	Initial creation
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
	{
		if (phone_state == 'hidden') 
		{
		phone_state = 'visible';
		}

		if (document.all) 
		{ //IS IE 4 or 5 (or 6 beta)
		eval( "document.all." + layer_ref + ".style.visibility = phone_state");
		}
		
		if (document.layers) 
		{ //IS NETSCAPE 4 or below
		document.layers[layer_ref].visibility = phone_state;
		}
		
		if (document.getElementById && !document.all) 
		{
		maxwell_smart = document.getElementById(layer_ref);
		maxwell_smart.style.visibility = phone_state;
		}
	}
 
    function logclick(url)
    /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Purpose: Asynchronous AJAX call to logclick to insert click
	Date		Name        	Description
	8/25/06 	erbjorkman  	Initial creation
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    {
	  //known bug. ajax agent drops querystring params after an ampersand. querystrings must 
	  //custom encoded on the client then similarly decoded on the server
      url = replace(url,'&','||');
      //alert(url);

      agent.call('','logclick','',url);
      //agent.call('','logclick','callback_logclick',url);
    }
      
    function replace(string_source,find_string,replace_string)
    /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	Purpose: String replace 
	Date     	Name        	Description
	8/25/06 	erbjorkman  	Initial creation
	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
    {
		while(string_source.indexOf(find_string) > -1)
		{
		string_source = string_source.replace(find_string,replace_string);
		}
		return string_source;
	}    

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Section: jumpList Dropdown
Purpose: To write the URL in the PubDropDown and not expose the url.
Date     	Name        Description
8/15/2007 	cmoen  		Initial creation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

function jumpList(pubform){

var URL = document.pubform.site.options[document.pubform.site.selectedIndex].value;

if (URL == "gtr-aca" ) {URL = "http://acadianationalpark.com";}
else if (URL == "gtr-asp") {URL = "http://allaspen.com";}
else if (URL == "gtr-blk") {URL = "http://allblackhills.com";}
else if (URL == "gtr-bsk") {URL = "http://bigskymontananet.com";}
else if (URL == "gtr-bzm") {URL = "http://bozemannet.com";}
else if (URL == "gtr-crb") {URL = "http://allcrestedbutte.com";}
else if (URL == "gtr-cyw") {URL = "http://codywyomingnet.com";}
else if (URL == "gtr-glp") {URL = "http://allglacier.com";}
else if (URL == "gtr-gtp") {URL = "http://allgrandteton.com";}
else if (URL == "gtr-jkh") {URL = "http://jacksonholenet.com";}
else if (URL == "gtr-pcy") {URL = "http://allparkcity.com";}
else if (URL == "gtr-rlm") {URL = "http://allredlodge.com";}
else if (URL == "gtr-rnp") {URL = "http://allrockymountain.com";}
else if (URL == "gtr-stm") {URL = "http://allsteamboat.com";}
else if (URL == "gtr-sum") {URL = "http://allsummitcounty.com";}
else if (URL == "gtr-sun") {URL = "http://allsunvalley.com";}
else if (URL == "gtr-tel") {URL = "http://alltelluride.com";}
else if (URL == "gtr-val") {URL = "http://allvail.com";}
else if (URL == "gtr-wtp") {URL = "http://allwinterpark.com";}
else if (URL == "gtr-wys") {URL = "http://allwestyellowstone.com";}
else if (URL == "gtr-ynp") {URL = "http://yellowstoneparknet.com";}
			
window.location.href = URL;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Section: NoURL
Purpose: To write the URL href and not expose the URL.
Date     	Name        Description
8/15/2005 	cfay  		Initial creation
7/15/2008	bhansen		Seprated into two emails (content & cams)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

<!-- Begin
var dom;
function jtag1(dom){
document.write('<a href="http://www.' + dom + '.com" rel="nofollow">');
}
function jtag2(){
document.write('</a>');
}
//-->
//  End -->

function writeLink(dom, ext) {
	document.write("<a target='_blank' href='" + "http://www." + dom + "." + ext + "'>www." + dom + "." + ext + "</a>"); }

function writeEmail(handle, dom, ext, txt) {
	document.write("<a href='mail" + "to:" + handle + "&#064;" + dom + "." + ext + "?subject=Content Request for " + document.URL + "'>" + txt + "</a>");
}

function emailMaskContent(){
   var url = window.location.href;
   var nohttp = url.split('//')[1];
   var hostPort = nohttp;

   var end = 'om'
   var middle = 't@verticalmedia.c'
   var start = 'conten'
   var subject = 'Page Needs Attention: ' + hostPort;
  
   var one ='mai';
   var two='lto:';
   var three='?Subject=';
   //start,middle,end,subject,body;
var putogether= one+two+start+middle+end+three+subject;
document.location.href=eval('"'+putogether+'"');
window.status=putogether;
}

function emailMaskCams(){
   var url = window.location.href;
   var nohttp = url.split('//')[1];
   var hostPort = nohttp;

   var end = 'om'
   var middle = 's@verticalmedia.c'
   var start = 'cam'
   var subject = 'Cam Needs Attention: ' + hostPort;
  
   var one ='mai';
   var two='lto:';
   var three='?Subject=';
   //start,middle,end,subject,body;
var putogether= one+two+start+middle+end+three+subject;
document.location.href=eval('"'+putogether+'"');
window.status=putogether;
}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Section: Events Scroller
Purpose: To scroll the next 9 events from the Events Calendar.
Date     	Name        Description
8/30/2008 	dbaxa  		Initial creation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

<!-- hide
 
function pausescroller(content, divId, divClass, delay){
 
this.content=content //message array content
this.tickerid=divId //ID of ticker div to display information
this.delay=delay //Delay between msg change, in miliseconds.
this.mouseoverBol=0 //Boolean to indicate whether mouse is currently over scroller (and pause it if it is)
this.hiddendivpointer=1 //index of message array for hidden div
document.write('<span>Events<a href="/events/">view all</a></span><div id="'+divId+'" class="'+divClass+'" style="position: relative; overflow: hidden"><br /><div class="innerDiv" style="position: absolute; width: 100%" id="'+divId+'1">'+content[0]+'</div><div class="innerDiv" style="position: absolute; width: 100%; visibility: hidden" id="'+divId+'2">'+content[1]+'</div></div>')
var scrollerinstance=this
if (window.addEventListener) //run onload in DOM2 browsers
window.addEventListener("load", function(){scrollerinstance.initialize()}, false)
else if (window.attachEvent) //run onload in IE5.5+
window.attachEvent("onload", function(){scrollerinstance.initialize()})
else if (document.getElementById) //if legacy DOM browsers, just start scroller after 0.5 sec
setTimeout(function(){scrollerinstance.initialize()}, 500)
}
 
// -------------------------------------------------------------------
// initialize()- Initialize scroller method.
// -Get div objects, set initial positions, start up down animation
// -------------------------------------------------------------------
 
pausescroller.prototype.initialize=function(){
this.tickerdiv=document.getElementById(this.tickerid)
this.visiblediv=document.getElementById(this.tickerid+"1")
this.hiddendiv=document.getElementById(this.tickerid+"2")
this.visibledivtop=parseInt(pausescroller.getCSSpadding(this.tickerdiv))
//set width of inner DIVs to outer DIV's width minus padding (padding assumed to be top padding x 2)
this.visiblediv.style.width=this.hiddendiv.style.width=this.tickerdiv.offsetWidth-(this.visibledivtop*2)+"px"
this.getinline(this.visiblediv, this.hiddendiv)
this.hiddendiv.style.visibility="visible"
var scrollerinstance=this
document.getElementById(this.tickerid).onmouseover=function(){scrollerinstance.mouseoverBol=1}
document.getElementById(this.tickerid).onmouseout=function(){scrollerinstance.mouseoverBol=0}
if (window.attachEvent) //Clean up loose references in IE
window.attachEvent("onunload", function(){scrollerinstance.tickerdiv.onmouseover=scrollerinstance.tickerdiv.onmouseout=null})
setTimeout(function(){scrollerinstance.animateup()}, this.delay)
} 

// -------------------------------------------------------------------
// animateup()- Move the two inner divs of the scroller up and in sync
// -------------------------------------------------------------------
 
pausescroller.prototype.animateup=function(){
var scrollerinstance=this
if (parseInt(this.hiddendiv.style.top)>(this.visibledivtop+5)){
this.visiblediv.style.top=parseInt(this.visiblediv.style.top)-5+"px"
this.hiddendiv.style.top=parseInt(this.hiddendiv.style.top)-5+"px"
setTimeout(function(){scrollerinstance.animateup()}, 65)
}
else{
this.getinline(this.hiddendiv, this.visiblediv)
this.swapdivs()
setTimeout(function(){scrollerinstance.setmessage()}, this.delay)
}
}

// -------------------------------------------------------------------
// swapdivs()- Swap between which is the visible and which is the hidden div
// -------------------------------------------------------------------

pausescroller.prototype.swapdivs=function(){
var tempcontainer=this.visiblediv
this.visiblediv=this.hiddendiv
this.hiddendiv=tempcontainer
}

pausescroller.prototype.getinline=function(div1, div2){
div1.style.top=this.visibledivtop+"px"
div2.style.top=Math.max(div1.parentNode.offsetHeight, div1.offsetHeight)+"px"
}
 
// -------------------------------------------------------------------
// setmessage()- Populate the hidden div with the next message before it's visible
// -------------------------------------------------------------------
 
pausescroller.prototype.setmessage=function(){
var scrollerinstance=this
if (this.mouseoverBol==1) //if mouse is currently over scoller, do nothing (pause it)
setTimeout(function(){scrollerinstance.setmessage()}, 100)
else{
var i=this.hiddendivpointer
var ceiling=this.content.length
this.hiddendivpointer=(i+1>ceiling-1)? 0 : i+1
this.hiddendiv.innerHTML=this.content[this.hiddendivpointer]
this.animateup()
}
}
 
pausescroller.getCSSpadding=function(tickerobj){ //get CSS padding value, if any
if (tickerobj.currentStyle)
return tickerobj.currentStyle["paddingTop"]
else if (window.getComputedStyle) //if DOM2
return window.getComputedStyle(tickerobj, "").getPropertyValue("padding-top")
else
return 0
}

// end hide -->

