
function abrir_ventana(link,ancho,alto)
{
	  window.open(link, ancho,"status=no,resizable=no,toolbar=no,location=0,scrollbars=yes,menubar=0,width="+ancho+",height="+alto+",top=20 ,left=50");
}

function abrir_ventana2(link,ancho,alto)
{
	  window.open(link, ancho,"status=no,resizable=no,toolbar=no,location=0,scrollbars=no,menubar=0,width="+ancho+",height="+alto+",top=20 ,left=50");
} 

function CaracteresNoValidos(o){
	var novalidos = new Array();
	novalidos = ["\\","/",":","*","?","\"",">","<","|","^"]; // Este "^" se agrega para el flag del share
	for( var h=0; h <= o.value.length; h++) {
		for( var j=0; j < novalidos.length; j++) {
//		alert("Caracter " + novalidos[j] + "\n retorno = " + o.value.charAt(j));
		if (o.value.charAt(h) == novalidos[j]){o.focus(); return true;};
		}
	}
//	alert("longitud" + o.value.length );
  if (o.value.charAt(o.value.length-1) == '.'){o.focus(); return true;};
}


function CaracteresNoValidos_UserName_Password(dato){
 var caracteres_aceptados = "0123456789abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ@_.- ";

 var c;
 var continuar;

 continuar = "sip"

 for (var i=0;i<dato.value.length;i++){
  c = dato.value.substring(i,i+1);
  
  if ((caracteres_aceptados.indexOf(c,0) == -1)){
	continuar = "nop"
  }
 } 
 if ((dato.value.charAt(dato.value.length-1) == '.') || (dato.value.charAt(0) == '.')){ 
     continuar = "nop"
     dato.focus();
     return true;
 }
 if (continuar == "nop") {
	dato.focus();
	return true;
 }
 else
	return false;
}

function CaracteresNoValidos_Frase(dato){
 var caracteres_aceptados = ", 0123456789áéíóúabcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ/-.*+_";

 var c;
 var continuar;

 continuar = "sip"

 for (var i=0;i<dato.value.length;i++){
  c = dato.value.substring(i,i+1);
  
  if ((caracteres_aceptados.indexOf(c,0) == -1)){
  continuar = "nop"
  }
 }

	if (continuar == "nop") {
    dato.focus();
		return true;
	}
  else
  	return false ;
}

function UsernameNoValido(o){
	if (o.value.indexOf("_") == 3){
		o.focus();
		return true;
	}
}

function checkNum(o,warning){
  if(isNaN(o.value))
  {
	alert(warning);
	o.focus();
	return true;
  }
}

//insertado por christian--------------------
// s es vacio o solo caracteres de espacio
// s es vacio
var whitespace = " \t\n\r";

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s, warning)
{   var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        // si el caracter en que estoy no aparece en whitespace,
        // entonces retornar falso
        if (whitespace.indexOf(c) == -1) {
			return false;
			}
    }
    return true;
}
//end--------------------



function clearform()
{
document.form1.reset();
return true;
}

function isInputEmpty(o,warning){
//  if (o.value.length==0){
  if (isWhitespace(o.value)){
	alert(warning);
	o.focus();
	o.select();
	return true;
	}
}

function getRadioValue(radioObject) {
	var value = null;
	for (var i=0; i<radioObject.length; i++) {
	if (radioObject[i].checked) {
		value = radioObject[i].value;
		break;}
	}
	return value;
}

function gotoURL(url){
  top.location.href=url; return true;
}

function isRadioNotChecked(o,warning){
  if(getRadioValue(o)==null){alert(warning);return true;}
}

function isNotSelected(o,warning){
  //alert(o.name);
  if(o.selectedIndex==0){o.focus();alert(warning);return true;}
}

function valStr(ss)
{ 
  var flag=true; 
  var alpha="abcdefghijklmnopqrstuvwxyz"; 
  var number="0123456789"; 
  var symbol="._-"; 
  var every=alpha+alpha.toUpperCase()+number+symbol; 
  var i=0; 
  for(i=0;i<ss.length;i++) if(every.indexOf(ss.substr(i,1))<0) flag=false; 
  return flag; 
} 
 
function validaMail(emilio)
{ 
  var strs=emilio.split("@"); 
  var name=strs[0]; 
  var domain=strs[1]; 
  var flag=(strs.length==2); 
  if(flag) {if (domain.length<3 || name.length<1) flag=false;}; 
  if(flag) {if (domain.indexOf("..")>=0 || domain.indexOf(".")==-1 || domain.lastIndexOf(".")==domain.length-1) flag=false;};
 
  if(flag) {if (!valStr(name) || !valStr(domain)) flag=false;}; 
  return flag; 
}

