    var Framework = new Object();

    
    /*
    |-------------------------------------------------------------------|
    |                                                                   |
    | Title : CrossBrowser Framework                                    |
    | Resume: Framework CrossBrowser para IE, Firefox, Netscape etc.    |
    | Author: José Carlos de Jesus Junior                               |
    | File  : Technoprovider.Framework.Web.UI.JS                            |
    |-------------------------------------------------------------------|
    */

    function CrossBrowser()
    {
        /*
		    Funcao          :   Browser
		    Descricao       :   Retorna as configurações no navagedor do usuário;
		    Entrada         :   N/A;
	    */
        this.Browser = function()
        {
            try
            {
	            var agent	= navigator.userAgent.toLowerCase();
	            this.isWin	= agent.indexOf("win") > -1;
	            this.isMac	= agent.indexOf("mac") > -1;
	            this.isUNIX	= agent.indexOf("x11") > -1;

	            this.isOpera = agent.indexOf("opera") > -1;
	            this.isFirefox	= agent.indexOf("firefox") > -1;
	            this.isIE	= agent.indexOf("msie") > -1;
	            this.isNS	= agent.indexOf("netscape") > -1;

	            this.resWidth	= window.screen.width;
	            this.resHeight = window.screen.height;
	        }
	        catch(e)
	        {
	            alert('Atenção:\n\nOcorreu um no método Browser.Detalhes:\n' + e.description);
	            return false;
	        }
        }
        
        /*
		    Funcao          :   GetElementWidth
		    Descricao       :   Retorna a propriedade WIDTH de um elemento;
		    Entrada         :   (string:ID)
	    */
        this.GetElementWidth = function(ID) 
        {
            try
            {
	            if (this.Browser.isNS)
	            {
		            var elem = getObjNN4(document, Elem);
		            return elem.clip.width;
	            } 
	            else 
	            {
	                var elem = this.GetElementByID(ID);
        		
		            if (this.Browser.isOpera) 
		            {
			            xPos = elem.style.pixelWidth;
		            } 
		            else 
		            {
			            xPos = elem.offsetWidth;
		            }
        		    
		            return xPos;
	            }
	        }
	        catch(e)
	        {
	            alert('Atenção:\n\nOcorreu um no método GetElementWidth.Detalhes:\n' + e.description);
	            return false;
	        }
        }
        
        /*
		    Funcao          :   GetElementHeight
		    Descricao       :   Retorna a propriedade HEIGHT de um elemento;
		    Entrada         :   (string:ID)
	    */
        this.GetElementHeight =  function(ID)
        {
            try
            {
	            if (this.Browser.isNS) 
	            {
		            var elem = getObjNN4(document, ID);
		            return elem.clip.height;
	            } 
	            else 
	            {
	                var elem = this.GetElementByID(ID);
	                
		            if (this.Browser.isOpera) 
		            { 
			            xPos = elem.style.pixelHeight;
		            } 
		            else 
		            {
			            xPos = elem.offsetHeight;
		            }
        		    
		            return xPos;
                }
	        }
	        catch(e)
	        {
	            alert('Atenção:\n\nOcorreu um no método GetElementHeight.Detalhes:\n' + e.description);
	            return false;
	        }
        }
        
        
        /*
		    Funcao          :   GetElementTop
		    Descricao       :   Retorna a propriedade TOP de um elemento;
		    Entrada         :   (string:ID)
	    */
        this.GetElementTop = function(ID) 
        {
            try
            {
	            if (this.Browser.isNS) 
	            {
		            var elem = getObjNN4(document, ID);
		            return elem.pageY;
	            } 
	            else 
	            {
		            if(document.getElementById)
		            {	
			            var elem = document.getElementById(ID);
		            }
		            else if (document.all) 
		            {
			            var elem = document.all[ID];
		            }
                    
                    yPos = elem.offsetTop;
		            tempEl = elem.offsetParent;
        		    
		            while (tempEl != null) 
		            {
  			            yPos += tempEl.offsetTop;
	  		            tempEl = tempEl.offsetParent;
  		            }
        		
		            return yPos;
	            }
	        }
	        catch(e)
	        {
	            alert('Atenção:\n\nOcorreu um no método GetElementTop.Detalhes:\n' + e.description);
	            return false;
	        }
        }
        
        /*
		    Funcao          :   GetElementLeft
		    Descricao       :   Retorna a propriedade LEFT de um elemento;
		    Entrada         :   (string:ID)
	    */
        this.GetElementLeft = function(ID) 
        {
            try
            {
	            if (this.Browser.isNS) 
	            {
		            var elem = getObjNN4(document, ID);
		            return elem.pageX;
	            } 
	            else 
	            {
    	            
                    var elem = this.GetElementByID(ID);		        
        		
		            xPos = elem.offsetLeft;
		            tempEl = elem.offsetParent;
        		    
  		            while (tempEl != null) 
  		            {
  			            xPos += tempEl.offsetLeft;
	  		            tempEl = tempEl.offsetParent;
  		            }
		            return xPos;
	            }
	        }
	        catch(e)
	        {
	            alert('Atenção:\n\nOcorreu um no método GetElementLeft.Detalhes:\n' + e.description);
	            return false;
	        }
        }
        
         /*
		    Funcao          :   GetElementByID
		    Descricao       :   Retorna um elemento de acordo com seu ID;
		    Entrada         :   (string:ID)
	    */
	    this.GetElementByID = function(ID)
	    {
	        var elemento = null;
    	    
	        try
	        {
                if( document.layers) 
                {   
                    elemento = document.layers[ID];
                }
                else if(document.all)
                {
                    elemento = document.all[ID];
                    
                }
                else if(document.getElementById)
                {
                    elemento = document.getElementById(ID);
                }
                return elemento;
            }
            catch(e)
	        {
            alert('Atenção:\n\nOcorreu um no método GetElementByID.Detalhes:\n' + e.description);
	            return false;
	        }
	    }
    	
	     /*
		    Funcao          :   GetElementByID
		    Descricao       :   Retorna uma lista de elementos de uma TAG específica;
		    Entrada         :   (string:TagName)
	    */
	    this.GetElementsByTagName = function(TagName)
	    {
	        try
	        {
               return document.getElementsByTagName(TagName);
            }
            catch(e)
	        {
                alert('Atenção:\n\nOcorreu um no método GetElementsByTagName.Detalhes:\n' + e.description);
	            return false;
	        }
	    }
	    
	    this.FormataMoeda = function(sender)
	    {
              var valor = new String();
              
	          valor = sender.value;
              valor = valor.replace(/\D/g,"")  //permite digitar apenas números
              valor = valor.replace(/[0-9]{12}/,"inválido")   //limita pra máximo 999.999.999,99
              valor = valor.replace(/(\d{1})(\d{8})$/,"$1.$2")  //coloca ponto antes dos últimos 8 digitos
              valor = valor.replace(/(\d{1})(\d{5})$/,"$1.$2")  //coloca ponto antes dos últimos 5 digitos
              valor = valor.replace(/(\d{1})(\d{1,2})$/,"$1,$2")    //coloca virgula antes dos últimos 2 digitos
              
              sender.value = valor;    
	    }


        this. GetScrollTop = function()
        {
              var scrOfX = 0;  // Left
              var scrOfY = 0; // Top

              if (typeof (window.pageYOffset) == 'number')
              {
                  //Netscape compliant
                  scrOfY = window.pageYOffset;
                  scrOfX = window.pageXOffset;

              }
              else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
              {
                  //DOM compliant
                  scrOfY = document.body.scrollTop;
                  scrOfX = document.body.scrollLeft;

              }
              else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
              {
                  //IE6 standards compliant mode
                  scrOfY = document.documentElement.scrollTop;
                  scrOfX = document.documentElement.scrollLeft;
              }

              return scrOfY;
          } 
	   
        
        
        this.Flash = 
        {
            ActivateFlash : function()
            {
                var objects = document.getElementsByTagName("object");
                
                for (var i = 0; i < objects.length; i++) 
                { 
                    objects[i].outerHTML = objects[i].outerHTML;
                } 
            },
            
            ActivateById : function(ID)
            {
                var object = Framework.GetElementByID(ID); 
                
                if(object)
                {
                    object.outerHTML = object.outerHTML;    
                }
            }
        }
    }
    
    
    /*
		Funcao          :   InitializeFramework
		Descricao       :   Método de Inicialização do Framework para Javascript CrossBrowser
		Entrada         :   N/A
	*/
	this.InitializeFramework = function()
	{
        try
        {
            Framework           = new CrossBrowser();
            Framework.Browser   = new Framework.Browser();  
        }
        catch(e)
        {
            alert('Atenção:\n\nOcorreu um no método InitializeFramework.Detalhes:\n' + e.description);
            return false;
        }
    }
    
    InitializeFramework();

    this.GetByID = function (ID)
    {
        if (Framework)
        {
            return Framework.GetElementByID(ID);
        }
    }
