﻿var Homepage_TabId;
var PreLoad = true;
var LoadedTabs = "";
var bRefreshAH = false;
var bRefreshRH = false;
var bReloadHomepage = false;

/*========================================================================================================*/
/* OTHER / GENERIC */
/*========================================================================================================*/

function GetObj(id){
	return(document.getElementById(id));
}

function IE_ViewDoc(){ViewDoc(this.getAttribute("phydocid"));}
function ViewDoc(phydocid){
	window.frames.viewdoc.location.href="/idocument/atom/cview.aspx?phydocid="+phydocid;	
}

function InitHomepage(startpageId){

	SwitchTab(startpageId);
	Homepage_TabId = startpageId;
	
}

function InitTab(tabid){

	switch(tabid){
	
		case "AuthorHomepage":
			if(LoadedTabs.indexOf(tabid) == -1){InitAuthorHomepage();}
			if(bRefreshAH){AH_Refresh();bRefreshAH = false;}
			//SwitchMainWindow("AuthorHomepage_DocumentList");
			break;
			
		case "RefereeHomepage":
			if(LoadedTabs.indexOf(tabid) == -1){InitRefereeHomepage();}
			if(RH_FullReload){InitRefereeHomepage();}
			if(bRefreshRH){RH_Refresh();bRefreshRH = false;}
			SwitchMainWindow("RefereeHomepage_DocumentList");
			break;
	
		case "EventLoginNewUser":
			InitRegistrationForms()
			break;
			
		case "ProgrammeHomepage":
			document.getElementById("TabMenu").style.display = "none";
			document.getElementById("EventLoginTabMenu").style.display = "none";
			PH_Init();
			break;
	
	}
	
	LoadedTabs += tabid + ";";

}

var CurrentTab;
function SwitchTab(tabid,hideTabMenu){

	ClearUserTimedOutStatus();

	if(hideTabMenu){
		document.getElementById("TabMenu").style.display = "none";
	}else{
		document.getElementById("TabMenu").style.display = "block";
	}
	
	if(tabid == "EventLoginExistingUser" || tabid == "EventLoginNewUser"){
		document.getElementById("EventLoginTabMenu").style.display = "block";
	}else{
		try{
			document.getElementById("EventLoginTabMenu").style.display = "none";
		}catch(ex){}
	}
	
	// no author homepage for referee homepage!
	/*if(tabid == "RefereeHomepage"){
		document.getElementById("0_tab_1_r").style.display = "none";
		document.getElementById("0_tab_2").style.display = "none";
	}*/
	
	if(tabid == "AuthorHomepage"){CloseDocument();}
	
	if(CurrentTab){CurrentTab.style.display = "none";}
	CurrentTab = document.getElementById(tabid);
	CurrentTab.style.display = "block";
		
	InitTab(tabid);
	
}

function ShowHome(){

	if(bReloadHomepage){
		window.location.reload(true);
	}else{	
		SwitchTab("EventHomepage");
		document.getElementById("TabMenu").style.display = "none";
	}
}

function SwitchMainWindow(showid){

	try{
		document.getElementById("AuthorHomepage_DocumentList").style.display = "none";
		document.getElementById("AuthorHomepage_DocumentDetail").style.display = "none";
		document.getElementById("AuthorHomepage_NewSubmission").style.display = "none";
	}catch(ex){}
	
	try{
		document.getElementById("RefereeHomepage_DocumentList").style.display = "none";
		document.getElementById("RefereeHomepage_ReviewSheet").style.display = "none";
	}catch(ex){}

	document.getElementById(showid).style.display = "block";
	
}

function GetViewPortWidth(){
	
	var theWidth;
	
	if (window.innerWidth) {
		theWidth=(window.innerWidth+window.pageXOffset);
	}else if (document.body) {
		theWidth=(document.body.clientWidth+document.body.scrollLeft);
	}
	
	return theWidth;
	
}
function GetViewPortHeight(){
	
	var theHeight;

	if (window.innerHeight) {
		theHeight=(window.innerHeight+window.pageYOffset);
	}else if (document.body) {
		theHeight=(document.body.clientHeight+document.body.scrollTop);
	}

	return theHeight;

}
function ShowWait(bShow){

	var w = document.getElementById("ControlBox_PleaseWait");

	if(!bShow){
		w.style.display = "none";
	}else{
		w.style.width = GetViewPortWidth() + "px";
		w.style.height = GetViewPortHeight() + "px";
		w.style.display = "block";
	}	
	
}