function MarcarPermisos(frm, num_pm){
	var i = frm.Perfil.selectedIndex;
	var p = Number(frm.Perfil.options[i].value);
	var pm;
	// setea el campo SumaPermisos con el valor de "p"
	frm.SumaPermisos.value = p;
	for(var j=1; j<=num_pm; j++){
		if(p != -1){
			pm = Number(document.getElementById('P'+j).value);
			if(pm > 0){
				// permiso positivo
				if(p & pm){
					document.getElementById('P'+j).checked=true;
				}
				else{
					document.getElementById('P'+j).checked=false;
				}
			}
			else{
				//permiso negativo
				pm = Math.abs(pm);
				if(p & pm){
					document.getElementById('P'+j).checked=false;
				}
				else{
					document.getElementById('P'+j).checked=true;
				}
			}
		}
	}
}
function MarcarPerfil(frm, num_p, num_pm){
	var p, pm, suma=0;
	var g_Right_LocalShare = 512;
	// inicializamos "suma" con la suma de todos los permisos NEGATIVOS
	for(var j=1; j<=num_pm; j++){
		pm = Number(document.getElementById('P'+j).value);
		if(pm < 0){
			suma += Math.abs(pm);
		}
	}
	//alert(suma);
	// suma todos los permisos seleccionados
	for(var j=1; j<=num_pm; j++){
		if(document.getElementById('P'+j).checked){
			pm = Number(document.getElementById('P'+j).value);
			suma += pm;
		}
	}
	// selecciona el perfil que corresponde a los permisos seleccionados
	var perfil_matched = false;
	for(var j=0; j<num_p; j++){
		p = Number(frm.Perfil.options[j].value);
		if(p == suma || p == (suma+g_Right_LocalShare)){
			frm.Perfil.selectedIndex=j;
			perfil_matched = true;
		}
	}
	// si los permisos no calzan con algun perfil, se selecciona el perfil Personalizado
	if(!perfil_matched){
		frm.Perfil.selectedIndex = frm.Perfil.length-1;
	}
	// setea el campo SumaPermisos con el valor de "suma"
	frm.SumaPermisos.value = suma;
	//al des-seleccionar el permiso P11, se debe des-seleccionar permiso P7
	if(!document.getElementById('P11').checked)
		document.getElementById('P7').checked = false;
}

function pausecomp(Amount)
{
	var d, mill, diff;
	d = new Date() //today's date
	while (1)
	{
		mill=new Date() // Date Now
		diff = mill-d //difference in milliseconds
		if( diff > Amount ) {break;}
	}
}

function set_url_vdisk(obj, idioma){
	// idioma : {spa, por, eng}
	var localOS='';
	if (navigator.appVersion.indexOf('Win')>=0) localOS='Win';
	else if (navigator.appVersion.indexOf('Mac')>=0) localOS='Mac';
	else if (navigator.appVersion.indexOf('Linux')>=0) localOS='Lnx';
	if (localOS=='Win' && ( navigator.appName.indexOf("Microsoft") || navigator.appName.indexOf("Netscape")  ) ){
		if(idioma=='por')
			idioma = 'portuguese';
		else if(idioma=='eng')
			idioma = 'english';
		else
			idioma = 'spanish';
		obj.value='/ActivexRoot/gemelob2b/'+idioma+'/usr_activex.asp';
	}
	else{
		obj.value='/jsroot/othersb2b/default/'+idioma+'/usr_metecookie.asp';
	}
}

