/***************************************** 
Date: February 2007
Version:
Author: Julien Richefeu
*****************************************/
var edconfd_down=0;
var first=1;
var fromLoginField = false;

function initFields() {
	first = 1;
	fromLoginField = false;
	var myField = document.getElementById('username');
	
	if(myField) {
		myField.focus();
		myField.select();
	}
}

function getPageContent()
{		
	getCopyright();
	getHostname();
	$('status').show();
		
	//Check if browser accept cookie
	if (navigator.cookieEnabled==false){
		document.getElementById('status').innerHTML = "<font color='red'>"+getTranslation("id14")+"</font>";
		$('status').hide();
	}else{
		document.getElementById('status').innerHTML = "&nbsp;";
		
		//get language 
		language = getCookie("language");
		if (!language) {	
			language = getLanguage().substring(0,2);
		}
		
		var sel="<select id='sellang' onChange='setLangCookie(this.value);'";
		for (var i=0; i<lang.length; i++)
			if (lang[i]==language)
				sel+="<option value='"+lang[i]+"' selected>"+litlang[i]+"</option>";
			else
				sel+="<option value='"+lang[i]+"' >"+litlang[i]+"</option>";
		sel+="</select>";
		
		var buffer;
		
		if (edconfd_down) {
			var date= new Date();
			if (language=="en"){
				buffer = new Array(date.getHours(),":",date.getMinutes(),", ",date.getMonth(),'/',date.getDay(),'/',date.getFullYear()," |",sel);
			}
			else{
				buffer = new Array(date.getHours(),":",date.getMinutes(),", ",date.getDay(),'.',date.getMonth(),'.',date.getFullYear()," |",sel);		
			}
		} else {
			buffer = new Array(
				gDeviceInfo.getTimeString() +', '
				+ gDeviceInfo.getDateString()
				+ ' | '+ sel
			);
		}
		document.getElementById('info').innerHTML = buffer.join("");
		document.getElementById('menu').innerHTML = "<img src='"+ gDeviceInfo.getLogoUrl() +"'>";
		
		if (edconfd_down) {
				var buffer = new Array("<table><tr><td width='50'>&nbsp;</td></tr><tr><td></td><td><b>",getTranslation("id35"),
				"</b></td></tr><tr ><td colspan='2'>&nbsp;</td></tr><tr><td></td><td><div align='center'><div id='status_bar'></div></div></td></tr></table>");
		}else{
			var myDomainBuffer = '';
			var myHTTPSLink = '';
			
			// Show HTTPS link if we are in HTTP
			if(!location.protocol.startsWith('https')) {
				myHTTPSLink =
					  '<tr><td colspan="2">&nbsp;</td></tr>'
					+ '<tr><td colspan="2" style="text-align: center; color: #999999;">'
					+ '&gt;&gt; <a class="greylink" href="https://'+ location.hostname +'">'
					+ getTranslation('idsecureLogin')
					+ '</a>'
					+ '</td></tr>';
			}
			
			if(gDeviceInfo.getDomainEnabled()) {
				myDomainBuffer =
					'<tr><td style="width: 100px; text-align: right; padding-right: 2px">'
					+ getTranslation("id20") +'</td>'
					+ '<td width="100"><select id="domain">'
					+ '<option value="local">'+ hostname +'</option>'
					+ '<option value="domain">'+ gDeviceInfo.getDomainName() +'</option>'
					+ '</select></td></tr>';
			}
			
			var buffer = new Array("<table id='table_login' cellspacing='0' cellpadding='0' border='0'>"
				,"<tr><td width='90'>&nbsp;</td><td width='300'><div id='title_login'>",getTranslation("id20"),"&nbsp;",hostname,"</div></td><td  width='90'></td></tr>" 
				,"<tr><td>&nbsp;</td><td><div id='login_form'>"
				,"<table border='0' cellspacing='0' cellpadding='0'>"	
				,"<tr><td colspan='2'>&nbsp;</td></tr>"
				,"<tr><td width='100' align='right' style='padding-right: 2px'>",getTranslation("id114"),"&nbsp;","</td><td width='100'><input type='text' id='username' name='username' size='15' onkeydown=\"javascript:checkKey2(event)\"  onkeyup=\"javascript:checkKey2(event)\"></td></tr>"
				,"<tr><td colspan='2' height='5px'></td></tr>"	
				,"<tr><td width='100' align='right' style='padding-right: 2px'>",getTranslation("id101"),"&nbsp;","</td><td width='100'><input type='password' id='password' name='password' size='15' onkeydown=\"javascript:checkKey(event)\"  onkeyup=\"javascript:checkKey(event)\"></td></tr>"
				,"<tr><td colspan='2'>&nbsp;</td></tr>"
				,myDomainBuffer
				,"<tr><td colspan='2'>&nbsp;</td></tr>"
				,"<tr><td width='100'>&nbsp;</td><td width='100'><div id='logbut'><div id='desapply_login' align='right'><a href=\"javascript:login()\">",getTranslation("id17"),"</a></div></div></td></tr>"
				,myHTTPSLink
				,"<tr><td colspan='2'>&nbsp;</td></tr>"
				,"</table></td><td width='90'>&nbsp;</td></tr></table>");
		}
		
		document.getElementById('content').innerHTML = buffer.join("");
		initFields();
	}
}

