/**
 * File: http://www.iparecruiternetwork.com/assets/js/Popup.js
 */

var Popup = new Class({
	addHTML: function() {
		this.target = new Element('div', {
			id: 'popup'
		});
		this.target.inject($(document.body));
		
		var dragbar = new Element('div', {
			'class': 'dragbar'
		});
		dragbar.inject(this.target);
		
		var closebtn = new Element('span', {
			'class': 'close',
			'html': 'X'
		});
		closebtn.addEvent('click', this.hide.bind(this));
		closebtn.inject(dragbar);
		
		var container = new Element('div', {
			'class': 'container'
		});
		container.inject(this.target);
		
		this.iframe = new IFrame({
			'scrolling' : 'no',
			'frameborder': 0,
			'class': 'content'
		});
		this.iframe.inject(container);
		
		this.cover = new Element('div', {
			'class': 'cover'
		});
		this.cover.inject(container);
		
		new Drag(this.target, {
			handle: dragbar,
			onStart: this.onDragStart.bind(this),
			onComplete: this.onDragComplete.bind(this)
		});
	},
	onDragStart: function(el) {
		this.cover.setStyle('display', 'block');
	},
	onDragComplete: function(el) {
		this.cover.setStyle('display', 'none');
	},
	findLinks: function() {
		$(document.body).getElements('a[rel=popup]').addEvent('click', this.addListener.bind(this));
	},
	addListener: function(evt) {
		evt.stop();
		this.remove();
		this.addHTML();
		var el = this.getAnchor(evt.target);
		this.target.getElement('iframe').setProperty('src', el.getProperty('href'));
		if (this.target.getStyle('visibility') == 'hidden')
			this.place();
	},
	getAnchor: function(el) {
		var evts = $(el).retrieve('events');
		if (evts && evts['click'])
			return el;
		return this.getAnchor(el.getParent());
	},
	place: function() {
		this.target.setStyle('display', 'block');
		var ws = window.getSize();
		var wsc = window.getScroll();
		var ps = this.target.getSize();
		this.target.setStyles({
			'top': wsc.y + ws.y / 2 - ps.y / 2,
			'left': wsc.x + ws.x / 2 - ps.x / 2,
			'visibility': 'visible'
		});
	},
	hide: function(evt) {
		evt.stop();
		this.remove()
	},
	remove: function() {
		if (this.target)
			this.target.dispose();
	}
});

var domready_flag = false;

window.addEvent('domready', function(evt) {
	if (!domready_flag) {
		var pup = new Popup();
		pup.findLinks();
		domready_flag = true;
	}
});