/**
 * @author: Anatolij Rau
 * @Project: Easy Popup (HTML + Image)
 */
 
/**
 * Configuration
 **/
window.onload = mouseEvent;

var min_width = 250;
var max_width = 0;
var prev_button = '&lt;&lt;';
var next_button = '&gt;&gt;';
var please_wait = 'Bitte warten'
var position_top = 100;
var position_top_unit = 'px';
var dragEnabled = false;
var element;
var start_x = -1;
var start_y = -1;
var new_x;
var new_y;
var debug = false;
var posDiff = 200;
var mouse_pos_x;
var mouse_pos_y;
var last_zIndex = 1000;

document.write('<style>#easy_popup { position:absolute; top: 20px; left: 0px; display: block; background:#E0E0E0; border:2px solid #000 }#easy_popup_title { text-align:center; }#easy_popup_close { position:absolute; right:0px; padding: 0px 5px; background:#999999; color:#000000; cursor:pointer; font-weight:bold; } .block_bottom { text-align:center; }</style>');

function displayEasyPopup( url, title, cur_id, id_prefix ) {
	if (cur_id) {
		if (document.getElementById( id_prefix+(cur_id-1))) var prev_url = document.getElementById(id_prefix+(cur_id-1)).name;
		if (document.getElementById( id_prefix+(cur_id+1))) var next_url = document.getElementById(id_prefix+(cur_id+1)).name;
		//alert(next_url);
	}
	
	var old_window = document.getElementById('easy_popup');
	if (old_window) {
		//old_window.style.width = res[0]+24+'px';
		var easy_popup_content = document.getElementById('easy_popup_content');
		var easy_popup_title = document.getElementById('easy_popup_title');
		var data = '<div class="block_body_outer">\n';
		data += '	<div class="block_body" id="easy_popup_body">'+please_wait+'</div> \n';
		data += '</div>\n';
		data += '<div class="block_bottom">\n';
		if (prev_url) data += '	<a href="javascript:displayEasyPopup(\''+prev_url+'\', \''+title+'\', '+(cur_id-1)+', \''+id_prefix+'\');">'+prev_button+'</a> \n';
		if (next_url) data += '	<a href="javascript:displayEasyPopup(\''+next_url+'\', \''+title+'\', '+(cur_id+1)+', \''+id_prefix+'\');">'+next_button+'</a>\n';
		data += '</div>\n';
		easy_popup_content.innerHTML = data;
		easy_popup_title.innerHTML = title;
		easyPopupGetUrl(url, 'easy_popup_body');
	}
	else {	
		
		// easy_popup erzeugen
		var easy_popup = document.createElement("div");
		easy_popup.id = 'easy_popup';
		easy_popup.style.top = '50px';
		easy_popup.style.left = '-999999px';
		document.body.appendChild(easy_popup);
		//easy_popup.style.width = res[0]+24+'px';
		//alert(easy_popup.style.width);
		//easy_popup.style.width = 600


		// Close button erzeugen
		var easy_popup_close = document.createElement("div");
		easy_popup_close.id = 'easy_popup_close';
		easy_popup_close.onclick = (function (easy_popup) {
		return function() {
		closeEasyPopup(easy_popup);
		};
		})(easy_popup);
		easy_popup.appendChild(easy_popup_close);
		easy_popup_close.innerHTML = 'x';

		// Titel erzeugen
		var easy_popup_title = document.createElement("div");
		easy_popup_title.id = 'easy_popup_title';
	
		easy_popup_title.onmousedown = (function (easy_popup) {
		return function() {
		startStopDrag(easy_popup);
		};
		})(easy_popup);
		
		easy_popup_title.onmouseup = (function (easy_popup) {
		return function() {
		startStopDrag(easy_popup);
		};
		})(easy_popup);
	
		easy_popup.appendChild(easy_popup_title);
		easy_popup_title.innerHTML = title;
		
	
		// Content erzeugen
		var easy_popup_content = document.createElement("div");
		easy_popup_content.id = 'easy_popup_content';
		easy_popup.appendChild(easy_popup_content);
		
		var data = '<div class="block_body_outer">\n';
		data += '	<div class="block_body" id="easy_popup_body">'+please_wait+'</div> \n';
		data += '</div>\n';
		data += '<div class="block_bottom">\n';
		if (prev_url) data += '	<a href="javascript:displayEasyPopup(\''+prev_url+'\', \''+title+'\', '+(cur_id-1)+', \''+id_prefix+'\');">'+prev_button+'</a>\n';
		if (next_url) data += '	<a href="javascript:displayEasyPopup(\''+next_url+'\', \''+title+'\', '+(cur_id+1)+', \''+id_prefix+'\');">'+next_button+'</a>\n';
		data += '</div>\n';
		easy_popup_content.innerHTML = data;
		
		easyPopupGetUrl(url, 'easy_popup_body');
	
		easy_popup.style.display = 'block';		
		if (mouse_pos_y-easy_popup.offsetHeight > 0) easy_popup.style.top = ( getScrollPos()+position_top )+position_top_unit;
	}
}

