/**
 * rutinas.js: several utilities for initialization, data manipulation,
 *             etc. for the CadeMET project.
 *
 * by Eduardo Hernando Izcara. Copyright 2009 agroGEX.
 */
// ------------------------------------------------------------------------

// Make sure we haven't already been loaded
var Rutinas;
if (Rutinas && (typeof Rutinas != "object" || Rutinas.NAME))
{
	throw new Error("Namespace 'Rutinas' already exists");
}

// Create our namespace, and specify some meta-information
Rutinas = {};
Rutinas.NAME = "Rutinas";    // The name of this namespace
Rutinas.VERSION = 1.0;       // The version of this namespace

// Algunas variables globales del namespace:

Rutinas.Cal = {
	dia_corto: ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sa'],
	dia_largo: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
	mes_corto: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
	mes_largo: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']
}

// ------------------------------------------------------------------------

/**
 * Rutinas a inicializar cuando se carga la aplicación.
 *
 */
Rutinas.init = function()
{
	Rutinas.addLocale_ES();
	Rutinas.enchufaMenus();
	Rutinas.createTempTables();

	CadeAuth.createLoginDialogo();
	CadeAuth.getLoggedStatus();
	CadeAuth.protect('prod-private-link');

	CadeRiego.createInputDialogo();
}
// ------------------------------------------------------------------------

/**
 * Nos da la base URL de la aplicación, que nos ha sido enviada previamente.
 *
 */
Rutinas.baseUrl = function()
{
	return document.getElementsByName('baseUrl')[0].value;
}
// ------------------------------------------------------------------------

// Obtenemos el valor de una variable que exista normalmente en algún
// elemento de formulario 'input' de tipo "hidden". El primer parámetro
// corresponde con el atributo 'name' del citado 'input'; el segundo
// parámetro se puede utilizar como punto de arranque para la búsqueda.
Rutinas.getVar = function(variable, root)
{
	return YAHOO.util.Dom.getElementBy(function(el){return el.name==variable;}, 'input', root).value;
}
// ------------------------------------------------------------------------

// A esta función le pasamos un texto con el que hacer un 'innerHTML' sobre
// un elemento (se pasa su 'id'). Se puede pasar un tercer argumento, el cual
// corresponde al 'id' del elemento a partir del cual se realiza la búsqueda.
Rutinas.setHTML = function(texto, elem, root)
{
	YAHOO.util.Dom.getElementBy(function(el){return el.id==elem;}, '', root).innerHTML = texto;
}

// ------------------------------------------------------------------------

Rutinas.clsMenus = function(selected_menu)
{
	var menus = YAHOO.util.Dom.getElementsByClassName('mnu-link', 'a');
	for (i = 0; i < menus.length; i++) {
		if (YAHOO.util.Dom.hasClass(menus[i], 'selected')) {
			YAHOO.util.Dom.removeClass(menus[i], 'selected');
		}
	}
	YAHOO.util.Dom.addClass(selected_menu, 'selected');
}
// ------------------------------------------------------------------------

Rutinas.enchufaMenus = function()
{
	YAHOO.util.Event.addListener("stations-link", 'click', function(e){
				Rutinas.clsMenus('stations-link');
				// Mostramos por defecto la primera estación en la lista (el orden tal y
				// como se han introducido en la lista es Salas->Rucandio->Madrid->Bentretea):
				var stat = CadeLayers.stations.features[0];
				CadeStations.render_station(stat.attributes);
				CadeLayers.centerStation(stat.geometry.x, stat.geometry.y);
			});
	YAHOO.util.Event.addListener("about-link", 'click', function(e){
				Rutinas.clsMenus('about-link');
				CadeInfos.render_about();
			});
	YAHOO.util.Event.addListener("fruit-link", 'click', function(e){
				Rutinas.clsMenus('fruit-link');
				CadeInfos.render_fruit();
			});

	YAHOO.util.Event.addListener("identify-link", 'click', function(e){ CadeAuth.userLogin(); });
}
// ------------------------------------------------------------------------

Rutinas.addLocale_ES = function()
{
	YAHOO.util.DateLocale['es_ES'] = YAHOO.lang.merge(YAHOO.util.DateLocale, {
		a: ['dom', 'lun', 'mar', 'mie', 'jue', 'vie', 'sab'],
		A: ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
		b: ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
		B: ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
		c: '%a %d %b %Y %T %Z',
		p: ['', ''],
		P: ['', ''],
		x: '%d/%m/%Y',
		X: '%T'
	});
}
// ------------------------------------------------------------------------

Rutinas.createTempTables = function()
{
	// creación tabla temporal de grados día (lower 10, upper 31) para cálculo de ciclos de insectos
	var url = Rutinas.baseUrl() + "/rutinas/gdupdate/format/json/lower/10/upper/31";
	var callback =
	{ 
		success: function(o) {},
		failure: function(o) {}
	};
	YAHOO.util.Connect.initHeader('X_REQUESTED_WITH', 'XMLHttpRequest');
	YAHOO.util.Connect.asyncRequest('GET', url, callback);
}
// ------------------------------------------------------------------------

Rutinas.createWaitPanel = function()
{
	var wait = new YAHOO.widget.Panel("wait",
			{ width:"240px",
			  fixedcenter:true,
			  close:false,
			  draggable:false,
			  zIndex:4,
			  modal:true,
			  visible:false });

	wait.setHeader('<span style="font-size:12px">Procesando, espere por favor...</span>');
	wait.setBody('<img src="' + Rutinas.baseUrl() + '/img/loading.gif" />');
	wait.render(document.body);

	return wait;
}
// ------------------------------------------------------------------------

