//Interstitial Content Box v1.1- http://www.dynamicdrive.com/dynamicindex17/interstitial.htm
//Last modified: Nov 26th, 06' (New: disable webpage scrollbar, auto hide after x seconds options, 

var interstitialBox={
//1) list of files on server to randomly pick from and display
displayfiles: ['email_signup_form.htm'],

//2) display freqency: ["frequency_type", "frequency_value"]
displayfrequency: ["cookie", "session"],
//displayfrequency: ["chance", "1"],

//3) HTML for the header bar portion of the interstitial box
defineheader: '<div class="headerbar"><a href="#" onClick="javascript:interstitialBox.closeit(); return false"><img src="images/closeit.gif" style="border: 0" title="Close Box"/></a></div>',

//4) cookie setting: ["cookie_name", "cookie_path"]
cookiesetting: ["hsi_cookie", "path=/"],

//5) bust caching of pages fetched via Ajax?
ajaxbustcache: true,

//6) Disable browser scrollbars while interstitial is shown (Only applicable in IE7/Firefox/Opera8+. IE6 will just auto scroll page to top)?
disablescrollbars: true,

//7) Auto hide Interstitial Box after x seconds (0 for no)?
autohidetimer: 0,

////No need to edit beyond here//////////////////////////////////

ie7: window.XMLHttpRequest && document.all && !window.opera,
ie7offline: this.ie7 && window.location.href.indexOf("http")==-1, //check for IE7 and offline
launch:false,
scrollbarwidth: 16,

ajaxconnect:function(url, thediv){
var page_request = false
var bustcacheparameter=""
if (window.XMLHttpRequest && !this.ie7offline) // if Mozilla, IE7 online, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE6 or below, or IE7 offline (for testing purposes)
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
interstitialBox.loadpage(page_request, thediv)
}
if (this.ajaxbustcache) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
},

loadpage:function(page_request, thediv){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
	document.getElementById("interContent").innerHTML=page_request.responseText
	}
},

createcontainer:function(){
	//write out entire HTML for Interstitial Box:
	document.write('<div id="interContainer">'+this.defineheader+'<div id="interContent"></div></div><div id="interVeil"></div>')
	this.interContainer=document.getElementById("interContainer") //reference interstitial container
	this.interVeil=document.getElementById("interVeil") //reference veil
	this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
},


showcontainer:function(){
	if (this.interContainer.style.display=="none") return //if interstitial box has already closed, just exit (window.onresize event triggers function)
	var ie=document.all && !window.opera
	var dom=document.getElementById
	var scroll_top=(ie)? this.standardbody.scrollTop : window.pageYOffset
	var scroll_left=(ie)? this.standardbody.scrollLeft : window.pageXOffset
	var docwidth=(ie)? this.standardbody.clientWidth : window.innerWidth-this.scrollbarwidth
	var docheight=(ie)? this.standardbody.clientHeight: window.innerHeight
	var docheightcomplete=(this.standardbody.offsetHeight>this.standardbody.scrollHeight)? this.standardbody.offsetHeight : this.standardbody.scrollHeight
	var objwidth=this.interContainer.offsetWidth
	var objheight=this.interContainer.offsetHeight
	this.interVeil.style.width=docwidth+"px" //set up veil over page
	this.interVeil.style.height=docheightcomplete+"px" //set up veil over page
	this.interVeil.style.left=0 //Position veil over page
	this.interVeil.style.top=0 //Position veil over page
	this.interVeil.style.visibility="visible" //Show veil over page
	//this.interContainer.style.left=docwidth/2-objwidth/2+"px" //Position interstitial box
	this.interContainer.style.left="264px" //Position interstitial box

  var topposition=(docheight>objheight)? scroll_top+docheight/2-objheight/2+"px" : scroll_top+5+"px" //Position interstitial box
	//this.interContainer.style.top=Math.floor(parseInt(topposition))+"px"
	this.interContainer.style.top="252px"
  this.interContainer.style.visibility="visible" //Show interstitial box
	if (this.autohidetimer && parseInt(this.autohidetimer)>0 && typeof this.timervar=="undefined")
	this.timervar=setTimeout("interstitialBox.closeit()", this.autohidetimer*1000)
},

closeit:function(){
  //fade("interContent"); //tmoore - fade the content
/*************************************************/
  //fade("interVeil"); //tmoore - fade the veil
  this.interVeil.style.display="none"
/*************************************************/
  //fade("interContainer");	
  this.interContainer.style.display="none"
/*************************************************/
  //document.getElementById("interContent").innerHTML="set to nothing" //tmoore - set this to remove the current page that's playing
  //document.getElementById("interContent").style.zIndex="0";
  //this.interContainer.style.left="0px" //Position interstitial box

if (this.disablescrollbars && window.XMLHttpRequest) //if disablescrollbars enabled and modern browsers- IE7, Firefox, Safari, Opera 8+ etc
	this.standardbody.style.overflow="auto"
	if (typeof this.timervar!="undefined") clearTimeout(this.timervar)
},

