﻿var IE = document.all?true:false;

function WindowParent()
{
    var win = window;
    while(win != win.parent && null != win)
        win = win.parent;
    return win;
}


function CargarConfiguracion()
{

    {
        
       ResizePage(true);
        
        var arrFieldSet = document.documentElement.getElementsByTagName("fieldset");
        if(arrFieldSet.length)
        {
            for(var i = 0; i < arrFieldSet.length; i++)    
            {
                var fieldS = arrFieldSet[i];
                if(fieldS.childNodes.length>0)
                {
                    //fieldS.onmouseover = function(){fieldS.childNodes[(IE?0:1)].className = "FieldSet_HoverLegend";}
                    //fieldS.onmouseout = function(){fieldS.childNodes[(IE?0:1)].className = "";}                
                    if(null != fieldS.getAttribute("resize") && fieldS.getAttribute("resize") == "true")
                    {
                        fieldS.childNodes[(IE?0:1)].style.cursor = "pointer";
                        fieldS.childNodes[(IE?0:1)].onclick = FieldClick;
                    }
                }
            }
        }
    }
}

function FieldClick()
{
    var field = this.parentNode;
    var divs = field.getElementsByTagName("DIV");
    if(divs.length > 0)
    {
        var divContent = divs[0];
        if(divContent.style.display == 'none')
            divContent.style.display = 'inline';
        else
            divContent.style.display = 'none';
    }
    ResizePage();
}
    
function ResizePage()
{
     if(null != window.frameElement)
     {
         var docHt = 0, sh, oh;
         if (document.body.scrollHeight) docHt = sh = document.body.scrollHeight;
         if (document.body.offsetHeight) docHt = oh = document.body.offsetHeight;
         if (sh && oh) docHt = Math.max(sh, oh);
         window.frameElement.style.height = docHt + "px";
      } 
      
}
function ChangeImage(img, src)
{
        img.src = WindowParent().GetAppPath() + "App_Themes/Standard/Imagenes/" + src;
}

function Narg_GetPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function Narg_GetPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
   
       function ChangeImage(img, src)
    {
        img.src = WindowParent().GetAppPath() + "App_Themes/Standard/Imagenes/" + src;
    }
    
    // JScript File

function clickIE() {
	if (document.all) {return false;}
}

function clickNS(e) {
	if (document.layers||(document.getElementById&&!document.all)) {
		if (e.which==2||e.which==3) {return false;}
	}
}

if (document.layers)	{
	document.captureEvents(Event.MOUSEDOWN);
	document.onmousedown=clickNS;
}
/*else {
	document.onmouseup=clickNS;document.oncontextmenu=clickIE;
}*/

//document.oncontextmenu=new Function("return false")
document.onkeydown = mykeyhandler;

function mykeyhandler() 
{
 	  /*
 	  if(event.altKey&&(window.event.keyCode==37) || event.ctrlKey&&(window.event.keyCode==78) || event.altKey&&(window.event.keyCode==39)){
 	     alert("Función no permitida")
	     return false;
 	  }

	  if ((window.event && window.event.keyCode == 116) || (window.event && window.event.keyCode == 122)) {
	     window.event.cancelBubble = true;
	     window.event.keyCode = 8;
	     window.event.returnValue = false;
	     return false;
      }
      */
}

function Narg_GetPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function Narg_GetPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}


 function CerrarVentanas()
{
    if(WindowParent().GetRadWindowManager != undefined)
        WindowParent().GetRadWindowManager().CloseAll();
}


function ValidarNumeros(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}
function blockNonNumbers(obj, e, allowDecimal, allowNegative, charDecimal)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == charDecimal && obj.value.indexOf(charDecimal) == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

