if ( typeof( AdLayer ) == 'undefined' )
{
	AdLayer = {
		id: null,
		overlay_id: null,
		data: null,

		options: {
			'height': 550,		// default height
			'width': 925,		// default width
			'duration': 0,	// how long to show the layer; 0 to require manual closing
			'reload': 86400,	// reload protection
			'overlay': true,	// place overlay over page content
			'overlay_opacity': 0.0,
			'overlay_color': '#000000',
			'close_image': 'close.png',
			'close_class': 'adlayer-closebutton',
			'class': 'adlayer'
		},

		adlist: [],

		init: function( options )
		{
			if ( typeof( options ) == 'object' )
			{
				for( var i in options )
				{
					this.options[i] = options[i];
				}
			}

			if ( this.adlist.length == 0 )
			{
				return;
			}

			var ts = new Date();

			// check if cookies are accepted; if not, exit immediately
			var ts2 = new Date( ts.getTime() + 60000 );
			document.cookie = 'test=test; path=/; expires=' + ts2.toGMTString();
			if ( !document.cookie.match( /test=test/ ) )
			{
					return;
			}
			// delete test cookie
			document.cookie = 'test=deleted; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT';

			if ( document.cookie.match( /adlayer=(\d+)/ ) )
			{
				return;
			}

			this.id = 'adlayer_' + ts.getTime();
			this.overlay_id = 'overlay_' + ts.getTime();

			var c = Math.floor( Math.random() * this.adlist.length );
			var iw, ih;

			if ( typeof ( window.innerWidth ) != 'undefined')
			{
				iw = window.innerWidth;
				ih = window.innerHeight;
			}
			else if ( typeof ( document.documentElement ) != 'undefined' && typeof ( document.documentElement.clientWidth ) != 'undefined' && document.documentElement.clientWidth != 0 )
			{
				iw = document.documentElement.clientWidth;
				ih = document.documentElement.clientHeight;
			}
			else
			{
				iw = document.getElementsByTagName('body')[0].clientWidth,
				ih = document.getElementsByTagName('body')[0].clientHeight
			}
			
			var w, h;
			if ( this.adlist[c].height )
			{
				h = this.adlist[c].height;
			}
			else
			{
				h = this.options['height'];
			}

			if ( this.adlist[c].width )
			{
				w = this.adlist[c].width;
			}
			else
			{
				w = this.options['width'];
			}
			var left = Math.floor( ( iw - w ) / 2 );
			var top = Math.floor( ( ih - h ) / 2 );
			var el = document.createElement( 'div' );
			el.style.height = h + 'px';
			el.style.width = w + 'px';
			el.style.zIndex = 9999;
			el.className = this.options['class'];
			if ( navigator.appVersion.match( /MSIE [456]/ ) )
			{
				el.style.position = 'absolute';
				el.style.zoom = 1.0;
			}
			else
			{
				el.style.position = 'fixed';
			}
			el.style.top = top + 'px';
			el.style.left = left + 'px';
			el.id = this.id;
			if ( this.adlist[c].type == 'iframe' )
			{
				var html = '<iframe width="' + w + '" height="' + h + '" border="0" frameborder="0" src="' + this.adlist[c].href + '"></iframe>';
				if ( this.options['close_image'] )
				{
					var style = 'position:absolute;display:block;z-index:10000;cursor:pointer;';
					if ( !this.options['close_class'] )
					{
						style += 'top:-16px;right:-16px;';
					}
					html = '<img onclick="AdLayer.close();" src="' + this.options['close_image'] + '" style="' + style + '" class="' + this.options['close_class'] + '" />' + html;
				}
				el.innerHTML = html;
			}
			else if ( this.adlist[c].type == 'element' )
			{
				var content = document.getElementById( this.adlist[c].href );
				if ( content )
				{
					this.data = content.parentNode;
					content.parentNode.removeChild( content );
					if ( this.options['close_image'] )
					{
						var img = new Image();
						img.src = this.options['close_image'];
						img.style.display = 'block';
						img.style.position = 'absolute';
						img.style.zIndex = 10000;
						img.style.cursor = 'pointer';
						if ( this.options['close_class'] )
						{
							img.className = this.options['close_class'];
						}
						else
						{
							img.style.right = '-16px';
							img.style.top = '-16px';
						}
						img.onclick = AdLayer.close;
						el.appendChild( img );
					}
					el.appendChild( content );
				}
			}

			var body = document.getElementsByTagName( 'body' )[0];
			if ( body )
			{
				if ( this.options['overlay'] )
				{
					var oh = Math.max(
						Math.max( body.scrollHeight, document.documentElement.scrollHeight),
						Math.max( body.offsetHeight, document.documentElement.offsetHeight),
						Math.max( body.clientHeight, document.documentElement.clientHeight)
					);
					var ow = Math.max(
						Math.max( body.scrollWidth, document.documentElement.scrollWidth),
						Math.max( body.offsetWidth, document.documentElement.offsetWidth),
						Math.max( body.clientWidth, document.documentElement.clientWidth)
					);
					var overlay = document.createElement( 'div' );
					overlay.id = this.overlay_id;
					overlay.style.backgroundColor = this.options['overlay_color'];
					overlay.style.position = 'absolute';
					overlay.style.display = 'block';
					overlay.style.margin = '0';
					overlay.style.padding = '0';
					overlay.style.width = ow + 'px';
					overlay.style.height = oh + 'px';
					overlay.style.top = 0;
					overlay.style.left = 0;
					// overlay.onclick = AdLayer.close;
					if ( typeof ( overlay.style.opacity ) != 'undefined' )
					{
						overlay.style.opacity = this.options['overlay_opacity'];
					}
					else if ( typeof ( overlay.style.mozOpacity ) != 'undefined' )
					{
						overlay.style.mozOpacity = this.options['overlay_opacity'];
					}
					else if ( typeof( overlay.style.webkitOpacity ) != 'undefined' )
					{
						overlay.style.webkitOpacity = this.options['overlay_opacity'];
					}
					else
					{
						overlay.style.filter = 'Alpha(Opacity=' + 100 * this.options['overlay_opacity'] + ')';
					}
					body.insertBefore( overlay, body.firstChild );
				}

				if ( this.options['duration'] > 0 )
				{
					window.setTimeout( 'AdLayer.close()', this.options['duration'] * 1000 );
				}

				body.insertBefore( el, body.firstChild );
			}
			ts.setTime( ts.getTime() + this.options['reload'] * 1000 );
			var domain = window.location.hostname;
			if ( domain.match( /^www\./ ) )
			{
				domain = domain.substr( 3 );
			}
			document.cookie = 'adlayer=' + c + '; path=/; expires=' + ts.toGMTString() + '; domain=' + domain;
		},

		add_iframe: function( url, width, height )
		{
			var item = {
				'type': 'iframe',
				'href': url,
				'width': width,
				'height': height
			}
			this.adlist.push( item );
		},

		add: function( id, width, height )
		{
			var item = {
				'type': 'element',
				'href': id,
				'width': width,
				'height': height
			}
			this.adlist.push( item );
		},

		close: function()
		{
			var el = document.getElementById( AdLayer.id );
			if ( el )
			{
				el.style.display = 'none';
				el.parentNode.removeChild(el);
				if ( AdLayer.data )
				{
					var content = el.firstChild;
					el.removeChild( content );
					AdLayer.data.appendChild( content );
				}
				delete el;
			}
			var overlay = document.getElementById( AdLayer.overlay_id );
			if ( overlay )
			{
				overlay.style.display = 'none';
				overlay.parentNode.removeChild(overlay);
				delete overlay;
			}
		}
	}
}


