



var code = 1;
var userid		= null;
var useridint	= null;
var nom			= null;
				
// Obté resultat de la petició remota
// ==0 : OK, !=0 : KO
function getResultCode(result) {
	return result ? result.documentElement.getElementsByTagName("code")[0].firstChild.data : -1;
}

// obté un valor del xml resposta
function retrieveValueFromXml(result, fieldName, defaultValue) {
	return result!=null && 
		result.documentElement!=null &&
		result.documentElement.getElementsByTagName(fieldName)!=null &&
		result.documentElement.getElementsByTagName(fieldName)[0]!=null &&
		result.documentElement.getElementsByTagName(fieldName)[0].firstChild!=null &&
		result.documentElement.getElementsByTagName(fieldName)[0].firstChild.data!=null
		? 
		result.documentElement.getElementsByTagName(fieldName)[0].firstChild.data : defaultValue;
}


// Obté resultat de la petició remota
// pos0 : estat (==0:OK, !=0:KO); pos1 : camp 'data'; pos2 : user name (nick); pos3 : user idint
function getResultAdvanced(result) {
	var xml_result	= new Array();
	if (result!=null) {
		xml_result[0]	= retrieveValueFromXml(result, "code", -1);
		xml_result[1]	= retrieveValueFromXml(result, "data", null);
		xml_result[2]	= retrieveValueFromXml(result, "USERID", null);
		xml_result[3]	= retrieveValueFromXml(result, "USERIDINT", null);
		code			= xml_result[0];
		userid			= xml_result[2];
		useridint		= xml_result[3];
	} else {
		xml_result[0]	= code;
		xml_result[1]	= null;
		xml_result[2]	= userid;
		xml_result[3]	= useridint;
	}
	return xml_result;
}

		
/* Funcion respuesta para el login con SU */
function genericFunctionLogin(id, result) {
	var arr = getResultAdvanced(result);
	log("Login: "+arr[0]);
	if (arr[0] == 0) {
		showLogin(arr);
	} else {
		//limpiarCookies();
	}
} 

/* Nueva funcion para el login con SSO */
function genericFunctionLoginSSO(id, result) {
	var arr = getResultAdvanced(result);
	log("LoginSSO: "+arr[0]);
	if (arr[0] == 0) {
		showLogin(arr);
	} else if (arr[0] == 'err.internal') {
		limpiarCookies();
	}
} 

// Funcion para visualizar la caja de login
function showLogin(arr) {
	var divLoginat = $("#usuari-loginat").html().replace('[username]',arr[2]);
	log("Estamos en la funcion showLogin");
	
	mostraUsuariLoginat();
	//mostraCapcaleraLoginat();
	
	$("#usuari-loginat").html(divLoginat);
	
	log("CODE: "+code);
}

// accés home serveis
function les_meves_dades() {
	var frm = getForm("myform");
	if (frm!=null) {
		frm.method = "post";
		frm.action = URL_REGISTER;
		frm.hiAction.value = "-1";
		frm.hiPortal.value = "tvc";
		frm.hiServiceId.value = "TVC_REG";
		frm.hiRegServiceId.value = "TVC_REG";
		frm.hiTarget.value = "tvc_P01.jsp";
		frm.hiErrTarget.value = "error.jsp";
		frm.submit();
	} else {
		alert("Si us plau, espera a que acabi de carregar la pàgina.");
		window.location.reload();
	}
}

// webmail
function webmail() {
	var frm = getForm("myform");
	frm.method = "post";
	frm.action = URL_REGISTER;
	frm.hiAction.value = "-1";
	frm.hiPortal.value = "tvc";
	frm.hiRegServiceId.value = "TVC_REG";
	frm.hiServiceId.value = "TVC_REG";
	frm.hiTarget.value = "tvc_R13.jsp";
	frm.hiErrTarget.value = "error.jsp";
	frm.submit();
}

/* Noves funcions per optimitzar el proces de LOGIN */
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}