function currencyFormat(fld, e, miles, decimales)
{
    var decSep = '';
    var decNum = 0;
    
    if(decimales == true){
        decSep =  WindowParent().document.getElementById('hdnSeparadorDecimales').value;   
        decNum = parseInt( WindowParent().document.getElementById('hdnNumeroDecimales').value);
    } 
    
    if(miles == true)
    {
      var milSep =  WindowParent().document.getElementById('hdnSeparadorMiles').value; 
    
    }
    else
    {   
          return blockNonNumbers(fld, e, decimales, true, decSep);
          return;
    }
  
    

	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	
	var bInteger = false;
	var decCount = 0;

	if (whichCode == 13) return true;  // Enter
	if (whichCode == 8) return true;  // Backspace (Bug fixed)
	if (whichCode == 127) return true; // Delete
	key = String.fromCharCode(whichCode);  // Get key value from key code
	if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
	len = fld.value.length;
	for(i = 0; i < len; i++)
	if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
	aux = '';
	for(; i < len; i++)
		if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
		aux += key;
		len = aux.length;
		if (len == 0) fld.value = '';
		if (decSep != '')
		{
			decCount = decNum;
			if (len == 1) fld.value = '0'+ decSep + '0' + aux;
			if (len == 2) fld.value = '0'+ decSep + aux;
			if (len > 2)
				bInteger = true;
		}
		else
		{
			decCount = 0
			bInteger = true;
		}
		if (bInteger)
		{
			aux2 = '';
			for (j = 0, i = len - (decCount + 1); i >= 0; i--)
			{
				if (j == 3)
				{
					aux2 += milSep;
					j = 0;
				}
				aux2 += aux.charAt(i);
				j++;
			}
			fld.value = '';
			len2 = aux2.length;
			for (i = len2 - 1; i >= 0; i--)
				fld.value += aux2.charAt(i);
				fld.value += decSep + aux.substr(len - decCount, len);
		}
	return false;
}
function convertirNumero(total)
{
    var strTotal = new String(total);
    var milSep =  WindowParent().document.getElementById('hdnSeparadorMiles').value; 
      
    aux2 = ''; 
    var i = j = 0;
        
    for (j = 0, i = strTotal.length; i >= 0; i--)
    {            
        if (j == 3 && i != 0)
        {
	        aux2 = milSep + strTotal.charAt(i) + aux2;
	        j = 0;
        }
        else
        {
            aux2 = strTotal.charAt(i) + aux2;
        }
        j++;
    }    
    return aux2;    
}

/// Elimina todos los items de un combo excepto el item de por defecto de seleccion
function deleteItems(dropDownList)
{
	if(null != dropDownList)
	{
		dropDownList.selectedIndex = 0;
		for(var i = 1; i < dropDownList.options.length; i ++)
			dropDownList.options[i] = null;
	    dropDownList.options.length = 1;
	}
	else
		throw "Datos errones para borrar comboBox";
}

/// Este metodo se encarga de buscar y seleccionar un item en un combo por su valor
function selectValueCombo(dropDownList, value)
{
	if(null != dropDownList)
	{
		//dropDownList.selectedIndex = 0;					
		for(var i = 1; i < dropDownList.options.length; i ++)
		{	
			if(dropDownList.options[i].value == value)
			{
				dropDownList.options[i].selected = true;
				return true;
			}
			else
			    dropDownList.options[i].selected = false;
		}
	}
	return false;
}

 function CopyToClipBoard(txt)
{
    if(window.clipboardData)
    {
        txt.select();
        clipboardData.setData('Text',txt.value); 
    }
}

function closeLayer(idLayer)
{
	var divLayer = document.getElementById("dv"+ idLayer);
	var ifrLayer = document.getElementById("ifr" + idLayer);
	if(null != divLayer && null != ifrLayer)
	{
	    divLayer.style.display = "none";
	    ifrLayer.style.display = "none";
	}
}
		
function showLayer(idLayer, x, y, width, height)
{
	var divLayer = document.getElementById("dv"+ idLayer);
	var ifrLayer = document.getElementById("ifr" + idLayer);
	if(null != divLayer && null != ifrLayer)
	{
	    
	    if(x == undefined || null == x)
	        x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft - width;
	    if(y == undefined || null == y)
	        y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
    	if(width == undefined || null == width )
    	    width = parseInt(divLayer.style.width);
    	if(height == undefined || null == height )
    	    height = parseInt(divLayer.style.height);
    	
    	divLayer.style.left = x + "px";
	    divLayer.style.top = y + "px";
	    divLayer.style.display = "inline";
	    ifrLayer.style.left = x + "px";
	    ifrLayer.style.top = y + "px";
	    ifrLayer.style.display = "inline";	
	}
}