function DoWordCount(textarea,countLabelId,countlimit){

	try{
	
		var lbl = document.getElementById(countLabelId);
		var words = textarea.value.split(" ");
		var count = countlimit - words.length;
		
		if(textarea.value == ""){
			count = countlimit + " words remaining";
			lbl.innerHTML = count;
		}else{
			if(count <= 0){
				lbl.innerHTML = "<span style='color:#ff0000;'><strong>" + (count*-1) + "</strong> words over limit (approx.)</span>";
			}else{
				lbl.innerHTML = count + " words remaining (approx.)";
			}
		}
		
		return count;
		
	}catch(ex){
		
		return 0;
		
	}
	
}

//*********************************************************************************************
//LOGIN
//*********************************************************************************************

function TryLogout(){
	ShowWait(true);
	Ajax_GetXmlPage(ROOT_DIR+"Atom/Home_Cmd.aspx?cmd=909", TryLogout_Response);
}

function TryLogout_Response(){
	if(Ajax_XmlHttp_IsReady()){
		document.location.reload(true);
	}
}

function TryLoginKeyPress(e){if(recordKeyStroke(e) == 'enter'){TryLogin();}}

function TryLogin(){

	ShowWait(true);
	
	var un = document.getElementById("txtEventManagement_Username").value;
	var pw = encodeURIComponent(document.getElementById("txtEventManagement_Password").value);
	
	Ajax_GetXmlPage(ROOT_DIR+"Atom/Home_Cmd.aspx?cmd=654&u="+un+"&p="+pw, TryLogin_Response);

}

function TryLogin_Response(){
	if(Ajax_XmlHttp_IsReady()){
			
		var XmlDoc = Ajax_XmlHttp.responseXML;
		var nodes;
		var i;
				
		nodes = XmlDoc.getElementsByTagName("Login");
		
		if(nodes[0].getAttribute("status") == "ok"){
			var url = window.location.toString();

			if(url.indexOf("?") > 0){
				url = url.substring(0,url.indexOf("?"));
			}
			window.location.href = url;
			//window.location.reload(true);	
			
		}else{
			SetLoginMessage("<strong>Login Failed.</strong> Invalid username and/or password.","#ff0000");
			ShowWait(false);
		}		
		
	}
}

function CancelNewUser(){
	
	if(confirm("Are you sure you want to cancel, and return to the home screen?")){
	
		ShowHome();
	
	}

}

function TryQuickRegister(){

	document.getElementById("QuickRegisterMessage").innerHTML = "";

	var msg = "";
	var obj;
	var title,forenames,surname,email,pass1,pass2;
	
	obj = GetObj("txtQuickReg_Title");
	title = obj.value;
	if(obj.getAttribute("required") == "true" && title == ""){
		msg += " - Title\n";
	}

	obj = GetObj("txtQuickReg_Forenames");
	forenames = obj.value;
	if(obj.getAttribute("required") == "true" && fornames == ""){
		msg += " - Forename(s)\n";
	}

	obj = GetObj("txtQuickReg_Surname");
	surname = obj.value;
	if(obj.getAttribute("required") == "true" && surname == ""){
		msg += " - Surname\n";
	}

	obj = GetObj("txtQuickReg_Email");
	email = obj.value;
	if(obj.getAttribute("required") == "true" && email == ""){
		msg += " - Email Address\n";
	}

	obj = GetObj("txtQuickReg_Pass1");
	pass1 = obj.value;

	obj = GetObj("txtQuickReg_Pass2");
	pass2 = obj.value;

	if(pass1 == "" || pass2 == ""){
		msg += " - Invalid Password(s)\n";
	}else{
		if(pass1 != pass2){
			msg += " - Passwords do not match\n"
		}
	}
	
	if(msg != ""){
		alert("Please complete (or correct) the following fields:\n\n"+msg+"\n");
		
	}else{
	
		ShowWait(true);
			
		var url = ROOT_DIR+"Atom/Home_Cmd.aspx?cmd=658&t="+encodeURIComponent(title)+"&f="+encodeURIComponent(forenames)+"&s="+encodeURIComponent(surname)+"&e="+encodeURIComponent(email)+"&p="+encodeURIComponent(pass1)+"&poid="+REGISTERED_USER_BIN+"&oid="+CURRENT_REGISTERED_USEROBJECTID
		
		Ajax_GetXmlPage(url, TryQuickRegister_Response);
	
	}

}