function limpiarCookies() {
	log('inicio borro cookies: '+document.cookie);
	
	deleteCookie("__USERDATA__");
	deleteCookie("__USERDATA__TIMECHECK__");
	deleteCookie("_CCRTV_SSO_TICKET_");
	deleteCookie("_CCRTV_SSO_SERVICE_");
	
	deleteCookie("__USERDATA__","/","www.ritmes.cat");
	deleteCookie("__USERDATA__TIMECHECK__","/","www.ritmes.cat");
	deleteCookie("_CCRTV_SSO_TICKET_","/",".ritmes.cat");
	deleteCookie("_CCRTV_SSO_SERVICE_","/",".ritmes.cat");
	log('fin borro cookies: '+document.cookie);
}

function getXmlSerialized(xmlstring) { 
   if (document.implementation.createDocument && typeof DOMParser!='undefined') {
     return new DOMParser().parseFromString(xmlstring, "text/xml");
   } else if (typeof XMLSerializer!='undefined') {
     return new XMLSerializer().serializeToString(xmlstring);
   } else if (xmlstring.xml) {
     return xmlstring.xml;
   } else if (window.ActiveXObject) {
        var dom = new ActiveXObject("Microsoft.XMLDOM");
        dom.async="false"; 
        dom.loadXML(xmlstring);
        return dom;
    } else return null;
  }  
  
function getDateGMT(l) {
   var d = new Date();
   d.setTime(l);
   return d.toGMTString();
}
     
function CheckValidCookieUser(dbg) {
   var r = getCookie("__USERDATA__"); 
   var r2 = getCookie("__USERDATA__TIMECHECK__");
   log("R2: "+r2);
   var now = new Date().getTime();
   var r2fix = ((r2==null || r2=='' || r2=='null')?0:(r2*1));
   var diff = (r2fix-now);
   log(diff);
   var ret = (
    r!=null && r!='' && r!='null' && r.indexOf("<code>0</code>")>-1 //check that userdata found and valid
    //&& (r2==null || r2=='' || r2=='null' || (diff>0)) // check cookie time period valid or null
    && (diff>0) // check cookie time period valid or null
   );   
   if (dbg) {
    ret= ret + " ... "
    + " diff[" + diff
    + "] UDT[" + r2fix //+ " " + getDateGMT(r2fix)
    + "] now[" + now //+ " " + getDateGMT(now)
    + "] UD[" + r + "] "
    ;
   }
   return ret;
}   

function updateTimecheck() {
    var futdate = new Date();  //Get the current time and date
    var expdate = futdate.getTime();  //Get the milliseconds since Jan 1, 1970
    expdate += expireCheckCookieTime;  //expires in 5 minutes (milliseconds)       
    var newCookie="__USERDATA__TIMECHECK__=" + expdate +"; path=/;"; //Set the new cookie values up
    window.document.cookie=newCookie; //Write the cookie    
}
    
var expireCheckCookieTime = 300*1000;  //expires in 5 minutes (milliseconds)            
//var expireCheckCookieTime = 1000;  //expires in 1 second (milliseconds)            
var urlgatewaybase = URL_WEB + "/pritmesv2/g.jsp";
var urlnexobase = URL_WEB + "/pritmesv2/action/n.jsp";
    
