// enable/disable popup inside iframe for external domains - set to false to disable
var showPopupInsideFrameForExternalDomains = true;

//delay on popup show
var delayStart = 500;
//delay on popup close
var delayStop = 800;
//handles for settimeut
var timeShow = 0;
var timeClose = 0;
//current mouse position
var mouseX = 0;
var mouseY = 0;
//id of popupwindow
var idWin;
//popup window object reference
var popupWin;
//if inside popup
var insideWin = false;
//variable to indicate wheather popupscript is running inside an iframe on the same domain or an external one
var localDomain = false;
//if true, popup won't display - useful if user starts completing the form for job details
var dontKill = false;

//function to return browser window width/height
Position.GetWindowSize = function(w) {
	var width, height;
	w = w ? w : window;
	this.width = w.innerWidth || (w.document.documentElement.clientWidth || w.document.body.clientWidth);
	this.height = w.innerHeight || (w.document.documentElement.clientHeight || w.document.body.clientHeight);
	
	return this;
}
//class with event to keep track of mouse position
var MouseTracker = Class.create();
MouseTracker.prototype = {
    initialize: function() {    
        this.eventMouseMove = this.mouseMoved.bindAsEventListener(this);
        Event.observe(document, "mousemove", this.eventMouseMove);
    },
    destroy: function() {
      Event.stopObserving(document, "mousemove", this.eventMouseMove);
    },
    mouseMoved: function(event) {
        var pointer = [Event.pointerX(event), Event.pointerY(event)];
		mouseX = pointer[0];
		mouseY = pointer[1];
    }
}
mouseTracker = new MouseTracker();

//main show popup function
function showWin(paramUrl,mX,mY) {
	if (dontKill) return;
	//make sure all other windows are closed before making new one
	closeWin();
	var wd; var ht; var posX; var posY;
	if (mX && mY) {
		//we received child mouse X and Y, so we're in parent
		var posScroll = $(document).viewport.getScrollOffsets();
		var posCum = $('idJobbzzIframe').cumulativeOffset();
		var posAbs = $('idJobbzzIframe').viewportOffset();
		wd = Position.GetWindowSize().width - mX - posAbs[0] - 100;
		if (wd>600) wd = 600;
		ht = Position.GetWindowSize().height - 85;
		posX = mX + posCum[0] + 100;
		posY = posScroll[1] + 20;
	} else {
		//we don't have mX and mY params, so we're locally inside de iframe
		wd = Position.GetWindowSize().width - mouseX - 80;
		ht = Position.GetWindowSize().height - 63;
		posX = mouseX + 40;
		var posScroll = $(document).viewport.getScrollOffsets();
		posY = posScroll[1] + 10;
	}
	//show the popup
	popupWin = new Window({className: "alphacube", title: "<span style=\"color:#05e61f;font-weight:bold\">jobbzz<span style=\"color:#777;font-weight:bold\">Viewer</span>", 
		  top:posY, left:posX, width:wd, height:ht, minimizable:false,
		  destroyOnClose:true,
		  url: paramUrl, showEffectOptions: {duration:0.7}});
	popupWin.setCloseCallback(windowClosed);
	popupWin.show();
	dontKill = false;
	idWin = popupWin.getId();
	//set different observers
	$(idWin).observe('mouseenter', interruptClose);
	$(idWin).observe('mouseleave', mouseLeaves);
	$(idWin+'_top').observe('mousedown', disableTestout);
	$(idWin+'_sizer').observe('mousedown', disableTestout);
	$$('.bottom_draggable').each(function(s) {
		s.observe('mousedown', disableTestout);
	});
}
function windowClosed() {
	dontKill = false;
	return true;
}
//close popup
function closeWin() {
	if (dontKill) return;
	Windows.closeAll();
}
//interrupt popup closing (if after leaving for a short time mouse comes back quickly over the popup again)
function interruptClose(event) {
	clearTimeout(timeShow);
	clearTimeout(timeClose);
}
//if mouse leaves popup, close it
function mouseLeaves(event) {
	closePopup();
}
//disable mouse leave testing 
function disableTestout(event) {
	$(idWin).stopObserving('mouseleave', mouseLeaves);
	insideWin = true;
	Event.observe(document, 'mouseup', enableTestout);
}
//enable mouse leave testing
function enableTestout(event) {
	if (!insideWin) return;
	$(idWin).observe('mouseleave', mouseLeaves);
	Event.stopObserving(document, 'mouseup', enableTestout);
}
//called on Bewerb Dich button - forces popup not to close anymore
function maximizePopup() {
	dontKill = true;
	disableTestout();
	//popupWin.maximize();
}
//force close the popup
function forceCloseWin() {
	Windows.closeAll();
}
//show popup inside iframe - external domain case
function showPopupLocal(paramUrl,mX,mY) {
	clearTimeout(timeShow);
	clearTimeout(timeClose);
	timeShow = setTimeout('showWin(\''+paramUrl+'\','+mX+','+mY+')',delayStart);
}
//close popup inside iframe - - external domain case
function closePopupLocal() {
	clearTimeout(timeShow);
	clearTimeout(timeClose);
	timeClose = setTimeout('closeWin()',delayStop);
}
//call show popup on parent window - internal domain case
function showPopupParent(urlParam,mX,mY) {
	top.showPopupLocal(urlParam,mX,mY);
}
//call close popup on parent window - internal domain case
function closePopupParent() {
	top.closePopupLocal();
}
//show popup function dispatcher - calls either local or parent show function
function showPopup(url) {
	if (localDomain) {
		showPopupParent("/frontend/" + url,mouseX,mouseY);
	} else {
		if (showPopupInsideFrameForExternalDomains) {
			showPopupLocal(url);
		}
	}
}
//close popup function dispatcher - calls either local or parent close function
function closePopup() {
	if (localDomain) {
		closePopupParent();
	} else {
		if (showPopupInsideFrameForExternalDomains) {
			closePopupLocal();
		}
	}
}
//on document loaded, check domain and set "localdomain" variable
document.observe('dom:loaded', function() {
	try {
		if (window.top!=window) {
			if (document.domain == top.document.domain) {
				localDomain = true;
			} else {
				localDomain = false;
			}
		} else {
			localDomain = false;
		}
	} catch (err) {}
});