function TryQuickRegister_Response(){
	if(Ajax_XmlHttp_IsReady()){
			
		var XmlDoc = Ajax_XmlHttp.responseXML;
		var nodes;
		var i;
				
		nodes = XmlDoc.getElementsByTagName("QuickRegister");
		
		
		if(nodes[0].getAttribute("status") == "ok"){
		
			//reg ok, user is logged in - reload app
			window.location.reload(true);	
			
		}else{
			
			CurrentRegistrationObjectId = nodes[0].getAttribute("objectid");
			
			document.getElementById("QuickRegisterMessage").innerHTML = "<span style=\"color:#ff0000;\"><strong>The email address provided is already registered.</strong></span><br/><br/>";	
			
			ShowWait(false);
						
		}		

	}
}

function TryRegister(){

	document.getElementById("RegisterMessage").innerHTML = "";

	var msg = "";
	var obj;
	var title,forenames,surname,email,oldemail,pass1,pass2;
	var company,position,address1,address2,address3,city,county,postcode,countrycode;
	var tel,mobile,fax,website;
	
	obj = GetObj("txtReg_Title");
	title = obj.value;
	if(obj.getAttribute("required") == "true" && title == ""){
		msg += " - Title\n";
	}

	obj = GetObj("txtReg_Forenames");
	forenames = obj.value;
	if(obj.getAttribute("required") == "true" && fornames == ""){
		msg += " - Forename(s)\n";
	}

	obj = GetObj("txtReg_Surname");
	surname = obj.value;
	if(obj.getAttribute("required") == "true" && surname == ""){
		msg += " - Surname\n";
	}

	obj = GetObj("txtReg_Email");
	email = obj.value;
	if(obj.getAttribute("required") == "true" && email == ""){
		msg += " - Email Address\n";
	}
	
	oldemail = GetObj("txtReg_OldEmail").value;
	
	obj = GetObj("txtReg_Company");
	company = obj.value;

	obj = GetObj("txtReg_Position");
	position = obj.value;
	
	obj = GetObj("txtReg_Address1");
	address1 = obj.value;

	obj = GetObj("txtReg_Address2");
	address2 = obj.value;

	obj = GetObj("txtReg_Address3");
	address3 = obj.value;

	obj = GetObj("txtReg_City");
	city = obj.value;

	obj = GetObj("txtReg_County");
	county = obj.value;
	
	obj = GetObj("txtReg_Postcode");
	postcode = obj.value;

	obj = GetObj("selReg_CountryCode");
	countrycode = obj.value;
	if(obj.getAttribute("required") == "true" && parseInt(countrycode) <= 0){
		msg += " - Country\n";
	}

	obj = GetObj("txtReg_Tel");
	tel = obj.value;
	if(obj.getAttribute("required") == "true" && tel == ""){
		msg += " - Telephone\n";
	}

	obj = GetObj("txtReg_Mobile");
	mobile = obj.value;

	obj = GetObj("txtReg_Fax");
	fax = obj.value;

	obj = GetObj("txtReg_Website");
	website = obj.value;

	obj = GetObj("txtReg_Pass1");
	pass1 = obj.value;

	obj = GetObj("txtReg_Pass2");
	pass2 = obj.value;

	if(pass1 == "" || pass2 == ""){
		msg += " - Invalid Password(s)\n";
	}else{
		if(pass1 != pass2){
			msg += " - Passwords do not match\n"
		}
	}
	
	if(msg != ""){
		alert("Please complete (or correct) the following fields:\n\n"+msg+"\n");
		
	}else{
	
		ShowWait(true);
			
		var url = ROOT_DIR+"Atom/Home_Cmd.aspx?cmd=737";
		url += "&t=" + encodeURIComponent(title)
		url += "&f="+encodeURIComponent(forenames)
		url += "&s="+encodeURIComponent(surname)
		url += "&e="+encodeURIComponent(email)
		url += "&olde="+encodeURIComponent(oldemail)
		url += "&p="+encodeURIComponent(pass1)
		url += "&c="+encodeURIComponent(company)
		url += "&pos="+encodeURIComponent(position)
		url += "&a1="+encodeURIComponent(address1)
		url += "&a2="+encodeURIComponent(address2)
		url += "&a3="+encodeURIComponent(address3)
		url += "&city="+encodeURIComponent(city)
		url += "&cou="+encodeURIComponent(county)
		url += "&pc="+encodeURIComponent(postcode)
		url += "&cc="+countrycode
		url += "&tel="+tel
		url += "&fax="+fax
		url += "&w="+encodeURIComponent((website))
		url += "&mob="+mobile
		url += "&poid="+REGISTERED_USER_BIN
		url += "&oid="+CURRENT_REGISTERED_USEROBJECTID
		
		//alert(url)
		
		Ajax_GetXmlPage(url, TryRegister_Response);
	
	}

}

