
/* $Id: Login.joomla.js 3944 2010-03-30 14:54:59Z mmacia $ */

function getHttpObject() {
	if (typeof XMLHttpRequest != "undefined") {return new XMLHttpRequest();}

	try {
		return new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			return ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {}
	}
	return null;
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function toQueryString(obj) {
	var ret = "";
	if (typeof obj != "object") {return ret;}

	for (var prop in obj) {
		ret += prop + "=" + encodeURIComponent(obj[prop]) + "&";
	}

	if (ret.length > 0) {ret = ret.substr(0, ret.length-1);}
	return ret;
}

function getTotalFiles() {
	var target = "/index.php/Resource/getTotalFiles";
	var http = getHttpObject();

	function stateChange(http) {
		if (http.readyState == 4 && http.status == 200) {
			var json = eval("(" + http.getResponseHeader("X-JSON") + ")");
			if (json.total > 0) {
				formatNumber(json.total);
				setInterval("updateTotalFiles()", Math.random() * 12000);
			}
		}
	}

	http.open("GET", target, false);
	http.setRequestHeader("X-Requested-With", "XMLHttpRequest");
	http.setRequestHeader("Accept", "application/json");
	http.send(null);
	stateChange(http);
}

function formatNumber(number) {
	number = number + "";
	var len = number.length-1, cnt = 0;

	for (len; len >= 0; --len) {
		document.getElementById("docCounter" + len).innerHTML = number.charAt(cnt);
		++cnt;
	}
}

function updateTotalFiles() {
	var total = "";

	for (var n = 7; n >= 0; --n) {
		total += document.getElementById("docCounter" + n).innerHTML;
	}

	total = parseInt(total, 10);

	if (total > 0) {
		formatNumber(++total);
	}
}

function doLogin(target) {
	var params = {product: "DigitalDocu"};

	if (target.search("admin") == -1) {
		params.clientname = document.getElementById("clientname").value;
		params.username = document.getElementById("username").value;
		params.password = document.getElementById("password").value;
	}
	else {
		params.clientname = document.getElementById("clientnameA").value;
		params.password = document.getElementById("passwordA").value;
	}

	if (document.getElementById("remember").checked) {params.remember = 1;}
	if (document.getElementById("external_cnn").checked) {params.external_cnn = 1;}
	if (document.getElementById("popup") && document.getElementById("popup").checked) {params.popup = 1;}

	var qry = toQueryString(params);
	var http = getHttpObject();

	function stateChange(http) {
		if (http.readyState == 4 && http.status == 200) {
			var json = eval("(" + http.getResponseHeader("X-JSON") + ")");
			var url = (target.search("admin") == -1) ? "/index.php/Main" : "/index.php/admin/Login";

			if (json.logged) {
				if (document.getElementById("popup") && document.getElementById("popup").checked && target.search("admin") == -1) {
					var width  = screen.width - 12;
					var height = screen.height - 70;
					var props = "top=0,left=0,width=" + width + ",height=" + height + ",toolbar=no,"
						+ "menubar=no,scrollbars=yes,resizable=yes,location=no,directories=no,personalbar=no";

					window.open(url, "App", props);
				} else {
					document.location.href = url;
				}
			} else {
				var elm = document.getElementById("errorMsg");
				elm.innerHTML = json._message;
				elm.setAttribute("style", "display:block;");
			}
		}
	}

	http.open("POST", target, false);
	http.setRequestHeader("X-Requested-With", "XMLHttpRequest");
	http.setRequestHeader("Accept", "application/json");
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", qry.length);
	http.send(qry);
	stateChange(http);
}

function keyResponse(event) {
	var e = event || window.event;

	if (e.keyCode == 13) {
		e.returnValue = false;
		e.cancelBubble = true;
		e.stopped = true;

		doLogin("/index.php/Login");
	}
	return false;
}

function adminKeyResponse(event) {
	var e = event || window.event;

	if (e.keyCode == 13) {
		e.returnValue = false;
		e.cancelBubble = true;
		e.stopped = true;

		doLogin("/index.php/admin/Login");
	}
	return false;
}

function isIE8() {
	if (navigator.appName == "Microsoft Internet Explorer") {
		var ua = navigator.userAgent;
		return (ua.indexOf("MSIE 8") != -1);
	}

	return false;
}

function IE8conf() {
	var ua = navigator.userAgent;
	var w7 = false;
	var ret,conf;

	if (ua.indexOf("NT 5.1") != -1) { //XP
		conf = "ie8_xp32.exe";
		ret = {w7: w7, conf: conf};
	}
	else if (ua.indexOf("NT 5.2") != -1) { //XP 64 y 2003
		conf = "ie8_xp64.exe";
		if (ua.indexOf("WOW64") != -1) { // xp64
			conf = "ie8_xp64.exe";
		} else { //2003
			conf = "ie8_xp32.exe";
		}
		
		ret = {w7: w7, conf: conf};
	}
	else if (ua.indexOf("NT 6.0") != -1) { //Vista
		if (ua.indexOf("WOW64") != -1) { //Vista64
			conf = "ie8_vista64.exe";
		} else { //Vista32
			conf = "ie8_vista32.exe";
		}

		ret = {w7: w7, conf: conf};
	}
	else if (ua.indexOf("NT 6.1") != -1) {//windows7
		ret = {w7: true};
	}

	return ret;
}

window.onload = function() {
	var remember = true;
	getTotalFiles();

	var clientname = readCookie("__dd_client");
	if (document.getElementById("clientname") != null && clientname != null) {
		formattedclientname = clientname.replace(/%26/g, "&").replace(/%40/g, "@").replace(/\+/g, " ");
		document.getElementById("clientname").value = formattedclientname;
	} else {
		remember = false;
	}

	var username = readCookie("__dd_user");
	if (document.getElementById("username") != null && username != null) {
		document.getElementById("username").value = username.replace(/\+/g, " ");
	} else {
		remember = false;
	}

	document.getElementById("remember").checked = remember;

	if (isIE8()) {
		document.getElementById("popupContainer").innerHTML = '<label><input type="checkbox" id="popup" name="popup" title="Inicia sesi&oacute;n ocultando las barras de navegaci&oacute;n y maximizando la ventana."/> Nueva ventana</label>';
		var popup = readCookie("__dd_popup");
		if (document.getElementById("popup") != null && popup == 1) {
			document.getElementById("popup").checked = true;
		}
		var returnedObj = IE8conf();
		if(!returnedObj.w7) {
				document.getElementById("autoconfigContainer").innerHTML = "<img src='/web/images/stories/ie_icon.png' alt='Configurar Internet explorer 8' style='float: left; margin: 0 5px;' /><a href='/web/archivos/" + returnedObj.conf + "'>Configuraci&oacute;n autom&aacute;tica de Internet Explorer 8</a>";
		}
	}
	else {
		document.getElementById("adminButton").disabled = true;

		var input = document.getElementById("clientnameA");
		input.disabled = true;
		input.setAttribute("style", "background:#e2e2e2;");

		input = document.getElementById("passwordA");
		input.disabled = true;
		input.setAttribute("style", "background:#e2e2e2;");
	}
}

function showAdminForm() {
	document.getElementById("adminLayer").setAttribute("style","display:block;");
	document.getElementById("userLayer").setAttribute("style","display:none;");
	if (isIE8()) {
		document.getElementById("errorMsg").setAttribute("style","display:none;");
	}
	else {
		document.getElementById("errorMsg").setAttribute("style","display:block;");
		document.getElementById("errorMsg").innerHTML = "Para acceder a la administraci&oacute;n de DigitalDOCU debe usar Internet Explorer 8.";
	}
}

function showUserForm() {
	document.getElementById("adminLayer").setAttribute("style","display:none;");
	document.getElementById("userLayer").setAttribute("style","display:block;");
	document.getElementById("errorMsg").setAttribute("style","display:none;");
}