function checkUser(haySSO) {
	log('haySSO: '+haySSO);
	log('__USERDATA__: '+getCookie("__USERDATA__"));
    if (!CheckValidCookieUser()) {
   	  // Comportamiento actual
      var r = getCookie("_FOREIGN_SESSION_ID");
      if (!haySSO && (r!=null && r!='' && r!='null'  || !(document.cookie))) {
    	  
    	  log("_FOREIGN_SESSION_ID: "+r);
          loadXMLDoc(urlgatewaybase+"?a=1&t="+r+new Date().getTime(),false,"Login");
          updateTimecheck();
          
      } else {
    	  var ticket = getCookie("_CCRTV_SSO_TICKET_");
  	  	  var service = getCookie("_CCRTV_SSO_SERVICE_");
  	  	  log('service: '+service+' - ticket: '+ticket);
    	  //if (((ticket!=null && ticket!='' && ticket!='null') && (service!=null && service!='' && service!='null'))  || !(document.cookie)) {
       	  if (haySSO && (ticket!=null && ticket!='' && ticket!='null') && (service!=null && service!='' && service!='null')) {
    		  log('decodeHex service: '+decodeHex(service));

    					// Si el ticket es valido, obtengo datos de usuario
    					var urlDades = URL_WEB + "/pritmesv2/action/getDataUser.jsp";
    					loadXMLDoc(urlDades,false,"LoginSSO");
    		            updateTimecheck();
    		            
    			
    	  } else {
    		  //limpiarCookies();

    		  //genericFunctionLogin(null, null);
    		  
    	  }
      }
    } else {
        //alert("__USERDATA__: "+getCookie("__USERDATA__"));
        genericFunctionLogin(null, getXmlSerialized(getCookie("__USERDATA__")));
        var code = 0;
    } 
}

function enviaForm(form, haySSO) {
	var f = document.forms[form];
	var docloc = "" + document.location;
	if (docloc.indexOf("error") >= 0) {
		if (haySSO) {
			document.getElementById('hiTarget').value = URL_WEB + "/pritmesv2/g.jsp?url=" + URL_WEB;
			//f.elements['urlTo'].value = ""+document.location;
		} else {
			document.getElementById('hiTarget').value = URL_WEB + "/pritmesv2/g.jsp?url=" + URL_WEB;
		}
			
	} else {
		if (haySSO) {
			//f.elements['service'].value = urlnexobase + "?service="+docloc;
			document.getElementById('hiTarget').value = URL_WEB + "/pritmesv2/g.jsp?url="+docloc;
			//f.elements['urlTo'].value = ""+document.location;
		} else {
			document.getElementById('hiTarget').value = URL_WEB + "/pritmesv2/g.jsp?url="+docloc;
		}
	}
	if (haySSO) {
		f.elements['U'].value = f.elements['U'].value + "@tv3.cat";
	}
	document.getElementById(form).submit();
}  

function enviaForm2(form) {
	document.getElementById('hiTarget').value = URL_WEB + "/pritmesv2/g.jsp?url="+document.location;
	document.getElementById(form).submit();
}  

function logout(baseurl, haySSO) {
	if (haySSO) {
		baseurl = URL_WEB;
		
		limpiarCookies();
	  	
		location.href = baseurl + '/pritmesv2/action/logoutUsuario.jsp?url=' + document.location;
	} else {
		location.href = baseurl + '/su/Register?hiPersist=true&hiTarget=' + escape(urlgatewaybase + '?url=' + document.location) + '&hiAction=0&hiRetrievalXsl=login.xsl';
	}

}

