/**
 * @Author: RAGBIT GmbH
 * @Developer: Anatolij Rau
 * @Date: 03.12.08
 * @Version: 2.1
 **/
 
/**
 * 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 close_btn = 'x';

/** Disable body **/
var ep_disable_body = true;
var eb_disable_body_bg = '#000000';
var eb_disable_body_trans = 30; // % 


/**
 * Position settings
 **/
var use_mouse_position = true; // get mouse position
/** OR **/
var position_top = 140; // position from top
var position_top_unit = 'px'; // Unit (px | % | em)

var evalScriptTags = true;

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;
var is_ie = ((navigator.appName == "Microsoft Internet Explorer" || window.ActiveXObject)? true: false );

document.write('<style>#easy_popup { position:absolute; top: 20px; left: 0px; display: block; background:#FFF; border:1px solid #000 }#easy_popup_title { text-align:center; }#easy_popup_close { position:absolute; right:0px; padding: 0px 5px; color:#000000; cursor:pointer; }</style>');
document.write('<style>#easy_message { position:absolute; top: 20px; left: 0px; display: block; background:#FFF; border:1px solid #000 }#easy_message_title { text-align:center; }#easy_message_close { position:absolute; right:0px; padding: 0px 5px; color:#000000; cursor:pointer; }</style>');

function displayEasyMessage (message, title, css_class) {
	if (!document.body) {
		window.setTimeout(function(){displayEasyMessage(message, title, css_class);}, 100);
		return false;
	}
	
	var easy_message = document.createElement("div");
	easy_message.id = 'easy_message';
	easy_message.style.top = '50px';
	easy_message.style.left = '-999999px';
	easy_message.style.zIndex = last_zIndex+1;
	if (css_class) easy_message.className = css_class;
	document.body.appendChild(easy_message);

	// Close button erzeugen
	var easy_message_close = document.createElement("div");
	easy_message_close.id = 'easy_message_close';
	easy_message_close.onclick = (function (easy_message) {
	return function() {
	closeEasyPopup(easy_message);
	};
	})(easy_message);
	easy_message.appendChild(easy_message_close);
	easy_message_close.innerHTML = close_btn;

	// Titel erzeugen
	var easy_message_title = document.createElement("div");
	easy_message_title.id = 'easy_message_title';

	easy_message_title.onmousedown = (function (easy_message) {
	return function() {
	startStopDrag(easy_message);
	};
	})(easy_message);
	
	easy_message_title.onmouseup = (function (easy_message) {
	return function() {
	startStopDrag(easy_message);
	};
	})(easy_message);

	easy_message.appendChild(easy_message_title);
	easy_message_title.innerHTML = title;

	// Content erzeugen
	var easy_message_content = document.createElement("div");
	easy_message_content.id = 'easy_message_content';
	easy_message.appendChild(easy_message_content);
	
	var data = '<div class="block_body_outer">\n';
	data += '	<div class="block_body" id="easy_message_body">'+message+'</div> \n';
	data += '	<div class="block_bottom" id="easy_message_bottom"><input type="button" value="Ok" onclick="closeEasyPopup(this.parentNode.parentNode.parentNode.parentNode);" /></div> \n';
	data += '</div>\n';
	easy_message_content.innerHTML = data;
	easy_message.style.display = 'block';		

	set_bf_element();

	if (use_mouse_position) {
		if (is_ie) var pos_diff = getScrollPos(); else pos_diff = 0;
		
		/** top **/
		if (pos_diff+mouse_pos_y-easy_message.offsetHeight > 0)
			easy_message.style.top = pos_diff+mouse_pos_y+'px';
		else 
			easy_message.style.top = '0px';
		
		/** Left **/
		if (mouse_pos_x+(easy_message.offsetWidth/2) > document.body.offsetWidth)
			easy_message.style.left = (Math.round((document.body.offsetWidth-easy_message.offsetWidth)))+'px';
		else 
			easy_message.style.left = (Math.round(mouse_pos_x-(easy_message.offsetWidth/2)))+'px';
	}
	else {
		easy_message.style.top = ( getScrollPos()+position_top )+position_top_unit;
		easy_message.style.left = (Math.round((document.body.offsetWidth-easy_message.offsetWidth)/2))+'px';
	}
}

