
<!--

/*****************************************
$RCSfile: lthviewer.js,v $
$Revision: 1.13 $
$Date: 2003/11/25 16:06:41 $
******************************************/


var base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
function lthEncodeLogin(user, passwd) {

	var plainstr = new String(user);
	if ( passwd != null && passwd.length > 0 )
		plainstr += ":" + passwd;

	var i = 0, pad = 0, k = 0;
	var b1, b2, b3, c1, c2, c3, c4;
	var encodestr = new Array();
	var len = plainstr.length;
	
	while ( i < len ) {
		b1 = plainstr.charCodeAt(i++);		
		if (i >= len) {
			b2 = b3 = 0;
			pad = 2;
		} else {
			b2 = plainstr.charCodeAt(i++);
			if (i >= len) {
				b3 = 0;
				pad = 1;
			} else {
				b3 = plainstr.charCodeAt(i++);
			}
		}
		c1 = (b1 >> 2);
		c2 = (((b1 & 0x3) << 4) | (b2 >> 4));
		c3 = (((b2 & 0xf) << 2) | (b3 >> 6));
		c4 = (b3 & 0x3f);
		encodestr[k++] = base64.charAt(c1);
		encodestr[k++] = base64.charAt(c2);
		switch (pad) {
		case 0:	encodestr[k++] = base64.charAt(c3);
			encodestr[k++] = base64.charAt(c4);
			break;
		case 1:	encodestr[k++] = base64.charAt(c3);
			encodestr[k++] = '=';
			break;
		case 2:	encodestr[k++] = '=';
			encodestr[k++] = '=';
			break;
		}
		
	} // while
	return new String("*"+encodestr.join().replace(/,/ig, "")+"*");
}

function setCookie(name, value, expires, path, domain, secure) {
		
	if ( getCookie(name) != null )
		deleteCookie(name);
		
	parent.document.cookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
}

function getCookie(name) {

	var prefix = name + "=";
	var start = parent.document.cookie.indexOf(prefix);
	if (start == -1)
		return null;
	var end = parent.document.cookie.indexOf(";", start + prefix.length);
	if (end == -1)
		end = parent.document.cookie.length;
	var value =  unescape(parent.document.cookie.substring(start + prefix.length, end));
	return value;
}

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		parent.document.cookie = name + "=" + 
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT"
	}
}

function saveLthInfo(server, user, group, pwd, token) {
	var expDays = 10; // number of days the cookie should last
	var expired = new Date(); 
	expired.setTime(expired.getTime() + (expDays*24*60*60*1000));
	setCookie('pwd', pwd, expired);
	setCookie('user', user, expired);
	setCookie('group', group, expired);
	setCookie('token', token, expired);
	setCookie('server', server, expired);
}

function getStrTime() {
	var t = new Date();
	var st = new String(t.getTime());
	t = null;
	return new String("&time=" + st.substring(st.length-6, st.length));
}

function selectReport(rptDims, rptType, rptId) {
	
	if ( rptDims == null || rptType == null || rptId == null )
		return;
	
	if ( parent.G_StrSession == null || parent.G_StrServerUrl == null )
		return;

	var reportReq = parent.G_StrServerUrl + "?req=" + rptType + "&tk=" + parent.G_StrSession + "&id=" + rptId;
	if ( rptDims.length > 0 )
		reportReq += "&dim=" + rptDims;
		
	if ( rptType == "chart" )
		reportReq += parent.getReportSize();
		
	var drill = getCookie("drill");
	if ( drill )
		reportReq += drill;
		
	reportReq += getStrTime();

	window.open(reportReq, "report");
}

