// JavaScript Document

// Script written by Martin Walper , martin(at)klickhere.com
// Publisher KlickHere.com
//-----------------------------------------------------------------------------
// layer with alertbox


function topBoxCls()
{
	var visible = false;
	// please wait imgSrc
	var plsWait = 'resource/img/element/topBox/various/waitAni.gif';
	// location of layer
	var _loc;
	// All
	var _all;
	// container
	var _cnt;
	// stage
	var _stg;
	// closebutton
	var _btn;

	var _plsWaitImg;
	// explorer bugfix
	var _selectTags;

	var _initialized = false;

	/**
	 * events START
	 */
	this.open = function(imgSrc)
	{
		//alert('open')
		loadPlsWait();

		var img = loadImg(imgSrc)
		var newCnt = document.createElement('img');
		newCnt.setAttribute('src', img.src);
		//addEvent(newCnt, 'load', topBox.replaceCnt, false);
		newCnt.onload = function(){topBox.replaceCnt(this)};
	}

	this.close = function()
	{
		hide();
	}

	this.bgClick = function()
	{
		return false;
	}

	this.resize = function()
	{
		centerStg();
	}

	this.move = function()
	{

	}
	/**
	 * events END
	 */
	this.init = function()
	{
		__construct()
	}


	this.replaceCnt = function(obj)
	{
		removeCnt();
		_stg.style.width = obj.width+"px";
		_stg.style.height = (obj.height+stripPx(_btn.style.height))+"px";
		centerStg();
		_cnt.appendChild(obj);
		display();
	}

	// show please wait while loading
	function loadImg(imgSrc)
	{
		var randId = Math.floor(Math.random()*10000);
		var img = new Image();
		img.src = imgSrc+"?randid="+randId;
		return img;
	}

	function loadPlsWait()
	{
		var el_wait = document.createElement('img');
		el_wait.setAttribute('src', _plsWaitImg.src);
		topBox.replaceCnt(el_wait);
	}

	function hide()
	{
		_all.style.display = 'none';
		ieBugfix('block');
		visible = false;
	}

	function display()
	{
		ieBugfix('none');
		_all.style.display = 'block';
		visible = true;
	}

	function __construct()
	{
		if (true == _initialized)
		{
			return;
		}
		_loc = document.getElementsByTagName('body')[0];
		_selectTags = document.getElementsByTagName('select');
		_plsWaitImg = loadImg(plsWait);
		writeLayer();
		// get html
		_all = $('topBox_all');
		_stg = $('topBox_stage');
		_cnt = $('topBox_cnt');
		_btn = $('topBox_closebtn');

		// add Events
		addEvent(_btn, 'click', topBox.close, false);
		addEvent(_cnt, 'click', topBox.close, false);
		addEvent(_all, 'click', topBox.bgClick, false);
		addEvent(window, 'resize', topBox.resize, false);
		addEvent(window, 'scroll', topBox.bgClick, false);


		_initialized = true;
	}

	function writeLayer()
	{
		var layer = '<div id="topBox_bg"></div>';
		layer += '<div id="topBox_stage">';
		layer += '	<div id="topBox_closebtn" class="hand"><img src="resource/img/element/topBox/various/btn_close_en.gif" class="opacity"/></div>';
		layer += '	<div id="topBox_cnt">&nbsp;</div>';
		layer += '	<div id="topBox_logo"><img src="resource/img/element/topBox/various/logo.gif"/></div>';
		layer += '</div>';

		var bodycnt = document.createElement('DIV');
		bodycnt.setAttribute('id', 'topBox_all');
		bodycnt.innerHTML = layer;
		_loc.appendChild(bodycnt);
	}

	function centerStg()
	{
		var scrollH, windowH;

		if (self.pageYOffset || self.innerHeight)
		{
			scrollH = self.pageYOffset;
			windowH = self.innerHeight;
		}
		else if (document.body && (document.body.scrollTop || document.body.offsetHeight)) // other Explorers
		{
			scrollH = document.body.scrollTop;
			windowH = document.body.offsetHeight;
			//alert('document.body.scrollTop= '+document.body.scrollTop);
		}
		else if (document.documentElement) // Explorers strict
		{
			scrollH = document.documentElement.scrollTop;
			windowH = document.documentElement.offsetHeight;
		}
		else
		{
			scrollH = 0;
			windowH = 0;
		}
		_all.style.top = scrollH+"px";
		_stg.style.top = Math.ceil((windowH/2)-(stripPx(_stg.style.height)/2))+"px";

		//_stg.style.top = 100+"px";

	}

	function removeCnt()
	{
		var fC;
		while(_cnt.childNodes.length)
		{
			fC = _cnt.firstChild;
			_cnt.removeChild(fC);
		}
	}

	function stripPx(str)
	{
		return str.replace('px','');
	}

	function ieBugfix(display)
	{
		for (var i=0;i<_selectTags.length;i+=1)
		{
			_selectTags[i].style.display = display;
		}
	}
}

var topBox = new topBoxCls();
addEvent(window, 'load',topBox.init,false);