var hexv = {
  "00":0,"01":1,"02":2,"03":3,"04":4,"05":5,"06":6,"07":7,"08":8,"09":9,"0A":10,"0B":11,"0C":12,"0D":13,"0E":14,"0F":15,
  "10":16,"11":17,"12":18,"13":19,"14":20,"15":21,"16":22,"17":23,"18":24,"19":25,"1A":26,"1B":27,"1C":28,"1D":29,"1E":30,"1F":31,
  "20":32,"21":33,"22":34,"23":35,"24":36,"25":37,"26":38,"27":39,"28":40,"29":41,"2A":42,"2B":43,"2C":44,"2D":45,"2E":46,"2F":47,
  "30":48,"31":49,"32":50,"33":51,"34":52,"35":53,"36":54,"37":55,"38":56,"39":57,"3A":58,"3B":59,"3C":60,"3D":61,"3E":62,"3F":63,
  "40":64,"41":65,"42":66,"43":67,"44":68,"45":69,"46":70,"47":71,"48":72,"49":73,"4A":74,"4B":75,"4C":76,"4D":77,"4E":78,"4F":79,
  "50":80,"51":81,"52":82,"53":83,"54":84,"55":85,"56":86,"57":87,"58":88,"59":89,"5A":90,"5B":91,"5C":92,"5D":93,"5E":94,"5F":95,
  "60":96,"61":97,"62":98,"63":99,"64":100,"65":101,"66":102,"67":103,"68":104,"69":105,"6A":106,"6B":107,"6C":108,"6D":109,"6E":110,"6F":111,
  "70":112,"71":113,"72":114,"73":115,"74":116,"75":117,"76":118,"77":119,"78":120,"79":121,"7A":122,"7B":123,"7C":124,"7D":125,"7E":126,"7F":127,
  "80":128,"81":129,"82":130,"83":131,"84":132,"85":133,"86":134,"87":135,"88":136,"89":137,"8A":138,"8B":139,"8C":140,"8D":141,"8E":142,"8F":143,
  "90":144,"91":145,"92":146,"93":147,"94":148,"95":149,"96":150,"97":151,"98":152,"99":153,"9A":154,"9B":155,"9C":156,"9D":157,"9E":158,"9F":159,
  "A0":160,"A1":161,"A2":162,"A3":163,"A4":164,"A5":165,"A6":166,"A7":167,"A8":168,"A9":169,"AA":170,"AB":171,"AC":172,"AD":173,"AE":174,"AF":175,
  "B0":176,"B1":177,"B2":178,"B3":179,"B4":180,"B5":181,"B6":182,"B7":183,"B8":184,"B9":185,"BA":186,"BB":187,"BC":188,"BD":189,"BE":190,"BF":191,
  "C0":192,"C1":193,"C2":194,"C3":195,"C4":196,"C5":197,"C6":198,"C7":199,"C8":200,"C9":201,"CA":202,"CB":203,"CC":204,"CD":205,"CE":206,"CF":207,
  "D0":208,"D1":209,"D2":210,"D3":211,"D4":212,"D5":213,"D6":214,"D7":215,"D8":216,"D9":217,"DA":218,"DB":219,"DC":220,"DD":221,"DE":222,"DF":223,
  "E0":224,"E1":225,"E2":226,"E3":227,"E4":228,"E5":229,"E6":230,"E7":231,"E8":232,"E9":233,"EA":234,"EB":235,"EC":236,"ED":237,"EE":238,"EF":239,
  "F0":240,"F1":241,"F2":242,"F3":243,"F4":244,"F5":245,"F6":246,"F7":247,"F8":248,"F9":249,"FA":250,"FB":251,"FC":252,"FD":253,"FE":254,"FF":255
};

function ntos(n){
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}
		
function decodeHex(str){
    str = str.toUpperCase().replace(new RegExp("s/[^0-9A-Z]//g"));
    var result = "";
    var nextchar = "";
    for (var i=0; i<str.length; i++){
        nextchar += str.charAt(i);
        if (nextchar.length == 2){
            result += ntos(hexv[nextchar]);
            nextchar = "";
        }
    }
    return result;
    
}

var debug = false;
var divLog = null;
var lineaLog = 1;

function initLog() {
	divLog = $(document.createElement('div'));
	divLog.attr('position','absolute');
	divLog.attr('style','float:none;background:beige;border:solid 1px black;padding:5px;overflow:scroll;');
	divLog.width('98%');
	divLog.height('100px');
	
	//var slideActiu = $('#contenidor'); 
	//divLog.insertBefore(slideActiu);
	body = $(document.body);
	body.prepend(divLog);
}

function timeLog() {
	var today = new Date();
	var tt = today.getHours()+":"+today.getMinutes()+":"+today.getSeconds()+":"+today.getMilliseconds();
	return tt;
	//return today.toGMTString()
}

function log(msg) {
	if (debug) {
		if (divLog == null) {
			initLog();
		}
		
		divLog.html(divLog.html()+"<b>"+timeLog()+" - "+lineaLog+": </b>"+msg+"<br/>");
		lineaLog++;
	}
}
