var base_path = document.getElement('base').get('href');

function r () {
	return Math.floor(Math.random()*99999999);
}

function nocache () {
	return Math.random();
}

function link_after_confirm(url, message)
{
	if ( ! message) 
		message = '¿Estás seguro?';
		
	if (confirm(message)) {
		if (url[0] == '/') {
			url = base_path+url.replace(/^\//, '');
		};
		location.href = url;
	}
}

window.addEvent('domready', function(){
	if ($chk($('dp-errors')) == true) {
		$('dp-errors').getElements('div.error').each(function(el){
			if ( ! el.get('id')) {
				var id = r();
				el.set('id', id);
				if ( ! el.getElement('.close-button')) {
					var close = new Element('div').addClass('close-button').inject(el, 'top');	
					close.addEvent('click', function(){
						this.getParent().fade('out');
						(function(){this.getParent().dispose()}.bind(this)).delay(500);
					});
				};
			}
		});
	}
	
	if ($chk($$('.dp-errors')) == true) {
		$$('.dp-errors').each(function(error){
			error.getElements('div.error').each(function(el){
				if ( ! el.get('id')) {
					var id = r();
					el.set('id', id);
					if ( ! el.getElement('.close-button')) {
						var close = new Element('div').addClass('close-button').inject(el, 'top');	
						close.addEvent('click', function(){
							this.getParent().fade('out');
							(function(){this.getParent().dispose()}.bind(this)).delay(500);
						});
					};
				};
			});
		});
	}
	
	if ($chk($$('.dp-block')) == true) {
		$$('.dp-block').each(function(el){
			if ($chk(el.getElement('.expand')) == false) {
				var expand = new Element('div').addClass('expand').inject(el.getElement('div.header'), 'top');
				
				if ($chk(expand.getParent().getParent().getElement('.content').get('id'))) {
					var id = expand.getParent().getParent().getElement('.content').get('id')+'_block';
				};

				expand.addEvent('click', function(){
					this.getParent().getParent().getElement('.content').fade();
					(function(){
						this.getParent().getParent().getElement('.content').toggle();
					}.bind(this)).delay(300)
					
					if (this.getParent().get('class').contains('closed')) {
						this.getParent().toggleClass('closed');
						if ($chk(id)) {
							Cookie.write(id, 'open');
						}
					} else {
						(function(){this.getParent().toggleClass('closed')}.bind(this)).delay(400);
						if ($chk(id)) {
							Cookie.write(id, 'closed');
						}
					}
				});
				
				var close = function(){
					el.getElement('.header').addClass('closed');
					el.getElement('.content').fade('hide').hide();
				}
				
				if (el.get('class').contains('closed') || el.getElement('.header').get('class').contains('closed')) {
					close();
				}
				
				if ($chk(id)) {
					if (Cookie.read(id) == 'closed')
						close();
				}
			}
		});
	}
});

window.addEvent('domready', function(){
	$$('input.error').each(function(el){
		el.startFocusTracking();
		var name = el.get('id');
		var error = 'error_'+name;
		if ($(error)) {
			$(error).fade('hide');
			el.addEvent('mouseenter', function(){
				$(error).fade(0.9);
			}).addEvent('mouseleave', function(){
				if ( ! el.hasFocus())
					$(error).fade('out');
			}).addEvent('focus', function(){
				$(error).fade(0.9);
			}).addEvent('blur', function(){
				$(error).fade('out');
			})
		};
	})
})

function datetime_input (name) {
	var el = $('input'+name);
	var container = $('div'+name);
	var day = $('inputDay'+name);
	var month = $('inputMonth'+name);
	var year = $('inputYear'+name);
	container.getElements('select').addEvent('change', function(){
		var actd = day.get('value').length == 1 ? '0'+day.get('value') : day.get('value');
		var actm = month.get('value').length == 1 ? '0'+month.get('value') : month.get('value');
		var acty = year.get('value');
		
		el.set('value', acty+'/'+actm+'/'+actd+' 00:00:00');
	})
}

FocusTracker = {
    startFocusTracking: function() {
       this.store('hasFocus', false);
       this.addEvent('focus', function() { this.store('hasFocus', true); });
       this.addEvent('blur', function() { this.store('hasFocus', false); });
    },

    hasFocus: function() {
       return this.retrieve('hasFocus');
    }
}

Element.implement(FocusTracker);
