//Agregamos a todos los strings el método trim
String.prototype.trim = function(){ return this.replace(/^[\s\t\r\n]+|[\s\t\r\n]+$/g,'') };

// Para uso de imagenes
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

/* Functions that swaps images. */
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/* Functions that handle named groups. */
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

// Para uso en formularios
function PopSpaces(Str)
{
	StrRet = "";
	for(i=0; i<Str.length; i++)
		if( Str.charAt(i)!=" " )
			StrRet += Str.charAt(i);
	return StrRet;
}

//Valida los campos pasados por parámetro que tengan un valor, usa el metodo trim
//generado en el prtotype
function ValFormFieldsCompleted(FormName)
{
	if (document.forms[FormName])
	{
		var args = ValFormFieldsCompleted.arguments;
		for (var i=0; i<(args.length-1); i+=1)
		{
			if ( document.forms[FormName][args[i+1]] )
			{
				Str = document.forms[FormName][args[i+1]].value.trim();
				if (!Str)
					return false;
			}
		}
	}
	return true;
}

//Retorna en un string todos los valores de un form en formato GET
function Form2StrGet(FormName)
{
	if (document.forms[FormName])
	{
		var Str = "";
		for (var i=0; (document.forms[FormName][i]); i+=1)
		{
			if ( document.forms[FormName][i].name )
				Str = Str+"&"+document.forms[FormName][i].name+"="+document.forms[FormName][i].value;
		}
		return Str;
	}
}
//Genera retorna una direccion de email
function MakeEmail(User, Domain, NotWrite)
{
	if (NotWrite)
		return User + "@" + Domain;
	else
		document.write(User + "@" + Domain);
}

//Crea un <a href para enviar un email runtime
function MakeEmailLink(User, Domain, Class)
{
	if (Class)
		Class='Class="'+ Class +'"';
	else
		Class = " ";
	document.write("<a href=\"mailto:" + MakeEmail(User, Domain, 1) + "\""+Class+">" + MakeEmail(User, Domain, 1) + "</a>")
}


function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

////  MANEJO DE LAYERS /////

// Para uso en menes desplegables
function ToggleMenu(SubMenu,ImageName,ImageSrc,ImageF2,OnlyOneOpen)
{
	if(SubMenu>0)
	{
		SubMenuId=('SubMenu'+SubMenu);
		if (ImageName)
			ImgObj = document.getElementById(ImageName);

		if (document.getElementById(SubMenuId).style.display=='none')
		{
			document.getElementById(SubMenuId).style.display="inline"
			if( ImgObj && document.getElementById(ImageName) && ImageSrc && ImageF2 )
			{
				ImgObj.src = ImageF2;
				ImgObj.alt="Ocultar sub-menu";
			}
		}
		else
		{
			document.getElementById(SubMenuId).style.display="none"
			if( ImgObj && document.getElementById(ImageName) && ImageSrc && ImageF2 )
			{
				ImgObj.src=ImageSrc
				ImgObj.alt="Mostrar sub-menu"
			}
		}
		return false;
	}
}

var OpenLayer= new Array(3);

function OpenOneLayer(LayerId, ImageName, ReplacementImg, SwitchEnabled)
{
	SubMenuId=('SubMenu'+LayerId);
	//Ivan 2003-11-14: no compatible con Mozilla: if( document.all[SubMenuId] )
//	if( document.all[SubMenuId] )
	if( document.getElementById(SubMenuId) )
	{
		if( OpenLayer["Layer2Open"]==null ) {
			//if( ImageName && !document.images[ImageName] )
			//    alert('No se encontro imagen ' + ImageName + ' en funcion OpenOneLayer en common/js/common.js.');
			if( ImageName && document.getElementById(ImageName) )
				OpenLayer["OriginalImg"]= document.images[ImageName].src;
			ToggleMenu(LayerId, ImageName, OpenLayer["OriginalImg"], ReplacementImg);
			OpenLayer["Layer2Open"] = LayerId;
			OpenLayer["ImageName"]  = ImageName;
			OpenLayer["ReplacementImg"] = ReplacementImg;
		}
		else
		{
			if( LayerId!=OpenLayer["Layer2Open"] )
			{
				ToggleMenu(OpenLayer["Layer2Open"],OpenLayer["ImageName"], OpenLayer["OriginalImg"],OpenLayer["ReplacementImg"]);
				if( ImageName && document.getElementById(ImageName) )
					OpenLayer["OriginalImg"]= document.images[ImageName].src;
				ToggleMenu(LayerId,ImageName,OpenLayer["OriginalImg"], ReplacementImg );
				OpenLayer["Layer2Open"]= LayerId;
				OpenLayer["ImageName"]= ImageName;
				OpenLayer["ReplacementImg"] = ReplacementImg;
			}
			else
			{
				if( SwitchEnabled )
				{	// Si habilita abrir y cerrar en el mismo evento vuelve al estado inicial
					ToggleMenu(LayerId,ImageName,OpenLayer["OriginalImg"], ReplacementImg );
					OpenLayer["Layer2Open"]= null;
					OpenLayer["ImageName"]= null;
					OpenLayer["ReplacementImg"] = null;
				}
			}
		}
	}
}