getscrollbarwidth:function(){
var scrollbarwidth=window.innerWidth-(this.interVeil.offsetLeft+this.interVeil.offsetWidth) //http://www.howtocreate.co.uk/emails/BrynDyment.html
this.scrollbarwidth=(typeof scrollbarwidth=="number")? scrollbarwidth : this.scrollbarwidth
},

hidescrollbar:function(){
	if (this.disablescrollbars){ //if disablescrollbars enabled
	if (window.XMLHttpRequest) //if modern browsers- IE7, Firefox, Safari, Opera 8+ etc
	this.standardbody.style.overflow="hidden"
	else //if IE6 and below, just scroll to top of page to ensure interstitial is in focus
	window.scrollTo(0,0)
	}
},

dotask:function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
	var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
	if (target.addEventListener)
	target.addEventListener(tasktype, functionref, false)
	else if (target.attachEvent)
	target.attachEvent(tasktype, functionref)
},

initialize:function(){
this.createcontainer() //write out interstitial container
this.ajaxconnect(this.displayfiles[Math.floor(Math.random()*this.displayfiles.length)], this.interContainer) //load page into content via ajax
this.dotask(window, function(){interstitialBox.hidescrollbar(); interstitialBox.getscrollbarwidth(); setTimeout("interstitialBox.showcontainer()", 100)}, "load")
this.dotask(window, function(){interstitialBox.showcontainer()}, "resize")
}
}

/////////////End of interstitialBox object declaration here ////////////////////////////////

function getCookie(Name){
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
	return document.cookie.match(re)[0].split("=")[1] //return its value
	return null
}

function setCookie(name, value, days){
	var expireDate = new Date()
	//set "expstring" to either an explicit date (past or future)
	if (typeof days!="undefined"){ //if set persistent cookie
	var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))
	document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; "+interstitialBox.cookiesetting[1]
	}
	else //else if this is a session only cookie setting
	document.cookie = name+"="+value+"; "+interstitialBox.cookiesetting[1]
	}
	
	
	var stitialvars=new Object() //temporary object to reference/ shorthand certain interstitialBox properties
	stitialvars.freqtype=interstitialBox.displayfrequency[0] //"chance" or "cookie"
	stitialvars.cookieduration=interstitialBox.displayfrequency[1] //"session" or int (integer specifying number of days)
	stitialvars.cookiename=interstitialBox.cookiesetting[0] //name of cookie to use
	
	
	if (stitialvars.freqtype=="chance"){ //IF CHANCE MODE
	if (Math.floor(Math.random()*interstitialBox.displayfrequency[1])==0)
	interstitialBox.launch=true
	}
	else if (stitialvars.freqtype=="cookie" && stitialvars.cookieduration=="session"){ //IF "SESSION COOKIE" MODE
	if (getCookie(stitialvars.cookiename+"_s")==null){ //if session cookie is empty
	setCookie(stitialvars.cookiename+"_s", "loaded")
	interstitialBox.launch=true
	}
	}
	else if (stitialvars.freqtype=="cookie" && typeof parseInt(stitialvars.cookieduration)=="number"){ //IF "PERSISTENT COOKIE" MODE
	if (getCookie(stitialvars.cookiename)==null || parseInt(getCookie(stitialvars.cookiename))!=parseInt(stitialvars.cookieduration)){ //if persistent cookie is empty or admin has changed number of days to persist from that of the stored value (meaning, reset it)
	setCookie(stitialvars.cookiename, stitialvars.cookieduration, stitialvars.cookieduration)
	interstitialBox.launch=true
	} 
}

if (interstitialBox.launch)
interstitialBox.initialize()

/***********/
var TimeToFade = 1000.0;

function fade(eid) {
  var element = document.getElementById(eid);
  if(element == null)
    return;
   
  if(element.FadeState == null) {
    if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
      element.FadeState = 2;
    } else {
      element.FadeState = -2;
    }//end if
  }//end if
    
  if(element.FadeState == 1 || element.FadeState == -1) {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  } else {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }//end if
}// end function

// tmoore the following code came from http://blog.paranoidferret.com/index.php/2007/12/20/javascript-tutorial-simple-fade-animation/
// the purpose of this code is to fade out the window
function animateFade(lastTick, eid) {  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  var element = document.getElementById(eid);
  if(element.FadeTimeLeft <= elapsedTicks)  {
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
}// end if
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;
    element.style.opacity = (newOpVal - .3);                         //tmoore set to .3 instead of 0 to match the CSS fade    (FireFox and others)
    element.style.filter = 'alpha(opacity = ' + (newOpVal*70) + ')'; //tmoore set to 70 instead of 100 to match the CSS fade  (IE only)
    setTimeout("animateFade(" + curTick  + ",'" + eid + "')", 33);
    setTimeout("document.getElementById('interVeil').style.display='none'", TimeToFade);   //tmoore this is critical or you cannot touch the page
    //setTimeout("this.interVeil.style.display='none'", TimeToFade);   //tmoore this is critical or you cannot touch the page
}// end function