function currentSelection(sel) {	
	
	if ( !sel ) return "";
	if ( sel.getResDimSize() == 0 ) return "";

	var strdim = ""; 
	if ( sel.getResDimSize() == 1 ) {
		var s = sel.document.dimsForm.DIMS;
		strdim = s[s.selectedIndex].value.toString();
	}
	else {
		for(var i=0; i<sel.document.dimsForm.DIMS.length; i++)  {
			var s = sel.document.dimsForm.DIMS[i];
			strdim += s[s.selectedIndex].value.toString() + ","; 
		}
		strdim = strdim.substring(0, strdim.length-1); 
	}
	//alert(strdim);
	return strdim;
} 

function changeDim(selector) { selectReport(currentSelection(self), self.getReportType(), self.getReportId()); } 

function pdfData(filePdf) {

	var dataReq = parent.G_StrServerUrl;
	if ( filePdf )
		dataReq += "/" + filePdf + ".pdf";

	dataReq += "?req=chart&tk=" + parent.G_StrSession + "&id=" + self.getReportId();
	var rptDims = currentSelection(self);
	if ( rptDims.length > 0 )
		dataReq += "&dim=" + rptDims;

	dataReq += getStrTime() + "&pdf=1";
	window.open(dataReq, "lth_pdf");
}

function csvData(fileCsv) {

	var dataReq = parent.G_StrServerUrl;
	if ( fileCsv )
		dataReq += "/" + fileCsv + ".csv";

	dataReq += "?req=cube&tk=" + parent.G_StrSession + "&id=" + self.getReportId();
	var rptDims = currentSelection(self);
	if ( rptDims.length > 0 )
		dataReq += "&dim=" + rptDims;

	var drill = getCookie("drill");
	if ( drill )
		dataReq += drill;

	dataReq += getStrTime() + "&csv=1";
	window.open(dataReq, "_blank");
}

function loggedIn(session) {
	if ( parent.G_StrSession == "" ) {
		parent.G_StrSession = session; 
		var req = parent.G_StrServerUrl + "?req=list&tk=" + session + "&fmt=js";
		setCookie("fLoaded", 1);
		window.open(req, "reportlist");
	}	
}

function listLoaded(server, session) { parent.G_StrSession = session; }

function defaultReport(rptDims, rptType, rptId) { 
	/**
	 * Cancello il cookie che memorizza lo stato di navigazione.
	 */
	deleteCookie("drill");
	selectReport(rptDims, rptType, rptId); 
}

/**
 * Salvo il cookie che memorizza lo stato di navigazione. 
 */
function drillTbl(drill_mode) {
	if ( drill_mode ) setCookie('drill', drill_mode);
}

/**
 * Gestione dell'errore
 * E' sempre rediretto sul frame 'report'.
 */
function lthPageLoaded() {
 	
 	if ( document.all.item('ltherr') ) {
 		
 		var name = self.name.toLowerCase();
 		if ( name.length == 0 || name == "report" || name == "logout" )
 			return;
 		
 		// elimino il tag di errore per non entrare nuovamente in questo if
 		var htmlCode = document.body.outerHTML.replace(/id=ltherr/ig, "");		
 		
		var href = self.document.location.href;
		var ii = href.indexOf(self.document.location.pathname);
		if ( ii != -1 ) {
			var url1 = href.substring(0, ii+1) + "lthapp/" + name + ".htm";
			// viene riscritto il frame con il default
			self.open(url1, self.name);
		}
		
		// viene ridiretto l'errore sul frame report
 		var win = self.open("", "report");
		win.document.writeln('<HTML>');
		win.document.writeln('<HEAD>');
		win.document.writeln('<TITLE>@Lilith - Error page</TITLE>');
		win.document.writeln('<SCRIPT language=\"JavaScript\">');
		win.document.writeln('<!--');
		win.document.writeln('function lthPageLoaded() {');
		win.document.writeln('}');
		win.document.writeln('// -->');
		win.document.writeln('</SCRIPT>');
		win.document.writeln('</HEAD>'); 		
 		win.document.writeln(htmlCode);
 		win.document.writeln('</HTML>');
 		win.document.close();
 	}
}

// -->