function checkKey(e)
{				
	if (fromLoginField) {
		fromLoginField = false;
		return;
	}
	if (e.keyCode == 13)
		if (first)
		{
			first=0;
			login();
		}
}

function checkKey2(e)
{				
	if (e.keyCode == 13) {
		fromLoginField = true;
		document.getElementById('password').focus();
		document.getElementById('password').select();
	}
}

function login()
{
	if (document.getElementById('username').value==""){
		setInfo("<font color=\"red\"><img src='images/button_cancel.png'>&nbsp;"+getTranslation("id104")+"</font>");
		initFields();
	} else if($('domain') && ('domain' == $('domain').value)) {
		// Use the one-step domain login method
		var myPostData = new XmlBuffer();
		var myLoginNode;
		
		// Forge the query XML stream
		myLoginNode = myPostData.addTag('lacie_conf', {
			type: 'ethernet_disk',
			version: '1.0'
		}).addTag('domainLogin');
		
		myLoginNode.addTag('username', null, $('username').value);
		myLoginNode.addTag('password', null, $('password').value);
		
		// Send request
		new EdconfRequest({
			methodName: 'getDomainSID',
			infoText: getTranslation("id21"),
			callback: function() {
				// Login went ok, redirect to the home page
				window.location.href = '/user.html';
			},
			on403: function() {
				// Wrong credentials
				setStatus('error', getTranslation("id23"));
			},
			postData: myPostData.getXml()
		});
	} else {
		// Use the challenge-based local login method
		new EdconfRequest({
			methodName: 'getChallenge',
			parameters: {login: document.getElementById('username').value},
			infoText: getTranslation('id119'),
			callback: checkLogin,
			onError: function() {
				setStatus('error', getTranslation('id23'));
				initFields();
			}
		});
	}
}

function checkLogin(obj)
{
			document.getElementById('status').innerHTML = "<img src=\"images/loading.gif\">" + getTranslation("id22");
			var fido = obj.getXml();;
			var sal = fido.getElementsByTagName('salt')[0].firstChild.nodeValue;
			var cha = fido.getElementsByTagName('challenge')[0].firstChild.nodeValue;
			
			var pw = Javacrypt.crypt(sal, UTF8.encode(document.getElementById('password').value)); 
			var res = hex_hmac_md5(pw[0], cha);

			var hobj = new getHttpObject();	
			if (hobj) {
				hobj.open("GET", edconfd_path+"?method=getSID&hash="+res+"&challenge="+cha,true);
				hobj.onreadystatechange = function() { setLogin(hobj); };
				hobj.send(null);				
			}else{
				setInfo("<font color=\"red\"><img src='images/button_cancel.png'>&nbsp;"+getTranslation("id23")+"</font>");	
				document.getElementById('logbut').innerHTML = "<div id='desapply_login' align='right'><a href=\"javascript:login()\">"+getTranslation("id17")+"</a></div>";
				initFields();
			}
}

function setLogin(obj)
{	
	if (obj.readyState == 4) {
		if (obj.status == 200) {
				var fid = obj.responseXML.documentElement;					
				window.location.href=fid.getElementsByTagName('home')[0].getAttribute('page');
		}else{
				setInfo("<font color=\"red\"><img src='images/button_cancel.png'>&nbsp;"+getTranslation("id23")+"</font>");									
				document.getElementById('logbut').innerHTML = "<div id='desapply_login' align='right'><a href=\"javascript:login()\">"+getTranslation("id17")+"</a></div>";
				initFields();
		}
	}
}
