/**
 * @package	GeoDatum
 * Proyecto	:	GeoDatum - Sistema de Información Territorial
 * Archivo	:	Divisor.class.js
 *
 * @link http://www.siigsa.cl
 * @copyright 2008 - SIIGSA
 * @author Patricio Cifuentes Ithal <pcifuentes@siigsa.cl> || Gonzalo Arenas Flores <garenas@siigsa.cl>
 * @since 18-07-2008
 * @version 1.0.3
 * 
 * Clase que crea divisores flotantes como capas dinamicas dentro del html
 *
 */

 
	/**
	 * @copyright 2008 - SIIGSA
	 * @author Patricio Cifuentes Ithal <pcifuentes@siigsa.cl>
	 * @since 13-06-2008
	 * @version 1.0.1
	 *
	 * Constructor de la clase de divisores flotantes
	 * 
	 */
	function Divisor(){

		this.cima				= '270px';
		this.izquierda	= '450px';
		this.ancho			= '450px';
		this.alto				= '290px';
		
		this.pagina			= null;
		this.parametros	= null;
		
		var oAjax				= new ObjAjax();
		
		var tTC					= document.createElement("label");
		
		var tDF					= document.createElement("div");
		var tDC					= document.createElement("div");
		
		var tBC					= document.createElement("input");
		var tIC					= document.createElement("img");
		
		
		/**
		 * @copyright 2008 - SIIGSA
 	 	 * @author Patricio Cifuentes Ithal <pcifuentes@siigsa.cl>
   	 * @since 06-06-2008
	   * @version 1.0.0
	   * 
	   * Crea un divisor flotante en tiempo de ejecucion
	   * 
	   */
		this.crearDivisor = function (_tit){
			
			this.setDivisor();
			this.setTitulo();
			this.setBoton();
			this.setImagen();
			
			document.body.appendChild(tDF);
								
			tDF.appendChild(tDC);
			tDF.appendChild(tTC);
			tDF.appendChild(tBC);
			tDF.appendChild(tIC);
			
			this.cargarTitulo(_tit);
			
		}
		
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que asigna las propiedades y estilo para el divisor
		 * 
		 */
		this.setDivisor = function(){

			this.setAtributoObjeto(tDF,'id','tDivFondo');
			/*SETEO DEL PRIMER DIVISOR*/
			this.setEstiloObjeto(tDF,'border','1px solid black');
			this.setEstiloObjeto(tDF,'position','absolute');
			this.setEstiloObjeto(tDF,'top',this.get('cima'));
			this.setEstiloObjeto(tDF,'left',this.get('izquierda'));
			this.setEstiloObjeto(tDF,'width',this.get('ancho'));
			this.setEstiloObjeto(tDF,'height',this.get('alto'));
			this.setEstiloObjeto(tDF,'zIndex','1');
			this.setEstiloObjeto(tDF,'backgroundColor','#BDCBE7');
			this.setEstiloObjeto(tDF,'overflow','auto');
			this.setEstiloObjeto(tDF,'visibility','visible');
			
			/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
			
			this.setAtributoObjeto(tDC,'id','tDivContenido');
			/*SETEO DEL SEGUNDO DIVISOR*/
			this.setEstiloObjeto(tDC,'border','0px solid red');
			this.setEstiloObjeto(tDC,'position','relative');
			this.setEstiloObjeto(tDC,'top','20px');
			this.setEstiloObjeto(tDC,'left','0px');
			this.setEstiloObjeto(tDC,'width',this.get('ancho'));
			this.setEstiloObjeto(tDC,'height',parseInt(this.get('alto')) - 45 + 'px');
			this.setEstiloObjeto(tDC,'zIndex','2');
			this.setEstiloObjeto(tDC,'backgroundColor','#FFFFFF');
			this.setEstiloObjeto(tDC,'overflow','auto');
			this.setEstiloObjeto(tDC,'visibility','visible');

		}
		
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion de ajax el cual muestra el contenido en el divisor
		 *
		 * @param string _param : parametros que se requieren para la seccion del modulo
		 * @param string _patch : ruta en la que se encuentra el modulo a buscar
		 * 
		 */
		this.setContenido = function(_patch,_param){
			
			_res_general = true;
			oAjax.open("POST", GC_WEB_DIR + _patch , true);
			oAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			oAjax.send(_param);
			
			oAjax.onreadystatechange=function(){			
				if (oAjax.readyState==4 && oAjax.status==200){
	        tDC.innerHTML = oAjax.responseText;
				}
			}
			
		}
	 	
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que asigna los atributos y propiedades del boton cerrar del divisor
		 * 
		 */
		this.setBoton = function(){
			
			this.setAtributoObjeto(tBC,'id','tBotonCerrar');
			this.setAtributoObjeto(tBC,'type','button');
			this.setAtributoObjeto(tBC,'value','Cerrar');
			this.setAtributoObjeto(tBC,'title','Cerrar');
			
			this.setEstiloObjeto(tBC,'position','absolute');
			this.setEstiloObjeto(tBC,'width','65px');
			this.setEstiloObjeto(tBC,'top',(parseInt(this.get('alto')) - 20) + 'px');
			this.setEstiloObjeto(tBC,'left',(parseInt(this.get('ancho')) - 70) + 'px');
			
			
			tBC.onclick = function(){
				document.body.removeChild(tDF);
			}
			
		}
	 	
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que inserta un titulo para el divisor
		 *
		 * @param string _tnomb : Titulo del divisor, tiene que ser enviado seteandolo antes del llamado al divisor.
		 * 												De no ser asi quedara el divisor sin titulo
		 * 
		 */
		this.setTitulo = function(){

			this.setAtributoObjeto(tTC,'id','tTituloContenido');
			this.setAtributoObjeto(tTC,'className','titulo');

			this.setEstiloObjeto(tTC,'position','absolute');
			this.setEstiloObjeto(tTC,'border','0px solid red');
			this.setEstiloObjeto(tTC,'top','4px');
			this.setEstiloObjeto(tTC,'left','2px');
			this.setEstiloObjeto(tTC,'zIndex','3');
			
		}
		
		
		this.cargarTitulo = function( _tit ){
		
			if (typeof(_tit)=="undefined"){
				tTC.innerHTML = "";
			}else{
				tTC.innerHTML = "&nbsp;" + _tit;
			}
			
		}
	 	
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que asigna atributos y propiedades para el boton imagen cerrar 
		 * 
		 */
		this.setImagen = function(){
			
			this.setAtributoObjeto(tIC,'id','tImagenCerrar');
			this.setAtributoObjeto(tIC,'src', GC_WEB_IMG + '/x.gif');
			this.setAtributoObjeto(tIC,'alt', 'Cerrar');
			
			this.setEstiloObjeto(tIC,'position','absolute');
			this.setEstiloObjeto(tIC,'top','4px');
			this.setEstiloObjeto(tIC,'left',(parseInt(this.get('ancho')) - 20) + 'px');
			this.setEstiloObjeto(tIC,'zIndex','3');
			this.setEstiloObjeto(tIC,'cursor','pointer');

			tIC.onclick = function(){
				document.body.removeChild(tDF);
			}

		}
	 	
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que permite setear los atributos propios de los divisores
		 * 
		 * @param objeto _obj  : objeto divisor
		 * @param string _nomb : nombre del atributo a setear
		 * @param string _val  : valor que que se le asigna al atributo a setear 
		 *
		 */
		this.setAtributoObjeto = function(_obj, _nomb, _val){
			
			_obj.setAttribute( _nomb , _val );

		}
	 	
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 06-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que permite setear el estilo propios de los divisores
		 * 
		 * @param objeto _obj  : objeto divisor
		 * @param string _nomb : nombre del estilo a setear
		 * @param string _val  : valor que se le asigna al estilo a setear
		 *
		 */
		this.setEstiloObjeto = function(_obj, _nomb, _val){
			
			_obj.style[_nomb] = _val;

		}
	 	
		
		/**
		 * @copyright 2008 - SIIGSA
		 * @author Jose Meneses Gonzalez <jmeneses@siigsa.cl>
		 * @since 03-06-2008
		 * @version 1.0.0
		 *
		 * Funcion que oculta el divisor que reemplaza a los popup's del sistema
		 * 
		 */
		this.cerrarDivisor = function(){
			
			document.body.removeChild(tDF);
			
		}

	  /**
	   * @copyright 2008 - SIIGSA
 	   * @author Patricio Cifuentes Ithal <pcifuentes@siigsa.cl> || Gonzalo Arenas Flores <garenas@siigsa.cl>
   	   * @since 18-07-2008
	   * @version 1.0.2
	   * 
	   * Establece un valor determinado a una variable (propiedad) de la clase
	   * 
	   * @param string $propiedad Nombre de la Propiedad
	   * @param mixed Valor de la Propiedad
	   * @param String	$indice		:	En el caso de que el atributo sea un arreglo le damos el indice y escata el valor de dicha posición
	   * 
	   */
		this.set = function (propiedad, valor, indice){
			
			try{
				if(typeof(indice)!="undefined"){								//Si especifica un indice interpreta que se refiere a un atributo de tipo arreglo
					
					var arreglo = eval('this.' + propiedad);					//Recupera el atributo
					arreglo[indice] = valor;									//Le asiga el valor al arreglo en la posicion especificada como indices
					
				}else{
					
					eval('this.' + propiedad + ' = "' + valor + '"');			//Si no se trata de un arreglo setea el atributo de forma directa
					
				}
				
				
			}catch(e){
				
				alert(e.name + " - " + e.message);
			
		}
			
		}
	 	

		/**
		 * @copyright 2008 - SIIGSA
 	 	 * @author Patricio Cifuentes Ithal <pcifuentes@siigsa.cl>
   	 * @since 06-06-2008
	   * @version 1.0.1
	   * 
	   * Retorna el valor actual de una variable (propiedad) de la clase
	   * 
	   * @param string $propiedad Nombre de la Propiedad
	   * 
	   * @return mixed Valor de la Propiedad
	   * 
	   */
		this.get = function (propiedad){
			return eval('this.' + propiedad);
		}
		
		
		/**
		 * @copyright 2008 - SIIGSA
 	 	 * @author Gonzalo Arenas Flores <garenas@siigsa.cl>
   	 * @since 13-06-2008
	   * @version 1.0.0
	   * 
	   * Debug para JS
	   * 
	   * @param string $pag		:	Pagina de donde se rescataran los datos
	   * @param string $param	:	Parametros necesarios
	   * 
	   */
		this.debug = function(pag,param){
			
			this.crearDivisor();
			this.cargarTitulo("Debug JS");
			this.setContenido(pag,param);
			
		}
		
	 	
	}