var isIE = navigator.appVersion.match(/MSIE/) == "MSIE";

var disabledWin = {

	elementsBlock : [],
	
	overlayAll : false,

	pathImage : "/images/general/indicator_big.gif",
	
	backgroundColor : "black",

	nameBlockDisabled : "Overlay",
	
	nameBlockDisabledConcat : [],
	
	setElementsBlock : function(value){ 
		
		var insert = true;
		if(this.elementsBlock.length>0){
			for(i=0; i<this.elementsBlock.length; i++){
				if(this.elementsBlock[i]==value){
					insert = false;
					break;
				}
			}
			if(insert){
				this.elementsBlock.unshift(value);
				this.nameBlockDisabledConcat.unshift("Overlay_"+value);
			}
		}else{
			this.elementsBlock.unshift(value);
			this.nameBlockDisabledConcat.unshift("Overlay_"+value);
		}
		
		//debug(this.elementsBlock);
		//debug(this.nameBlockDisabledConcat);
		 
	},
	
	getElementsBlock : function(){ return this.elementsBlock; },
	
	setPathImage : function(value){ this.pathImage = value; },
	
	getPathImage : function(){ return this.pathImage; },
	
	setBackgroundColor : function(value){ this.backgroundColor = value; },
	
	getBackgroundColor : function(){ return this.backgroundColor; },
	
	getArraryConcat : function() {	return this.nameBlockDisabledConcat;  },
	
	getId : function() {	return this.nameBlockDisabled;  },
	
	show : function(modal, load){
		
		if(arguments.length == 3){
			this.setElementsBlock(arguments[2]);
		}else{
			this.overlayAll = true;
		}
			
		if(typeof load == 'undefined')
			load = false;
			
		this.disableScreen(this.getId(), load);
		
	},
	
	hide : function(element){
	
		if(typeof element == 'undefined'){
			if($(this.getId())){
				new Element.remove(this.getId());
				this.overlayAll = false;
				return false;
			}
		}
				
		if(this.elementsBlock.length > 0){
			if($('Overlay_'+element)){
				new Element.remove('Overlay_'+element);
				if(this.elementsBlock.indexOf(element)>=0){
					this.elementsBlock 						= this.elementsBlock.without(element);
					this.nameBlockDisabledConcat	= this.nameBlockDisabledConcat.without("Overlay_"+element);
				}
			}
		}
			
	},

	disableScreen : function(overlayId, load){
		
		if(this.overlayAll){
		
			var objBody		= document.getElementsByTagName("body").item(0);
			this.initLightboxWithObject(objBody, load, overlayId);
			var pageSize	= this.getPageSizeWithObject(objBody);
			
			var objOverlay							= $(overlayId);
			// set height of Overlay to take up whole page and show
			objOverlay.style.top 				= '0';
			objOverlay.style.left 			= '0';
			objOverlay.style.height 		= (pageSize.pageHeight + 'px');
			objOverlay.style.width 			= (pageSize.windowWidth + 'px');
			objOverlay.style.display 		= 'block';	
			
			return false;
			
		}
		
		var a_setToBlock = this.getElementsBlock();
		if(a_setToBlock.length > 0){
		
			var a_nameToBlock = this.getArraryConcat();
			for(i=0; i<a_setToBlock.length; i++){
				
				this.initLightboxWithObject(a_setToBlock[i], load, a_nameToBlock[i]);
				var pageSize = this.getPageSizeWithObject(a_setToBlock[i]);
				
				var objOverlay 						= $(a_nameToBlock[i]);
				// set height of Overlay to take up whole page and show
				objOverlay.style.height		= (pageSize.pageHeight + 'px');
				objOverlay.style.width		= (pageSize.windowWidth + 'px');
				objOverlay.style.display	= 'block';	
				
			}
			
		}

	},
	
	initLightboxWithObject: function(id, load, idNew){ //id=>elemento a insertar / load=>si tiene la forma de cargar / idNew=>el elemento nuevo para bloquear
	
		// Already done, just update zIndex
		if (!$(idNew)) {
			// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)
			//EN MODO DE EJECUCION CREA UN DIV DE TAMAŅO DE TODO EL SCREEN PARA DAR EL EFECTO DE DESACTIVAR
			//TODA LA PARTE DE ATRAZ
			var objBody 											= $(id);
			var objOverlay 										= document.createElement("div");
			objOverlay.setAttribute('id', idNew);
			//objOverlay.className = "overlay_new_" + className //ESTABLECE  LA CLASE DE FONDO
			
			objOverlay.style.backgroundColor	= this.getBackgroundColor();
			objOverlay.style.filter						= "alpha(opacity=60)";
			objOverlay.style.opacity					= "0.6";
			objOverlay.style.MozOpacity				= "0.6";
			
			objOverlay.style.display					= 'none';
			objOverlay.style.position					= 'absolute';

			objOverlay.style.zIndex						= 10;
		 	objOverlay.style.width						= '100%';
			if(load)
				objOverlay.innerHTML = '<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="center" style="vertical-align:middle; text-align:center;"><img src="'+this.getPathImage()+'"></td></tr></table>';
			objBody.insertBefore(objOverlay, objBody.firstChild);

		}
	
	},
	
	getPageSizeWithObject : function(idObject){
		var objContent = $(idObject);
		var windowWidth, windowHeight;
		var pageHeight, pageWidth;
		
		windowWidth = objContent.offsetWidth;
		windowHeight = objContent.offsetHeight;
		
		pageHeight = windowHeight;
		pageWidth = windowWidth;

		return {pageWidth: pageWidth ,pageHeight: pageHeight , windowWidth: windowWidth, windowHeight: windowHeight};
	}
	
}

