/**
 * Created by dpStudios
 * Date: 21/04/11
 */

var dp = {
	version: 0.1,
	error: function(msg) {
		dp.alerta(msg);
	},
	resizer: function(options) {
		var resizer = new dpResizer(options);
	},
	tooltip: function(options) {
		$$('[title][rel!=tooltiped]').each(function(el){
			el.addEvent('mouseover', function(ev){
				var el = ev.target;
				if ( ! $('dp-tooltip')) {
					new Element('div').set('id', 'dp-tooltip').addClass('tooltip').inject(document.body);
				}
				$('dp-tooltip').show();
				$('dp-tooltip').set('html', el.get('title'));
				$('dp-tooltip').setStyles({
					top: ev.page.y+6,
					left: ev.page.x+8
				});
				el.erase('title');
			}).addEvent('mousemove', function(ev){
				$('dp-tooltip').setStyles({
					top: ev.page.y+6,
					left: ev.page.x+8
				});
			}).addEvent('mouseleave', function(ev){
					var el = ev.target;
					el.set('title', $('dp-tooltip').get('html'));
					$('dp-tooltip').hide();
			});
			el.set('rel', 'tooltiped');
		});
	},
	alerta: function(text, type) {
		if ( ! type) { type = 'warning' };
		var alerta = new Element('div').addClass('alerta').inject(document.body);
		
		alerta.set('html', text);
		var icon = new Element('div').addClass('icon').addClass(type).inject(alerta);
		var close = new Element('div').addClass('close').inject(alerta).addEvent('click', function(){
			alerta.dispose();
			//overlay.close();
		});
		//var overlay = new Overlay();
		alerta.position();
		window.addEvent('resize', function(){alerta.position();})
	}
};

var Loader = new Class({
	getOptions: function(){
		return {
			clase: 'loader'
		}
	},
	initialize: function(options){
		this.setOptions(this.getOptions(), options);
		
		if (!$('dpLoader')) {
			this.loader = new Element('div').addClass(this.options.clase).set('id', 'dpLoader').fade('hide').inject(document.body);
			this.loader.position();
		} else {
			this.loader = $('dpLoader');
			this.loader.position();
		}
		
		this.show();
		window.addEvent('resize', function(){
			this.loader.position();
		}.bind(this));
	},
	show: function() {
		this.loader.fade('in');
	},
	hide: function(){
		this.loader.fade('out');
	},
	close: function() {
		this.loader.dispose();
	}
}).implement(new Options());

var Overlay = new Class({
	getOptions: function(){
		return {
			color: '#000',
			opacity: '0.6',
			click: function(){}
		}
	},
	initialize: function(options) {
		this.setOptions(this.getOptions(), options);

		if (!$('dpOverlay')) {
			this.overlay = new Element('div').addClass('overlay').set('id', 'dpOverlay').inject(document.body);
		} else {
			this.overlay = $('dpOverlay');
			this.overlay.show();
		}

		this.overlay.addEvent('click', function(){
			this.options.click(this);
		}.bind(this));

		this.overlay.setStyles({
			backgroundColor: this.options.color,
			opacity: this.options.opacity,
			position: 'absolute',
			top: 0, left: 0, right: 0, bottom: 0,
			height: window.getScrollSize().y,
			zIndex: 100
		});

		window.addEvent('resize', function(){
			this.overlay.setStyle('height', window.getScrollSize().y);
		}.bind(this));
	},
	onClick: function(func) {
		this.options.click = func;
	},
	close: function() {
		this.overlay.fade('out');
		(function(){
			this.overlay.hide();
		}.bind(this)).delay(400);
	}
}).implement(new Options());

function execute (fnc, args) {
		eval(fnc+'(args)');
	}
