/*********************************************** * Interstitial Content Box- © Dynamic Drive DHTML code library (www.dynamicdrive.com) * This notice MUST stay intact for legal use * Visit Dynamic Drive at http:// www.dynamicdrive.com/ for full source code ***********************************************/ // 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: ['samplecontent.html', 'samplecontent2.html'], // For multiple types of content // displayfiles: ['interstitial.php'], displayfiles: ['visitor-signup.php'], // 2) display freqency: ["frequency_type", "frequency_value"] displayfrequency: ["cookie", "session"], // Shows only once per session // displayfrequency: ["chance", "1"], // 3) HTML for the header bar portion of the interstitial box defineheader: '
', // 4) cookie setting: ["cookie_name", "cookie_path"] cookiesetting: ["stitialcookie", "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: false, // 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('
'+this.defineheader+'
') 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 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.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(){ this.interVeil.style.display="none" this.interContainer.style.display="none" 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()