// Abre y cierra una Layer en funciÃ³n de una variable
function SwitchLayer()
{
	var args = SwitchLayer.arguments;
	for (var i=0; i<(args.length-1); i+=2)
	{
		if (args[i+1]==1)
			document.getElementById(args[i]).style.display='inline';
		else
			document.getElementById(args[i]).style.display='none';
	}
}
/*
	Si la div tiene display inline le pone none y al revez ...
*/
function ShowHideLayer(LayerName)
{
	ObjLayer = document.getElementById(LayerName);
	if (ObjLayer)
	{
		if (ObjLayer.style.display=='none')
			ObjLayer.style.display = 'inline';
		else
		{
			if (ObjLayer.style.display == 'inline')
				ObjLayer.style.display = 'none';
		}
	}
}

/* Cambia el estado de visibilidad de una Layer en forma temporal */
function TemporaryShowHideLayer(Layer,Time)
{
	ShowHideLayer(Layer);
	var Func2Use = "ShowHideLayer('"+Layer+"');";
	window.setTimeout(Func2Use,Time);
}

// Administrar un Menu Pull-Down
// Array global de JS para mantener la informaciï¿½ de las opciones del menu
var JSMenuArray = new Array();

function ShowHideMenuLayer(LayerName,OnOff,Level)
{
//alert("Nivel: "+Level);
//alert("Nombre: "+LayerName);
	if( JSMenuArray.length > 0 )
	{
		for( var i=JSMenuArray.length-1; i>=Level; i-- )
		{
			if( JSMenuArray[i].length )
			{
				var MenuLevel = JSMenuArray[i];
				for( var j=0; j<MenuLevel.length; j++ )
					SwitchLayer(MenuLevel[j],0);
				JSMenuArray[i] = new Array();
			}
		}
	}
	if( OnOff==1 )
	{
		JSMenuArray[Level] = new Array();
		JSMenuArray[Level][0] = LayerName;
	}
	SwitchLayer(LayerName,OnOff);
}


// Para aperturas de secciones condicionales a un combo en un formulario
var OpenedComboLayers = new Array();

function OpenConditionalComboLayer(Name,Layer)
{
	if( Layer )
	{
		if( document.getElementById(Name+Layer) )
		{
			if( OpenedComboLayers[Name] && document.getElementById( OpenedComboLayers[Name] ) )
				document.getElementById( OpenedComboLayers[Name] ).style.display="none";
			document.getElementById(Name+Layer).style.display="inline";
			OpenedComboLayers[Name] = Name+Layer;
		}
		else if( OpenedComboLayers[Name] && OpenedComboLayers[Name] != Name+Layer )
			 {
				document.getElementById( OpenedComboLayers[Name] ).style.display="none";
				OpenedComboLayers[Name]="";
			 }
	}
	else
	{
		if( OpenedComboLayers[Name] && document.getElementById( OpenedComboLayers[Name] ) )
		{
			document.getElementById( OpenedComboLayers[Name] ).style.display="none";
			OpenedComboLayers[Name]="";
		}
	}
}


// Para abrir ventanas
function MM_openBrWindow(theURL,winName,features) { //v2.0

  WIN = window.open(theURL,winName,features);
  WIN.parentWindow = window;
}

// Abre una ventana con una imï¿½en del tamaï¿½ de dicha imï¿½en
var ImgWinRes=0;

function ImgWinResize()
{
  if (navigator.appName == 'Netscape')
  	ImgWinRes=40;
  if (document.images[0])
  	window.resizeTo(document.images[0].width+30, document.images[0].height+60-ImgWinRes);
  self.focus();
}


// Para uso en Layers
function MM_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

