var PopUp = {
	Implements: [Options, Events],
	
	options: {
		windowOptions: {
			width: 1210,
			height: 880,
			resizable: 'yes',
			scrollbars: 'yes'
		},
		context: document,
		elemSelector: '.popup'
	},
	
	
	initialize: function(options){
		this.setOptions(options);
		
		this.popElems = this.getPopElems();
		
		this.prepPopElems(this.popElems);
	},
	
	
	/**
	 * Gets all the elements that marked as a popup
	 * @param {Object} context
	 * @return {Array} Returns an array of all elements marked as a popup
	 */
	getPopElems: function(){
		return $(this.options.context).getElements(this.options.elemSelector);
	},
	
	
	prepPopElems: function(popElems){
		popElems.each(function(elem){
			elem.addEvent('click', this.popElemClick.pass(elem, this));
		}, this);
	},
	
	popElemClick: function(elem){
		var winOptions = this.getElemOptions(elem);
		var winUrl = elem.get('href');
		
		var winName = 'popup'+$random(0, 9999);
		
		window.open(winUrl, winName, winOptions);
		
		return false;
	},
	
	getElemOptions: function(elem){
		var rel = elem.get('rel');
		
		var options = this.options.windowOptions;
		
		if($defined(rel) && rel.indexOf('popup={') != -1) {	
			var elemOptions = rel.substring(rel.indexOf('popup{'), rel.indexOf('}'));
			elemOptions = options.split(',');
			
			options.extend(elemOption);
		}
		
		var optionStr = '';
		
		$each(options, function(value, key){
			optionStr+= key+'='+value+',';
		});
		
		return optionStr;
	}
};

PopUp = new Class(PopUp);


window.addEvent('domready', function(){
	new PopUp();
});