function closeEasyPopup(easy_popup) {
		document.body.removeChild(easy_popup);
}

function getScrollPos() {
	if ( document.documentElement && document.documentElement.scrollTop) posy = document.documentElement.scrollTop;
	else if (document.body.scrollTop) posy = document.body.scrollTop;
	else posy = document.body.scrollTop;
	return posy;
}

function easyPopupGetUrl(url, containerid) {
	var page_request = false;
	if (window.XMLHttpRequest) // if Mozilla, Safari etc
	page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
	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(){
	easyPopupLoad(page_request, containerid)
	}
	page_request.open('GET', url, true)
	page_request.send(null)
	return false;
}

function easyPopupLoad(page_request, containerid){
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
	if (page_request.responseText) {
		document.getElementById(containerid).innerHTML=page_request.responseText
		var easy_popup = document.getElementById('easy_popup');
		if (min_width > 0 && easy_popup.offsetWidth < min_width) easy_popup.style.width = min_width+'px';
		if (max_width > 0 && easy_popup.offsetWidth > max_width) easy_popup.style.width = max_width+'px';
		easy_popup.style.left = (Math.round((document.body.offsetWidth-easy_popup.offsetWidth)/2))+'px';
	}
}

function startStopDrag(win) {	
	if (dragEnabled) { 
		dragEnabled = false;
		start_x = -1;
		start_y = -1;
	} else {
		if (win.style.position != 'absolute') win.style.position = 'absolute';
		if (!win.style.left) win.style.left = (mouse_pos_x - (win.offsetWidth/2)) + 'px';
		if (!win.style.top) win.style.top = (mouse_pos_y - (win.offsetHeight/2)) + 'px';
		last_zIndex++;
		win.style.zIndex = last_zIndex;
		element = win;
		dragEnabled = true;
	}
}

function mouseEvent() {
  /*if (window.Event) {
	 //document.captureEvents(Event.MOUSEMOVE);
  }*/
  document.onmousemove = getXY;
}

function getXY(e) {
  mouse_pos_x = (window.Event) ? e.pageX : event.clientX;
  mouse_pos_y = (window.Event) ? e.pageY : event.clientY;
  
  if (dragEnabled) {
	  var left = parseInt(element.style.left);
	  var top = parseInt(element.style.top);
	  if (mouse_pos_x > left-posDiff && mouse_pos_x < left+element.offsetWidth+posDiff && mouse_pos_y > top-posDiff && mouse_pos_y < top+element.offsetHeight+posDiff) {
		  if (start_x == -1) { start_x = mouse_pos_x-left; start_y = mouse_pos_y-top; }
		  new_x = mouse_pos_x-start_x;	
		  new_y = mouse_pos_y-start_y;
		  element.style.left = (new_x)+'px';
		  element.style.top = (new_y)+'px';
	  }
	  else startStopDrag(null);
  }
}