/*************************************************************************************************************************************************************/

var elementLoad = {

	//idElement : "",
	
	typeElement : true,
	
	innerHTMLDiv : "",
	
	buildElement : function(idElement){
		
		if(!$("loadDiv_" + idElement)){
			
			var notElem = true;
			
			//if(this.idElement == "") this.idElement = "loadDiv_" + (Math.random() * 1000);
			
			var objOverlay = document.createElement("div");
			
			if(idElement == ''){
				var objBody = document.getElementsByTagName("body").item(0);
			}else{
				var objBody = $(idElement);
				var left	= $(idElement).offsetLeft;
				var top		= $(idElement).offsetTop;
				notElem = false;
			}
			
			if(idElement != '')
				objOverlay.setAttribute('id', "loadDiv_" + idElement);
			else
				objOverlay.setAttribute('id', "loadDiv_Body");
			
			objOverlay.style.display					= 'none';
			objOverlay.style.position					= 'absolute';
			objOverlay.style.left							= notElem ? "0" : left;
			objOverlay.style.top							= notElem ? "0" : top;
			objOverlay.style.width						= "auto";
			objOverlay.style.height						= "20px";
			objOverlay.style.backgroundColor	= "red";
			objOverlay.style.color						= "white";
			objOverlay.style.fontFamily				= "Arial, Helvetica, sans-serif";
			objOverlay.style.fontSize					= "12px";
      objOverlay.style.padding					= "2px";
			objOverlay.innerHTML							= this.innerHTMLDiv;
			
			objBody.insertBefore(objOverlay, objBody.firstChild);
			
		}
		
	},
	
	show : function(){
		
		var is_exist = true;
		
		if(arguments.length == 2){
			this.innerHTMLDiv = arguments[1];
		}else{
			this.innerHTMLDiv = "Cargando...";
		}
		
		if(typeof arguments[0] == 'undefined'){
			this.buildElement('');
		}else{
			this.buildElement(arguments[0]);
			is_exist = false;
		}
		
		if(is_exist){
			elm = $("loadDiv_Body");
			elm.style.display = 'block';
		}else{
			elm = $("loadDiv_" + arguments[0]);
			elm.style.display = 'block';
		}
			
	},
	
	hide : function(){
	
		if(typeof arguments[0] == 'undefined'){
			
			if($("loadDiv_Body")){
				
				$("loadDiv_Body").remove();
				
			}
			
		}else{
			
			if($("loadDiv_" + arguments[0])){
				
				$("loadDiv_" + arguments[0]).remove();

			}
			
		}
	
	}
		
}

/**
  * aqui se trabaja con la variable "json"
  * ejemplo de la estructura "json"
  
  [
    ["idGrid_tr_1_td_2","CS BMR 1.1 DKT NJA-601 N/P HD "],
    ["idGrid_tr_1_td_3","0"],
    ["idGrid_tr_1_td_5_costC[]","0"],
    ["idGrid_tr_1_td_11_costF[]","0"],
    ["idGrid_tr_1_td_4","0"],
    ["function(){formItem.loadProcess('idGrid_tr_1_td_5_costC[]',true);}",""],
    ["function(){if($('idGrid_tr_1_td_4').innerHTML>0){stylesClass.add('idGrid_tr_1_td_4', 'inputErr');}}",""]
  ]
  
*/
updateElementJSON = function(request, json){
  var numeroElementos = json.length;
  for (var i = 0; i < numeroElementos; i++){
    if($(json[i][0])){
  	  switch ($(json[i][0]).tagName){
  	    case 'TD'      : Element.update(json[i][0], json[i][1]); break;
  	    case 'INPUT'   : $(json[i][0]).value=json[i][1]; break;
  	    case 'SELECT'  : 
  	      var objDDL = $(json[i][0]);
  	      if(typeof(cont) == 'undefined'){
  	        var cont = 0;
  	        objDDL.options.length = 1;
  	      }
  	      var a_contentValues = json[i][1].split("_;_");
      		var value	= a_contentValues[0];
      		var text	= a_contentValues[1];
  	      var option	= new Option(text,value);
      		try{
      			objDDL.add(option,null);
      		}catch (e){
      			objDDL.add(option,-1);
      		}
  	      cont++;
  	    break;
  	  }
    }else{
      if(json[i][0].indexOf("function") > -1){
        eval("scriptEval = "+json[i][0]);
        scriptEval();
      }
    }
  }
}

/***************************************************************************************************************/
/**
 * elimina de un array el indice indicado con la variable key
*/
var sliceByPos = function(array, key){
  var a_tmp = [];
  for(i=0; i<array.length; i++){
    if(i != key){
      a_tmp[a_tmp.length] = array[i];
    }
  }
  return a_tmp;
}
/**
 * uso solo para clases de estilos
*/
var stylesClass = {
  add : function(elm, className){
    $(elm).addClassName(className);
  },
  remove : function(elm, className){
    $(elm).removeClassName(className);
  },
  has : function(elm, className){
    return $(elm).hasClassName(className);
  },
  isExist : function(elm, className){
    if(stylesClass.has(elm, className)){
      stylesClass.remove(elm, className);
    }
  }
}

var redondear = function(cantidad, decimales) {
  var cantidad = parseFloat(cantidad);
  var decimales = parseFloat(decimales);
  decimales = (!decimales ? 2 : decimales);
  return Math.round(cantidad * Math.pow(10, decimales)) / Math.pow(10, decimales);
} 

String.prototype.trim = function(){
  var retorno=this.replace(/^\s+/g,"");
  retorno=retorno.replace(/\s+$/g,"");
  return retorno;
}