function TryRegister_Response(){
	if(Ajax_XmlHttp_IsReady()){
			
		var XmlDoc = Ajax_XmlHttp.responseXML;
		var nodes;
		var i;
				
		nodes = XmlDoc.getElementsByTagName("Register");
		
		var status = nodes[0].getAttribute("status");
		
		if(status == "ok"){
		
			//reg ok, user is logged in - reload app
			window.location.reload(true);	
			
		}else{
			
			var msg = "";
			
			switch(status){
			
				case "loginfailed":
					msg = "Incorrect login details.";
					break;
					
				case "badusername":
					msg = "The email address provided is already registered.";
					break;
			
			}
			
			CurrentRegistrationObjectId = nodes[0].getAttribute("objectid");
			
			document.getElementById("RegisterMessage").innerHTML = "<br/><span style=\"color:#ff0000;\"><strong>"+msg+"</strong></span><br/><br/>";	
			
			ShowWait(false);
						
		}		

	}
}

function SetLoginMessage(msg,textcolour){ 
	document.getElementById("LoginMessage").innerHTML = "<span style=\"color:"+textcolour+";\">"+msg+"</span><br/><br/>";	
}

function ClearLoginMessage(){
	document.getElementById("LoginMessage").innerHTML = "";
}

function ClearRegistrationForms(){

	GetObj("txtReg_Title").value = "";
	GetObj("txtReg_Forenames").value = "";
	GetObj("txtReg_Surname").value = "";
	GetObj("txtReg_Company").value = "";
	GetObj("txtReg_Position").value = "";

	//GetObj("txtQuickReg_Title").value = "";
	//GetObj("txtQuickReg_Forenames").value = "";
	//GetObj("txtQuickReg_Surname").value = "";

	GetObj("txtReg_Pass1").value = "";
	GetObj("txtReg_Pass2").value = "";
	
	GetObj("txtReg_Address1").value = "";
	GetObj("txtReg_Address2").value = "";
	GetObj("txtReg_Address3").value = "";
	GetObj("txtReg_City").value = "";
	GetObj("txtReg_County").value = "";
//			GetObj("selReg_CountryCode").value = addressNodes[0].getElementsByTagName("Email")[0].firstChild.data	
	GetObj("txtReg_Postcode").value = "";
	GetObj("txtReg_Tel").value = "";
	GetObj("txtReg_Mobile").value = "";
	GetObj("txtReg_Fax").value = "";
	GetObj("txtReg_Website").value = "";
	GetObj("txtReg_Email").value = "";
	
	GetObj("txtReg_Email").disabled = false;

	//GetObj("txtQuickReg_Email").value = "";

}

function InitRegistrationForms(){

	//if(CURRENT_REGISTERED_USEROBJECTID > 0){
		ClearRegistrationForms();
		Ajax_GetXmlPage(ROOT_DIR+"Atom/Home_Cmd.aspx?cmd=591&oid="+CURRENT_REGISTERED_USEROBJECTID, InitRegistrationForms_Response);
	//}

}

