var Spry;
if (!Spry) Spry = {};
if (!Spry.Widget) Spry.Widget = {};



Spry.Widget.mensajeManager = function(element,width,height)
{	
	this.init(element,width,height);

}

Spry.Widget.mensajeManager.DELIMITADOR_APERTURA = "[";
Spry.Widget.mensajeManager.DELIMITADOR_CIERRE = "]";
Spry.Widget.mensajeManager.DEFAULT_POSITION = "CENTER";


Spry.Widget.mensajeManager.prototype.init = function(element,width,height)
{
    this.element = this.getElement(element);
    this.position = Spry.Widget.mensajeManager.DEFAULT_POSITION;
    var titleBarHeight = parseInt($("titleBar").offsetHeight, 10);
    this.element.style.width = width + "px";
    this.element.style.height = (height+titleBarHeight) + "px";
    this.lastMessage  = "";
    
}

Spry.Widget.mensajeManager.prototype.destroy = function() {

	try { delete this.element; } catch(err) {}
}



Spry.Widget.mensajeManager.prototype.getElement = function(ele)
{
	if (ele && typeof ele == "string")
		return $(ele);
	return ele;
}

/**
*
* mensaje: Cadena formada por [delimitador]texto[delimitador]
* donde Delimitador: mensaje, error, advertencia, alerta, recordatorio
* Si procesamos un tag [true] o [mensaje] devuelve true y si es mensaje
* muestra la ventana.
* Si procesamos un tag [false] asignamos a las variables Spry el mensaje de
* error correspondiente y retornamo false.
* @returns true|false
*
*
*/
Spry.Widget.mensajeManager.prototype.procesarMensaje = function(mensaje)
{
   // alert("Entrando a procesarMensaje() con mensaje= " + unescape(mensaje));
	
	  var tipoMensaje = this.extraerDelimitador(mensaje);
    var mensajeBody = this.extraerPorDelimitador(mensaje,tipoMensaje);
        
    this.lastMessage = mensajeBody;
    //this.getElement(this.element).className = tipoMensaje;
    
  	//alert(mensajeBody);
    //alert(tipoMensaje);
    
    //vemos que resultado nos devuelve
    if (tipoMensaje == "[false]"){
        //alert(mensajeBody);
        this.asignaMensajesVariables(mensajeBody);
        return false;
    }else{       
        //seteamos el menaje
        if (tipoMensaje =="[error]"){
             alert(mensajeBody);
             return false;            
        }else if (tipoMensaje =="[true]"){
            return true;
        }else 
            return false;
    }

}


Spry.Widget.mensajeManager.prototype.hide = function(){
    this.element.hide();
}


Spry.Widget.mensajeManager.prototype.getNombre = function()
{
  return  'mensajeManager';	
}


Spry.Widget.mensajeManager.prototype.validate = function() {
	return true;	
}

/**
 *   Extrae una cadena segun un delimitador
 *   si no puede extrar devuleve vacio	 
 */    
Spry.Widget.mensajeManager.prototype.extraerPorDelimitador = function (cadenaEvaluacion,delimitador) { 
	
    var data = new String(unescape(cadenaEvaluacion));
	var begin =data.indexOf(delimitador)+delimitador.length;
	if (begin > 0){
		var data_t= data.substring(begin,data.length);
		var end = data_t.indexOf(delimitador);
		if (end>0)
		  return data = data_t.substring(0,end);
		else
		  return '';	
	}else
	   return '';
      
}
/**
 *   Extrae el delimitador de un mensaje, que se va a corresponder con el
 *   estilo que va a tomar dicho mensaje: Ejemplo [alerta]	 
 *   El Delimitador tiene este formato [nombre_delimitador]
 *   Si no encuentra el delimitador se devuelve vacio   
 */    
Spry.Widget.mensajeManager.prototype.extraerDelimitador = function (cadenaEvaluacion) { 
	var data = new String(unescape(cadenaEvaluacion));
//	alert ("extraerDelimitador() "+ data);
//	alert("DATA[0] = " +data.substr(0,1));
	if (data.substr(0,1) != Spry.Widget.mensajeManager.DELIMITADOR_APERTURA)
	   return "";
	else{
        var begin = 0;
        var end = data.indexOf(Spry.Widget.mensajeManager.DELIMITADOR_CIERRE)+1;
		var data2 = data.substring(begin,end);
	
		return  data.substring(begin,end);

	}
      
}


/**
* Recibe una cadena de variables = valor separadas por & y realiza las asignaciones
* a kas variables Spryte contedidas en variables.
*/   
Spry.Widget.mensajeManager.prototype.asignaMensajesVariables =function (cadena){
	var mensajes = new Object(); 
	mensajes = this.retornoArrayParametrosAjax(cadena);   
	for ( keyVar in mensajes ) {
	//	alert("Vaiables a setar :"+keyVar+", contenido :"+mensajes[keyVar]);
		variables[keyVar].mensajeAjax(mensajes[keyVar],'');
	}
}

/**
 *   Retorna un array asociatovio con el error correspondiente a la variable
 *   Spryte. Desarma una cadena de retorno separada con & cada par variable valor  
 *   El indice del arreglo se corresponde con la variable y el contenido con el valor
 *   
 *    	 
 */    
Spry.Widget.mensajeManager.prototype.retornoArrayParametrosAjax =  function (cadenaArray){
	var arrayResult = new Object(); 

	var arrayVariables = cadenaArray.split('&');

	// arrayResult = new Array();
	for (var i=0 ; i < arrayVariables.length ;i++ ){
		//corte = new Array('9','10'); //arrayVariables[i].split("=");
		corte = arrayVariables[i].split("=");
		if (corte.length>1){
				var indice = ""+corte[0];
				arrayResult[indice] = this.trim(corte[1]);
				
		  } 
	}

	return arrayResult;    
}


/*******************************************************************************
 *
 *  Ultimo mensaje guardado
 * 
 */ 

Spry.Widget.mensajeManager.prototype.ultimoMensaje = function (){  
    
    return this.lastMessage;
}

/******************************************************************************/

//Ancho del win
Spry.Widget.mensajeManager.prototype.windowWidth = function (){
  if (parseInt(navigator.appVersion)>3) {
   if (navigator.appName=="Netscape") {
    winW = window.innerWidth;
   //winH = window.innerHeight;
   }
   if (navigator.appName.indexOf("Microsoft")!=-1) {
    winW = document.body.offsetWidth;
    //winH = document.body.offsetHeight;
   }
  }
  return winW;
}


/******************************************************************************/

//Alto del win
Spry.Widget.mensajeManager.prototype.windowHeight = function (){
  if (parseInt(navigator.appVersion)>3) {
   if (navigator.appName=="Netscape") {
    winH = window.innerHeight;
   //winH = window.innerHeight;
   }
   if (navigator.appName.indexOf("Microsoft")!=-1) {
    winH = document.body.offsetHeight;
    //winH = document.body.offsetHeight;
   }
  }
  return winH;
}


// Removes leading whitespaces
Spry.Widget.mensajeManager.prototype.LTrim = function ( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
Spry.Widget.mensajeManager.prototype.RTrim =  function ( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
Spry.Widget.mensajeManager.prototype.trim = function ( value ) {
	
	return this.LTrim(this.RTrim(value));
	
}