function StateLayer(idLayer)
{
    var divLayer = document.getElementById("dv"+ idLayer);
    if(null != divLayer && divLayer.style.display == "none")
        return true;
    return false;
}

function ChangeLabelText(lbl, txt)
{
    if(lbl != undefined && null != lbl)
    {
        if(lbl.childNodes.length == 0)
        {
            var txt = document.createTextNode(txt);
            lbl.appendChild(txt);
        }
        else
            lbl.childNodes[0].nodeValue = txt;
    }
}

function ChangeLabelHtml(lbl, html)
{
    if(lbl != undefined && null != lbl)
    {
        if(IE)
            lbl.innerHTML = html;
        else
        {
            var r = lbl.ownerDocument.createRange();
            r.selectNodeContents(lbl);
            r.deleteContents();
            var df = r.createContextualFragment(html);
            lbl.appendChild(df);
        }
    }
}

//Coloca en seleccionada la fila en la grilla para realizar el rollover
function Selecciona(rowIndex)
{
   
        if(!this.Rows[rowIndex].Selected)
        {  
            if(this.Rows[rowIndex].ItemType == "Item")            
                this.Rows[rowIndex].Control.className="ActiveRow_Telerik"; 
            if(this.Rows[rowIndex].ItemType == "AlternatingItem")     
               this.Rows[rowIndex].Control.className="ActiveRow_Telerik";
        } 

   
} 

//Coloca en su estado normal la fila en la grilla para realizar el rollover        
function Deselecciona(rowIndex)
{   
        if(!this.Rows[rowIndex].Selected)
        {  
            if(this.Rows[rowIndex].ItemType == "Item")            
                this.Rows[rowIndex].Control.className="GridRow_Telerik"; 
            if(this.Rows[rowIndex].ItemType == "AlternatingItem")     
               this.Rows[rowIndex].Control.className="GridAltRow_Telerik";
        } 
 
}  

//Coloca en seleccionada la fila en la grilla para realizar el rollover
function SeleccionaFlat(rowIndex)
{
   
        if(!this.Rows[rowIndex].Selected)
        {  
            if(this.Rows[rowIndex].ItemType == "Item")            
                this.Rows[rowIndex].Control.className="ActiveRow_Flat"; 
            if(this.Rows[rowIndex].ItemType == "AlternatingItem")     
               this.Rows[rowIndex].Control.className="ActiveRow_Flat";
        } 

   
} 

//Coloca en su estado normal la fila en la grilla para realizar el rollover        
function DeseleccionaFlat(rowIndex)
{   
        if(!this.Rows[rowIndex].Selected)
        {  
            if(this.Rows[rowIndex].ItemType == "Item")            
                this.Rows[rowIndex].Control.className="GridRow_Flat"; 
            if(this.Rows[rowIndex].ItemType == "AlternatingItem")     
               this.Rows[rowIndex].Control.className="GridAltRow_Flat";
        } 
 
}  

function getRadioButtonSelectedValue(radio)
{
    var options = radio.getElementsByTagName('input');
    for(i=0;i<options.length;i++)
    {
        var opt = options[i];
        if(opt.checked)
            return opt.value;
        
    }
}
/// Este metodo se encarga de buscar y seleccionar un item en un combo por su valor
function setRadioButtonSelectedValue(radio, value)
{
	if(null != radio)
	{	    
		var options = radio.getElementsByTagName('input');	
						
		for(var i = 0; i < options.length; i ++)
		{	
			if(options[i].value == value)
			{
				options[i].checked = true;
				return true;
			}
			else
			    options[i].checked = false;
		}
	}
	return false;
}

function GetRadWindow()
{
    var oWindow = null;
    if (window.radWindow) oWindow = window.radWindow;
    else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
    return oWindow;
}


 
function CloseWindow()
{
    var oWindow = GetRadWindow();
    oWindow.Close();
    return false;
}
  
function trim(str)
{
    return str.replace(/^\s{1,}/ig,"").replace(/\s{1,}$/ig,"");
}
    