function displayEasyPopup( url, title, cur_id, id_prefix ) {
	if (!document.body) {
		window.setTimeout(function(){displayEasyPopup( url, title, cur_id, id_prefix );}, 100);
		return false;
	}

	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';
		easy_popup.style.zIndex = last_zIndex;
		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 = close_btn;

		// 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 (use_mouse_position) {
			/** top **/
			if (is_ie) var pos_diff = getScrollPos(); else pos_diff = 0;
			
			if (pos_diff+mouse_pos_y-easy_popup.offsetHeight > 0)
				easy_popup.style.top = pos_diff+mouse_pos_y+'px';
			else 
				easy_popup.style.top = '0px';
		}
		else {
			easy_popup.style.top = ( getScrollPos()+position_top )+position_top_unit;
		}
	}
}

function closeEasyPopup(easy_popup) {
		if (typeof easy_popup != 'object') easy_popup = document.getElementById('easy_popup');
		if (typeof easy_popup == 'object') document.body.removeChild(easy_popup);
		var bf_element = document.getElementById('bf_element')
		if (typeof bf_element == 'object') document.body.removeChild(bf_element); 
}

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) {
		var container = document.getElementById(containerid);
		container.innerHTML=page_request.responseText;
		if (evalScriptTags) runRequestScripts(container);

		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';
		if (use_mouse_position) {
			if (mouse_pos_x+(easy_popup.offsetWidth/2) > document.body.offsetWidth) {
				easy_popup.style.left = (Math.round((document.body.offsetWidth-easy_popup.offsetWidth)))+'px';
			}
			else {
				easy_popup.style.left = (Math.round(mouse_pos_x-(easy_popup.offsetWidth/2)))+'px';
			}
		}
		else easy_popup.style.left = (Math.round((document.body.offsetWidth-easy_popup.offsetWidth)/2))+'px';
		
		set_bf_element();
		
	}
}

function runRequestScripts(container) {
	var end = container.childNodes.length;
	for (var i = 0; i < end; i++ ) {
		if (container.childNodes[i].tagName == 'SCRIPT') {
			eval(container.childNodes[i].innerHTML);
		}
	}
}

function set_bf_element() {
	if (ep_disable_body) {
		var size = getWinSize();
		if (bf_element = document.getElementById('bf_element')) {
			bf_element.style.width = size.w+'px';
			bf_element.style.height = size.h+'px';
		} else {
			var bf_element = document.createElement("div");
			bf_element.id = 'bf_element';
			bf_element.style.top = '0px';
			bf_element.style.left = '0px';
			bf_element.style.position = 'absolute';
			bf_element.style.width = size.w+'px';
			bf_element.style.height = size.h+'px';
			bf_element.style.backgroundColor = eb_disable_body_bg;
			bf_element.style.opacity = eb_disable_body_trans/100;
			bf_element.style.filter =  'Alpha(opacity='+eb_disable_body_trans+')'
			bf_element.style.zIndex = last_zIndex-1;
			document.body.appendChild(bf_element);
		}
	}
}

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) {
	  
		if (element){
			if (is_ie) var pos_diff = getScrollPos(); else pos_diff = 0;
			var left = parseInt(element.style.left);
	  	var top = parseInt(element.style.top);
		}
		//alert((mouse_pos_y+pos_diff)+' > '+(top-posDiff)+' && '+mouse_pos_y+' < '+(top+element.offsetHeight+posDiff));
	  if (mouse_pos_x > left-posDiff && mouse_pos_x < left+element.offsetWidth+posDiff && (mouse_pos_y+pos_diff) > 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;
		  if (element){
				element.style.left = (new_x)+'px';
		  	element.style.top = (new_y)+'px';
			}
	  }
	  else startStopDrag(null);
  }
}

function getWinSize(win) {
if(!win) win = window;
var pos = {x:0,y:0};
pos.w = parseInt(win.document.body.scrollWidth);
pos.h = parseInt(win.document.body.scrollHeight);
return pos;
}

