//init globals (DON'T TOUCH!)
_movePopLayerTrigger = false;
_popLayerOffsetX = 0;
_popLayerOffsetY = 0;
_lastPopLayerLeft = 0;
_lastPopLayerTop = 0;
popwindiv = null;
popwingui = null;
popwinplayer = null;

offsetX = 0;
offsetY = 0;

getScrollXY = function() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return {x: scrOfX, y: scrOfY, left: scrOfX, top: scrOfY};
}
getInnerDimensions = function() {
	// Get window dimensions
	var wX,wY;
	var scroll = getScrollXY();
	var scrollbaroffset = 25;
	if (self.innerHeight) { // all except Explorer
		wX = self.innerWidth;
		wY = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { 	// Explorer 6 Strict Mode
		wX = document.documentElement.clientWidth + scroll.x;
		wY = document.documentElement.clientHeight + scroll.y;
	} else if (document.body) {// other Explorers
		wX = document.body.clientWidth;
		wY = document.body.clientHeight;
	}
	return {width: wX - offsetX - scrollbaroffset, height: wY - offsetY - scrollbaroffset};
}
//javascript:var x = document.createElement('div');x.appendChild(document.createElement('textarea').setAttribute('id', 'deb'));x.appendChild(document.createElement('button').setAttribute('onclick', 'function(){eval($("dev").value)}'));body.appendChild(x);
popLayer = function (w,h,gui,e){
	//set defaults
	w = w ? w : 210;
	h = h ? h : 160;
	// Setting title to something fix
	title = 'Prelisten';
	offsetX = w;
	offsetY = h;
	var d = getInnerDimensions();
	var scroll = getScrollXY();

	//get or create element...
	if(!$('popwindiv')){
		//create div
		popwindiv = document.createElement('div');
		popwindiv.id = 'popwindiv';
		popwindiv.style.position = document.all ? 'absolute' : 'fixed'; //fixed position for MSIE is patched!
		popwindiv.style.zIndex = 1000000;
		popwindiv.style.visibility = 'hidden';
/*		popwindiv.style.backgroundColor = '#ffffff'; */
		document.getElementsByTagName('body')[0].appendChild(popwindiv);

		//add gui
		if(gui !== false){
			popwingui = document.createElement('div');
			popwingui.id = 'popwingui';
			popwingui.style.width = w + 'px';                                                                                                                                                                                               // null results in a faulty request to the server.. maybe an empty page would be a better choice ?!
			popwingui.innerHTML = "<span style='float: left;'>" + title + "</span><a href=\"#\" onclick=\"javascript:$('popwindiv').style.visibility='hidden';javascript:$('popwinplayer').innerHTML='Loading...';return false;\"><img src=\"/me/pub/c/2138354/0/de/web/img/close.gif\" alt=\"close\" title=\"close\" /></a>";
			popwindiv.appendChild(popwingui);
		}

		//add player
		popwinplayer = document.createElement('DIV');
		popwinplayer.id = 'popwinplayer';
		popwinplayer.name = 'popwinplayer';
/*		popwinplayer.style.backgroundColor = '#000'; */
		popwinplayer.innerHTML = 'Loading...';
		popwindiv.appendChild(popwinplayer);
	}else{
		//get elements
		popwindiv = $('popwindiv');
		popwingui = $('popwingui');
		popwinplayer = $('popwinplayer');
	}

	//resize element...
	popwindiv.style.width = w + 'px';
	popwindiv.style.height = (h + parseInt(popwingui.offsetHeight)) + 'px';

	popwinplayer.style.width = w + 'px';
	popwinplayer.style.height = h + 'px';	

	if(document.all){
		var l = event.clientX - w + scroll.left;
		if(l < 0) l = 0;
		if(l > d.width) l = d.width;
		var t = event.clientY - (h/2) + scroll.top;
		if(t < 0) t = 0;
		if(t > d.height) t = d.height;
		popwindiv.style.left = _lastPopLayerLeft = l + 'px';
		popwindiv.style.top = _lastPopLayerTop = t + 'px';
        window.onscroll = window.onresize = _MSIEpositionPopLayer;
	}else{
		var l = e.clientX - w;
		if(l < 0) l = 0;
		if(l > d.width) l = d.width;
		var t = e.clientY - h + 200;
		if(t < 0) t = 0;
		if(t > d.height) t = d.height;
		popwindiv.style.left = _lastPopLayerLeft = l + 'px';
		popwindiv.style.top = _lastPopLayerTop = t + 'px';
	}

	//add drag and drop functionality.
	document.onmousedown = _movePopLayer;
	document.onmouseup = function() {_movePopLayerTrigger=false;};

	//show popup
	popwindiv.style.visibility = '';
	popwindiv.style.display = 'block';
}

/**
* _MSIEpositionPopLayer()
*  nasty patch for fixed position for MSIE
*  (This can be done better, only not without a CSS style. And because I want this script to be fool proof...)
*/
_MSIEpositionPopLayer = function (){
	popwindiv = $('popwindiv');
	var scroll = getScrollXY();
	var d = getInnerDimensions();
	var l = (parseInt(_lastPopLayerLeft) + scroll.left);
	if(l < 0) l = 0;
	if(l > d.width) l = d.width;
	var t = (parseInt(_lastPopLayerTop) + scroll.top);
	if(t < 0) t = 0;
	if(t > d.height) t = d.height;
	popwindiv.style.left =  l + 'px';
	popwindiv.style.top =  t + 'px';
}

/**
* _movePopLayer()
*  Init the drag of the popup window...
*/
_movePopLayer = function (e){
	bar = document.all ? event.srcElement.id : e.target.id;
	if(bar == 'popwingui'){
		if(!document.all) {
			event=e;
		}
		//get start mouse position
		_popLayerOffsetX = event.clientX;
		_popLayerOffsetY = event.clientY;

		//get window position
		popwindiv = $('popwindiv');
		tempx = parseInt(popwindiv.style.left);
		tempy = parseInt(popwindiv.style.top);

		//do movement
		_movePopLayerTrigger = true;
		document.onmousemove = _dragPopLayer;
	}
}

/**
* _dragPopLayer()
*  Do movement of window....
*/
_dragPopLayer = function (e){
	var d = getInnerDimensions();
	if(_movePopLayerTrigger == true){
		if(!document.all) {
			event=e;
		}
		//push to new position
		popwindiv = $('popwindiv');
		newLeft = (tempx + (event.clientX - _popLayerOffsetX));
		if(newLeft < 0) newLeft = 0;
		if(newLeft > d.width) newLeft = d.width;
		newTop = (tempy + (event.clientY - _popLayerOffsetY));
		if(newTop < 0) newTop = 0;
		if(newTop > d.height) newTop = d.height;
		popwindiv.style.left = _lastPopLayerLeft = newLeft + 'px';
		popwindiv.style.top = _lastPopLayerTop = newTop + 'px';
	}
	return false;
}
