/*
lazy load code is based on LazyLoad library with a few tweaks
Copyright (c) 2008 Ryan Grove <ryan@wonko.com>. All rights reserved.
Licensed under the BSD License:
http://www.opensource.org/licenses/bsd-license.html
Version: 1.0.4
*/

var DABase = function() {
	var loaded_files = [];
	var ua = null;
	var d = document;
	var pending = null;
	var queue = [];
	
	return {
		'userAgent' : function() {
			if (ua) {
				return ua;
			}
			var nua = navigator.userAgent, m;
			ua = { 'gecko' : 0,'ie' : 0, 'webkit' : 0 };
			m = nua.match(/AppleWebKit\/(\S*)/);
			if (m && m[1]) {
				ua.webkit = parseFloat(m[1]);
			} else {
				m = nua.match(/MSIE\s([^;]*)/);
				if (m && m[1]) {
					ua.ie = parseFloat(m[1]);
				} else if ((/Gecko\/(\S*)/).test(nua)) {
					ua.gecko = 1;
					m = nua.match(/rv:([^\s\)]*)/);
					if (m && m[1]) {
						ua.gecko = parseFloat(m[1]);
					}
				}
			}
		},
		'requestComplete':	function() {
			if (pending.callback) {
				pending.callback.call();
			}
			pending = null;
			if (queue.length) {
				DABase.load();
			}
		},
		'load' : function(urls, callback) {
			var head = d.getElementsByTagName('head')[0], i, script;
			if (urls) {
				urls = urls.constructor === Array ? urls : [urls];
				for (i = 0; i < urls.length; ++i) {
					queue.push({
						'url'     : urls[i],
						'callback': i === urls.length - 1 ? callback : null
					});
				}
			}
			if (pending || !(pending = queue.shift())) {
				return;
			}
			DABase.userAgent();
			script = d.createElement('script');
			script.src = pending.url;
			if (ua.ie) {
				script.onreadystatechange = function () {
					if (this.readyState === 'loaded' || this.readyState === 'complete') {
						DABase.requestComplete();
					}
				};
			} else if (ua.gecko || ua.webkit >= 420) {
				script.onload  = DABase.requestComplete;
				script.onerror = DABase.requestComplete;
			}
			head.appendChild(script);
			if (!ua.ie && !ua.gecko && !(ua.webkit >= 420)) {
				script = d.createElement('script');
				script.appendChild(d.createTextNode('DABase.requestComplete();'));
				head.appendChild(script);
			}
		},
		'require': function(modulos, callback) {
			var filez = [];
			for(var i = 0;i < modulos.length;i++) {
				var modulo = modulos[i];
				if(/^yui\-/.test(modulo)){
					modulo = modulo.replace(/^yui-/, '');
					modulo = 'yui/' + modulo + '/' + modulo + '-min';
				}
				var loaded = false;
				for(var j = 0;j < loaded_files.length;j++) {
					if(loaded_files[j] == modulo){
						loaded = true;
						break;
					}
				}
				if(!loaded) {
					filez.push('/filez/js/' + modulo + '.js');
					loaded_files.push(modulo);
				}
			}
			if(filez.length > 0){
				DABase.load(filez, callback);
			}else{
				callback();
			}
		}
	};
}();

//
function $(id) {
	return document.getElementById(id);
}

function foreach(obj, func) {
	if(typeof(obj.length) == 'undefined'){
		// probably an object
		for(elem in obj){
			if(obj.hasOwnProperty(elem)){
				func(obj[elem]);
			}
		}
	}else{
		// most likely an array :)
		var len = obj.length;
		for(var i = len; i--; ) {
			func(obj[i]);
		}
	}
}

function byClass(cls) {
	if(document.getElementsByClassName) {
		return document.getElementsByClassName(cls)
	}
	var results = [];
	var myclass = new RegExp('\\b'+cls+'\\b');
	var elem = document.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)){
			results.push(elem[i]);
		}
	}
	return results;
}

function buildUrl(base, params) {
	var u = base;
	if(params) {
		var parts = [];
		for(param in params) {
			if(params.hasOwnProperty(param)) {
				parts.push(param + '=' + params[param]);
			}
		}
		u += '?' + parts.join('&');
	}
	return u;
}

function formVal(elem, default_val) {
	// TODO: checkboxes
	if(typeof(elem) == 'string'){
		elem = $(elem);
	}
	if(elem != null && typeof(elem.value) != 'undefined') {
		return elem.value;
	}
	return default_val;
}

/* Facebook share function, original from Facebook */
function fbs_click() 
{
	u=location.href;
	t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}

// shortcuts
C = YAHOO.util.Connect;
D = YAHOO.util.Dom;
E = YAHOO.util.Event;

function checkUserCookies() {
	// funcion que chequea si el usuario tiene las cookies antiguas
	DABase.require(['cookies'], function(){
		username = Cookies.get('bbusername');
		lastactivity = Cookies.get('bblastactivity');
		if(lastactivity && !username){
			// probablemente usuario logueado con cookies viejas
			C.asyncRequest('GET', '/foro/da_setcookies.php', {'success': function(){}});
		}
	})
}
checkUserCookies();