//  COOKIES  //
// Obtiene el valor de un cookie dado el lugar desde donde comienza a leer
function getCookieVal (offset)
{
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
		endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

// Obtiene el valor de una Cookie dado el nombre
function GetCookie (name)
{
	var arg = name + "=";
	var alen = arg.length;
	var cooklen = document.cookie.length;
	var i = 0;
	while (i < cooklen)
	{
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			return getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

// Setea el valor de una Cookie
// Argumentos: 1: Nombre; 2: Valor; 3: Tiempo Lï¿½ite;
//			   4: Camino; 5: Dominio; 6: Cookie Segura?
function SetCookie (name, value)
{
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
	((path == null) ? "" : ("; path=" + path)) +
	((domain == null) ? "" : ("; domain=" + domain)) +
	((secure == true) ? "; secure" : "");
}

// Elimina una Cookie dado el Nombre
// Le asigna al Cookie el valor de tiempo 0 para eliminarlo
function DeleteCookie (name)
{
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

// PLUGINS //
// Verifica que el navegador del usuario soporta Flash
function MM_checkPlugin(plgIn, theURL, altURL, autoGo)
{ //v4.0
  var ok=false; document.MM_returnValue = false;
  with (navigator)
  if (appName.indexOf('Microsoft')==-1 || (plugins && plugins.length))
  {
    ok=(plugins && plugins[plgIn]);
  }
  else if (appVersion.indexOf('3.1')==-1)
  	   { //not Netscape or Win3.1
	    	if (plgIn.indexOf("Flash")!=-1 && window.MM_flash!=null)
	    		ok=window.MM_flash;
	    	else if (plgIn.indexOf("Director")!=-1 && window.MM_dir!=null)
	    			ok=window.MM_dir;
	    		else ok=autoGo;
 	    }
  return ok;
}

// Usado por el MM_checkPlugin
with (navigator) if (appName.indexOf('Microsoft')!=-1 && appVersion.indexOf('Mac')==-1) document.write(''+
'<scr'+'ipt language="VBScript">\nOn error resume next\n'+
'MM_dir = IsObject(CreateObject("SWCtl.SWCtl.1"))\n'+
'MM_flash = NOT IsNull(CreateObject("ShockwaveFlash.ShockwaveFlash"))\n</scr'+'ipt>');

// Checkeo la existencia del Cookie y si no existe la cargo.
var flashvar = GetCookie("PageFlashEnabled");
if (flashvar!=1)
{
	if( MM_checkPlugin('Shockwave Flash','','',false) )
	{
//		document.write("Con Flash");
		SetCookie("PageFlashEnabled","1");
	}
	else
	{
//		document.write("Sin Flash");
		SetCookie("PageFlashEnabled","0");
	}
}

// Pone la pagina actual como la Pï¿½ina de Inicio del Navegador
function SetHomePage(obj,urlStr)
{
	obj.style.behavior='url(#default#homepage)';
	obj.setHomePage('http://'+urlStr);
}

// Agrega la pï¿½ina actual en los Favoritos
function AddBookmark(WinTitle,URLStr)
{
	if( !URLStr ) URLStr = window.location;
	if( !WinTitle ) WinTitle = "http://"+URLStr;

	if (document.all)
		window.external.AddFavorite(URLStr,WinTitle);
}

// Cuenta la cantidad de ocurrencias de una cadena dentro de otra
function getMatchStrQty( str, compString )
{
	var targetString = str.toLowerCase();
	var matchString = compString.toLowerCase();
	var count = 0;

	for( var i=0; i<targetString.length; i++ )
		if( matchString == targetString.substr(i,matchString.length) )
			count++;

	return count;
}

//Funciones para el manejo de Menues PullDown
function GetDisplay(LayerName)
{
	return document.getElementById(LayerName).actualDisplay;
}
function SetDisplay(LayerName, Display)
{
	document.getElementById(LayerName).actualDisplay = Display;
}

function ShowLayer(LayerName)
{
	if(!GetDisplay(LayerName))
	{
		MenuShowHiddeLayer(LayerName);
		SetDisplay(LayerName, true);
	}
}

function HiddeLayer(LayerName)
{
	if(GetDisplay(LayerName))
	{
		MenuShowHiddeLayer(LayerName);
		SetDisplay(LayerName, false);
	}
}

function MenuShowHiddeLayer(LayerName)
{
	Hidden = 'hidden';
	Visible = 'visible';
	theLayer = document.getElementById(LayerName);
	if(theLayer.style.visibility == Hidden)
		theLayer.style.visibility = Visible;
	else
		theLayer.style.visibility = Hidden;
}
function ChangeDivPosition(DivName)
{
	MyLayer = document.getElementById(DivName);

	if (MyLayer)
	{
		if (MyLayer.style.position=='absolute')
			MyLayer.style.position='relative';
		else
			MyLayer.style.position='absolute';
	}
}

function getScreenResolution()
{
	return screen.width + "x" +screen.height;
}

function CopyField2Clipboard(objName)
{
	obj = MM_findObj(objName);

	if (obj) 
		window.clipboardData.setData('Text', obj.value);
}