/********************************************************************************************************/
/*                          Funciones del Portal                                                        */
/*    - Sirve para ejecutar una URL y obtener una respuesta.                                            */
/*    - Sólo es válido ejecutar URL's que esten dentro del mismo sitio web.                             */
/*    - La respuesta de la ejecución se pasa como parámetro a la función "finish_portal_process()"      */
/*      la cual deberá ser definida por el programador.                                                 */
/*    - El programador también deberá definir el valor de la variable "msg_portal_err", que contiene    */
/*      el mensaje de error que se desplegará en un alert en caso de que ocurra un error con la         */
/*      ejecución del URL.                                                                              */
/*    - Adicionalmente, se puede definir el valor de la variable "str_end_of_result", que contiene      */
/*      el string que marca que se llegó al final del resultado. Es útil para saber que en el layer     */
/*      se cargó completamente el resultado y, entonces, se podrá procesar.                             */
/********************************************************************************************************/
	var msg_portal_err = "Server Error";
	var str_end_of_result = "Msg='End';";
	
	function write_portal(visible){
		var NS=(document.layers!=null);
		if(visible){
			if(NS) portal='<ILAYER ID="paso" width="200" height="50"> </ILAYER>';
		  	else portal='<IFRAME ID="paso" width="200" height="50"> </IFRAME>';
		}
		else{
			if(NS) portal='<ILAYER ID="paso" VISIBILITY="hide"> </ILAYER>';
	  		else portal='<IFRAME ID="paso" STYLE="display:none;"> </IFRAME>';
		}
		document.write(portal);
	}

	/****************************************************************************************/
	/* Chequea el resultado que se cargará en el layer y lo procesa                         */
	/*   Sintaxis: process_portal_result(<N° intentos>, <espera entre intentos (ms)>)       */
	/****************************************************************************************/
	function process_portal_result(num_intentos, duracion_espera){
		var resultado = getPortalValue();
		if(num_intentos > 0){
			//alert(resultado);
			if(resultado.indexOf(str_end_of_result)>=0){
				//alert('finish_portal_process');
				finish_portal_process(resultado);
				return;
			}
			else{
				setTimeout('process_portal_result('+(num_intentos-1)+','+duracion_espera+')', duracion_espera);
			}
		}
		else{
			//alert('msg_portal_err');
			alert(msg_portal_err);
		}
	}
	
	function setPortal(doc, url){
		var NS=(document.layers!=null);
		ClearPortal();
		if(NS){
			doc.layers["paso"].src="http://"+document.domain+url;
		}
		else{
			doc.all["paso"].src=url;
		}
	}
	
	function getPortalValue(){
		var NS=(document.layers!=null);
		var valor, d;
		if(!NS){
			valor = window.frames['paso'].document.body.innerHTML;
		}else{
			d = document.layers['paso'].document;
			d.open();
			valor = d.read();
			d.close();
		}
		return valor;
	}

	function ClearPortal(){
		var NS=(document.layers!=null);
		var d;
		if(!NS){
			window.frames['paso'].document.body.innerHTML='';
		}else{
			d = document.layers['paso'].document;
			d.open();
			d.write('');
			d.close();
		}
	}
/********************************************************************************************************/

function CheckLogin(corp, usr, clv){
	Set_Cookie("GEMELO.CorpName",corp);
	Set_Cookie("GEMELO.UserName",rot13(usr));
	Set_Cookie("GEMELO.Password",rot13(clv));
	Set_Cookie("GEMELO.NewUserId",'~');
	var url_servicio='/scripts/ServerB2B.dll?JSGetPhrase?szFrame='+escape(Math.random())+'&a=4';
	setPortal(document, url_servicio);
	process_portal_result(3, 1000);
}
 
function CheckRecupClave(corp, usr, clv, resp){
	Set_Cookie("GEMELO.CorpName",corp);
	Set_Cookie("GEMELO.UserName",usr);
	Set_Cookie("GEMELO.Password",rot13(clv));
	Set_Cookie("GEMELO.NewUserId",rot13(resp));
	var url_servicio='/scripts/ServerB2B.dll?JSGetPhrase?szFrame='+escape(Math.random())+'&a=2';
	setPortal(document, url_servicio);
	process_portal_result(3, 1000);
}

function CheckRecupFrase(corp, usr, clv, resp){
	Set_Cookie("GEMELO.CorpName",corp);
	Set_Cookie("GEMELO.UserName",usr);
	Set_Cookie("GEMELO.Password",clv);
	Set_Cookie("GEMELO.NewUserId",rot13(resp));
	var url_servicio='/scripts/ServerB2B.dll?JSGetPhrase?szFrame='+escape(Math.random())+'&a=3';
	setPortal(document, url_servicio);
	process_portal_result(3, 1000);
}

function ChangePass(corp, usr, clv, nclv){
	Set_Cookie("GEMELO.CorpName",corp);
	Set_Cookie("GEMELO.UserName",usr);
	Set_Cookie("GEMELO.Password",rot13(clv));
	Set_Cookie("GEMELO.NewPassword",rot13(nclv));
	var url_servicio='/scripts/ServerB2B.dll?JSChgPsw?szFrame='+escape(Math.random());
	setPortal(document, url_servicio);
	process_portal_result(3, 1000);
}

function ResetPass(corp, usr, clv, uid, nclv){
	Set_Cookie("GEMELO.CorpName",corp);
	Set_Cookie("GEMELO.UserName",usr);
	Set_Cookie("GEMELO.Password",clv);
	Set_Cookie("GEMELO.NewUserId",uid);
	Set_Cookie("GEMELO.NewPassword",rot13(nclv));
	var url_servicio='/scripts/ServerB2B.dll?JSChgPsw?szFrame='+escape(Math.random())+'&szReset=S';
	setPortal(document, url_servicio);
	process_portal_result(3, 1000);
}

function SearchFile(file, user, bIncDel, p, pl){
	var url_servicio='/scripts/ServerB2B.dll?JSFindFile?action=1&search='+escape(file)+'&user='+escape(user)+'&del='+escape(bIncDel)+'&p='+escape(p)+'&pl='+escape(pl);
	setPortal(document, url_servicio);
	process_portal_result(3600, 1000); //el timeout es de 1 hora
}