function InitRegistrationForms_Response(){

	if(Ajax_XmlHttp_IsReady()){
			
		var XmlDoc = Ajax_XmlHttp.responseXML;
		var nodes,addressNodes;
		var i, selCountry, SelectedCountryCode;
				
		nodes = XmlDoc.getElementsByTagName("Contact");

		for(i = 0; i < nodes.length; i++){
		
			if(parseInt(nodes[i].getAttribute("objectid")) > 0){

				try{GetObj("txtReg_Title").value =  nodes[i].getElementsByTagName("Title")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Forenames").value = nodes[i].getElementsByTagName("Forenames")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Surname").value = nodes[i].getElementsByTagName("Surname")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Company").value = nodes[i].getElementsByTagName("Company")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Position").value = nodes[i].getElementsByTagName("Position")[0].firstChild.data}catch(ex){};
				
				GetObj("txtReg_Pass1").value = "";
				GetObj("txtReg_Pass2").value = "";

				//try{GetObj("txtQuickReg_Title").value = nodes[i].getElementsByTagName("Title")[0].firstChild.data}catch(ex){};
				//try{GetObj("txtQuickReg_Forenames").value = nodes[i].getElementsByTagName("Forenames")[0].firstChild.data}catch(ex){};
				//try{GetObj("txtQuickReg_Surname").value = nodes[i].getElementsByTagName("Surname")[0].firstChild.data}catch(ex){};

				addressNodes = nodes[i].getElementsByTagName("Address");
	
				try{GetObj("txtReg_Address1").value = addressNodes[0].getElementsByTagName("Line1")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Address2").value = addressNodes[0].getElementsByTagName("Line2")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Address3").value = addressNodes[0].getElementsByTagName("Line3")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_City").value = addressNodes[0].getElementsByTagName("City")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_County").value = addressNodes[0].getElementsByTagName("County")[0].firstChild.data}catch(ex){};
				SelectedCountryCode = addressNodes[0].getElementsByTagName("Country")[0].getAttribute("code");	
				try{GetObj("txtReg_Postcode").value = addressNodes[0].getElementsByTagName("Postcode")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Tel").value = addressNodes[0].getElementsByTagName("Tel")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Mobile").value = addressNodes[0].getElementsByTagName("Mobile")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Fax").value = addressNodes[0].getElementsByTagName("Fax")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Website").value = addressNodes[0].getElementsByTagName("Website")[0].firstChild.data}catch(ex){};
				
				//GetObj("txtReg_Email").disabled = true;
				try{GetObj("txtReg_OldEmail").value = addressNodes[0].getElementsByTagName("Email")[0].firstChild.data}catch(ex){};
				try{GetObj("txtReg_Email").value = addressNodes[0].getElementsByTagName("Email")[0].firstChild.data}catch(ex){};

				//try{GetObj("txtQuickReg_Email").value = addressNodes[0].getElementsByTagName("Email")[0].firstChild.data}catch(ex){};				
				
			}

		}	
		
		nodes = XmlDoc.getElementsByTagName("Country");
		
		selCountry = GetObj("selReg_CountryCode");
		selCountry.options.length = 0;
		selCountry.options[selCountry.options.length] = new Option("Please select...",-1);		
	
		for(i = 0; i < nodes.length; i++){
			if(nodes[i].firstChild.data != "unknown")
			{
				selCountry.options[selCountry.options.length] = new Option(nodes[i].firstChild.data,nodes[i].getAttribute("code"));
				if(SelectedCountryCode == nodes[i].getAttribute("code")){
					selCountry.options[selCountry.options.length-1].selected = true;
				}
			}
		}	

	}

}

function StartPasswordReminder(){

	document.getElementById("divEventManagement_PasswordReminder").style.display = "block";
	try{document.getElementById("txtEventManagement_PasswordReminderEmail").value = "";}catch(ex){}
	try{document.getElementById("txtEventManagement_PasswordReminderEmail").focus();}catch(ex){}
	
}

function DoPasswordReminder(){

	var e_input = document.getElementById("txtEventManagement_PasswordReminderEmail");
	
	if(e_input.value == ""){
		alert("Please enter a valid email address.");
		try{e_input.focus();}catch(ex){}
	}else{
	Ajax_GetXmlPage(ROOT_DIR + "Atom/Home_Cmd.aspx?cmd=887&e=" + encodeURIComponent(e_input.value), DoPasswordReminder_Response);
	}
	
}

function DoPasswordReminder_Response(){

	if(Ajax_XmlHttp_IsReady()){
			
		var XmlDoc = Ajax_XmlHttp.responseXML;
		var nodes = XmlDoc.getElementsByTagName("PasswordReminder");
		
		if(nodes[0].getAttribute("sent") == "true"){
		
			SetLoginMessage("A password reminder has been sent to "+document.getElementById("txtEventManagement_PasswordReminderEmail").value+".","#008000");
			CancelPasswordReminder();
			
		}else{
		
			SetLoginMessage("<strong>No password/account could be found for '"+document.getElementById("txtEventManagement_PasswordReminderEmail").value+"'.</strong>","#FF0000");
		
		}
	
	}

}

function CancelPasswordReminder(){

	document.getElementById("divEventManagement_PasswordReminder").style.display = "none";
	document.getElementById("txtEventManagement_PasswordReminderEmail").value = "";
	try{document.getElementById("txtEventManagement_Username").focus();}catch(ex){}

}
