
/* 	
	------------------------------------------------------------------------------
	/project/apps/conferencesubmissions/app.js
	
	Conference submissions
	
   	------------------------------------------------------------------------------
    
    
*/
	var appName = "ConferenceSubmissions";
	var appType = "P";
	

	
	function ConferenceSubmissions_onload() {
		
		initSubmissionType();
		initAttachments();
	}
	

	var SubmissionTypeID = 0;
	
	var submissionTypeQuestions = null; // array waarin de oXmlResponse.data array van de getSubmissionTypeQuestions ingestoken zal worden
	var numberOfThemes = 0;
	var numberOfContributionTypes = 0;
	function initSubmissionType() {
		if (cboSubmissionType.getSelectedValue() != "") {
			SubmissionTypeID = cboSubmissionType.getSelectedValue();
			
			debug.write("initializing submissionType with SubmissionTypeID " + SubmissionTypeID);
			var params = new Array();
			params["SubmissionTypeID"] = SubmissionTypeID;
			oXmlRequest = new XmlRequest();
			oXmlRequest.functionName	= "getSubmissionType";
			oXmlRequest.params 			= params;	
			oXmlRequest.onsuccess 		= getSubmissionType_success;
			oXmlRequest.start();
			
		}
		function getSubmissionType_success(oXmlResponse) {
			debug.write("getSubmissionType_success: " + oXmlResponse.responseText);
			var submissiontype = oXmlResponse.data[0];
			// showing or hiding the textboxes
			
			/*if (submissiontype["ChairNeeded"] == "0") {
				pnlChair.hide();
			}
			else {
				pnlChair.show();
			}
			if (submissiontype["FacilitatorNeeded"] == "0") {
				pnlFacilitator.hide();
			}
			else {
				pnlFacilitator.show();
			}*/
			
			// get all themes for this submissionType
			if (usingThemes) {
				if (document.getElementById("divThemes")) {
					var params = new Array();
					params["SubmissionTypeID"] = SubmissionTypeID;
					oXmlRequest = new XmlRequest();
					oXmlRequest.functionName	= "getSubmissionThemes";
					oXmlRequest.params 			= params;	
					oXmlRequest.onsuccess 		= getSubmissionThemes_success;
					oXmlRequest.start();
				}
				else {
					var params = new Array();
					params["SubmissionTypeID"] = SubmissionTypeID;
					cboSubmissionTheme.dataSource = "getSubmissionThemes";
					cboSubmissionTheme.dataParams = params;
					cboSubmissionTheme.displayMember = "Name";
					cboSubmissionTheme.valueMember = "SubmissionTypeThemeID";
					cboSubmissionTheme.ondatabind = cboSubmissionTheme_ondatabind;
					cboSubmissionTheme.dataBind();
				}
			}
			
			
			// get all contributiontypes for this submissionType
			if (usingContributionTypes) {
				if (document.getElementById("divContributionTypes")) {
					var params = new Array();
					params["SubmissionTypeID"] = SubmissionTypeID;
					oXmlRequest = new XmlRequest();
					oXmlRequest.functionName	= "getSubmissionContributionTypes";
					oXmlRequest.params 			= params;	
					oXmlRequest.onsuccess 		= getSubmissionContributionTypes_success;
					oXmlRequest.start();
				}
				else {
					var params = new Array();
					params["SubmissionTypeID"] = SubmissionTypeID;
					cboSubmissionContributionType.dataSource = "getSubmissionContributionTypes";
					cboSubmissionContributionType.dataParams = params;
					cboSubmissionContributionType.displayMember = "Name";
					cboSubmissionContributionType.valueMember = "SubmissionTypeContributionTypeID";
					cboSubmissionContributionType.ondatabind = cboSubmissionContributionType_ondatabind;
					cboSubmissionContributionType.dataBind();
				}
			}
			
			// get all questions for this submissionType
			var params = new Array();
			params["SubmissionTypeID"] = SubmissionTypeID;
			oXmlRequest = new XmlRequest();
			oXmlRequest.functionName	= "getSubmissionTypeQuestions";
			oXmlRequest.params 			= params;	
			oXmlRequest.onsuccess 		= getSubmissionTypeQuestions_success;
			oXmlRequest.start();
			
		}
		
		function cboSubmissionTheme_ondatabind(oXmlResponse) {
			debug.write("cboSubmissionTheme_ondatabind: " + oXmlResponse.responseText);
			numberOfThemes = oXmlResponse.numDataRows;
		}
		
		function cboSubmissionContributionType_ondatabind(oXmlResponse) {
			debug.write("cboSubmissionContributionType_ondatabind: " + oXmlResponse.responseText);
			numberOfContributionTypes = oXmlResponse.numDataRows;
		}
		
		function getSubmissionThemes_success(oXmlResponse) {
			debug.write("getSubmissionThemes_success: " + oXmlResponse.responseText);
			
			numberOfThemes = oXmlResponse.numDataRows;
			var divThemes = document.getElementById("divThemes");
			// clear it
			for (i=divThemes.childNodes.length-1; i>=0; i--){
       			divThemes.removeChild(divThemes.childNodes[i]);
  			}
  			
  			// for every submission theme, add a checkbox...
			for (i=0;i<oXmlResponse.data.length; i++) {
				theme = oXmlResponse.data[i];
				chk = new CheckBox();
				chk.id = "chkTheme_" + i;
				chk.parentElement = divThemes;
				chk.value = theme["Name"];
				chk.tag = theme["SubmissionTypeThemeID"];
				chk.render();
				chk.show();
				
				br = document.createElement("br");
				divThemes.appendChild(br);
			}
		}
		
		function getSubmissionContributionTypes_success(oXmlResponse) {
			debug.write("getSubmissionContributionTypes_success: " + oXmlResponse.responseText);
			
			numberOfContributionTypes = oXmlResponse.numDataRows;
			var divContributionTypes = document.getElementById("divContributionTypes");
			// clear it
			for (i=divContributionTypes.childNodes.length-1; i>=0; i--){
       			divContributionTypes.removeChild(divContributionTypes.childNodes[i]);
  			}
  		
  		br = document.createElement("br");
  		divContributionTypes.appendChild(br);
  		
  			// for every submission contributiontype, add a checkbox...
			for (i=0;i<oXmlResponse.data.length; i++) {
				contributiontype = oXmlResponse.data[i];
				chk = new CheckBox();
				chk.id = "chkContributionType_" + i;
				chk.parentElement = divContributionTypes;
				chk.value = contributiontype["Name"];
				chk.tag = contributiontype["SubmissionTypeContributionTypeID"];
				chk.render();
				chk.show();
				
				br = document.createElement("br");
				divContributionTypes.appendChild(br);
			}
		}
		
		
		function getSubmissionTypeQuestions_success(oXmlResponse) {
			//debug.write("getSubmissionTypeQuestions_success: " + oXmlResponse.responseText);
			
			//alert(oXmlResponse.responseText);
			
			submissionTypeQuestions = oXmlResponse.data;
			
			
			var divSubmissionTypeQuestions = document.getElementById("divSubmissionTypeQuestions");
			// clear it
			for (i=divSubmissionTypeQuestions.childNodes.length-1; i>=0; i--){
      			divSubmissionTypeQuestions.removeChild(divSubmissionTypeQuestions.childNodes[i]);
  			}
  				
  			// for every submission question, add a checkbox...
			for (i=0;i<submissionTypeQuestions.length; i++) {
				question = submissionTypeQuestions[i];
				
				
				span = document.createElement("span");
				span.innerHTML = question["DisplayName"];
				if (question["MaxWords"] > 0) {
					span.innerHTML += " (maximum " + question["MaxWords"] + " words)";
				}
				if (question["Mandatory"] == 1) {
					span.innerHTML += " <b style=\"color: red;\">* Mandatory</b>";
				}
				span.style.display = "block";
				span.style.clear = "both";
				
				divSubmissionTypeQuestions.appendChild(span);
				
				//br = document.createElement("br");
				//divSubmissionTypeQuestions.appendChild(br);
				
				//alert(question["TextBoxType"]);
				if (question["TextBoxType"] == "multi") {
					txt = new TextBox();
					txt.type = "multiline";
					txt.id = "txtQuestion_" + i;
					txt.parentElement = divSubmissionTypeQuestions;
					txt.value = "";
					txt.tag = question["SubmissionTypeQuestionID"];
					txt.render();
					txt.formElement.style.width = "800px";
					txt.formElement.style.height = "300px";
					txt.formElement.style.marginBottom = "20px";
					txt.formElement.style.clear = "both";
					txt.show();
						
				}
				else {
					txt = new TextBox();
					txt.id = "txtQuestion_" + i;
					txt.parentElement = divSubmissionTypeQuestions;
					txt.value = "";
					txt.tag = question["SubmissionTypeQuestionID"];
					txt.render();
					txt.formElement.style.width = "800px";
					txt.formElement.style.marginBottom = "20px";
					txt.formElement.style.clear = "both";
					txt.show();
					
				}
				
				
				//br = document.createElement("br");
				//divSubmissionTypeQuestions.appendChild(br);
			}
		}
	}
	
	function cboSubmissionType_onchange() {
		initSubmissionType();
		
	}
	
	
	
	
	
	
function initAttachments() {
	if (submissionUploadsPossible) {
		var params = new Array();
		params["TargetPath"] = UploadPath;
		params["BasePath"] = UploadPath;
		
		dgFiles.dataSource = "getFiles";
		dgFiles.dataParams = params;
	//	dgFiles.ondataBind = files_loaded();
		dgFiles.dataBind();
	}
	
}

	
function btnNewFile_onclick() {
	document.getElementById("uploadiframe").src = "about:blank";
	document.forms.uploadForm.uploadResult.value = "busy";
	lblUploading.hide();
	
	
	lblPath.setValue(UploadPath);
	document.getElementById("PhysicalUploadPath").value = UploadPath;
	pnlNewFile.show();
	
}

var checkTimes = 0;
var to = null;
var uploadDone = false;
function btnUpload_onclick() {
	uploadDone = false;
	to = setTimeout("checkUpload()", 1000);
	lblUploading.show();
	document.forms.uploadForm.submit();
	//checkUpload();
	
}


function checkUpload() {
	var res = document.forms.uploadForm.uploadResult.value;
	debug.write("checkUpload(): " + res);
	if (res != "busy" && uploadDone == false) {
		uploadDone = true;
		lblUploading.hide();
		alert("Upload result: " + res);
		
		if (res == "ok") {
			pnlNewFile.hide();
			initAttachments();
		}
		else {
			// niks -> ze kunnen opnieuw proberen eventueel
			alert("Upload failed - please try again");
		}
		
		
	}
	else {
		to = setTimeout("checkUpload()", 1000);
	}
	
	if (checkTimes == 1800) { // 30 minuten
		alert("Upload failed!");
		clearTimeout(to);
	}
	
	checkTimes++;
	
}

function dgFiles_ondeleteclick(ev, el, row, col) {
	var x = confirm('Are you sure you want to delete this file?');
	if (x == true) {
		var targetPath = UploadPath;
	
		var params = new Array();
		params["FileID"] = row;
		oXmlRequest = new XmlRequest();
		oXmlRequest.functionName = "deleteFile";
		oXmlRequest.params 	= params;	
		oXmlRequest.onsuccess = deleteFile_success;
		oXmlRequest.start();
		
		
	}
	
	function deleteFile_success(oXmlResponse) {
			if (oXmlResponse.statusCode == 2000) {
				initAttachments();
			}
			else {
				alert(oXmlResponse.message[languageId]);
			}
			
		}
}
	
	
	
	
	
	function btnSubmit_onclick() {
		//alert("abstractNeeded = " + abstractNeeded + ", summary = " + summaryNeeded);
		if (txtName.getValue() == "" || txtInstitution.getValue() == "" || txtEmail.getValue() == "")
		{
			alert("Please fill in your name, institute and email!");
			return;
		}
		else if (txtTitle.getValue() == "") {
			alert("Please fill in the title of your submission!");
			return;
		}
		
		else{
			var themes = "";
			var contributiontypes = "";
			var questions = "";
			
			var params = new Array();
			
			// nakijken of de verplichte vragen ook wel echt zijn ingevuld
			str = "";
			for (i=0;i<page.controls.length; i++) {
				obj = page.controls[i];
				if (obj.getType() == "TextBox" && obj.id.indexOf("txtQuestion") >= 0) {
					for (j=0; j<submissionTypeQuestions.length; j++) {
						question = submissionTypeQuestions[j];
						//alert(question["SubmissionTypeQuestionID"] + "-" + obj.tag + "-" + question["Mandatory"] + "-" + obj.getValue());
						
						if (question["SubmissionTypeQuestionID"] == obj.tag) {
							// is het wel ingevuld?
							if (question["Mandatory"] == 1 && obj.getValue() == "") {
								str += question["DisplayName"] + ": please fill in this field\n";
							}
						
							// aantal woorden checken
							var maxWords = parseInt(question["MaxWords"]);
							if (maxWords > 0) {
								var words = obj.getValue().split(" ");
								if (words.length > maxWords) {
									str += question["DisplayName"] + ": you filled in too many words (" + words.length + ")\n";
								}
								
								//alert(words + " " + words.length);
							}
							
						}
					
					}
					
				}
			}
			if (str != "") {
				alert("Please check the following questions :\n\n" + str);
				return;
			}
			
			if (usingThemes == false) {
				multipleThemes = false;
				themes = "";
			}
			else if (document.getElementById("divThemes")) {
				multipleThemes = true;
				themes = "";
			}
			else {
				multipleThemes = false;
				// slechts 1 thema meer mogelijk
				themes = cboSubmissionTheme.getSelectedValue();
			}
			
			if (usingContributionTypes == false) {
				multipleContributionTypes = false;
				contributiontypes = "";
			}
			else if (document.getElementById("divContributionTypes")) {
				multipleContributionTypes = true;
				contributiontypes = "";
			}
			else {
				multipleContributionTypes = false;
				// slechts 1 thema meer mogelijk
				contributiontypes = cboSubmissionContributionType.getSelectedValue();
			}
			
			for (i=0;i<page.controls.length; i++) {
				obj = page.controls[i];
				
				debug.write("chk:" + obj.id.substring(0, 21));
				if (usingThemes && multipleThemes && obj.getType() == "CheckBox" && obj.tag != "" && obj.id.indexOf("chkTheme_") == 0 && obj.getChecked() == true) {
					debug.write("adding obj " + obj.id + " with tag " + obj.tag + " to themes")
					themes += obj.tag + ",";
				
				}
				
				if (usingContributionTypes && multipleContributionTypes && obj.getType() == "CheckBox" && obj.tag != "" && obj.id.indexOf("chkContributionType_") == 0 && obj.getChecked() == true) {
					debug.write("adding obj " + obj.id + " with tag " + obj.tag + " to contributiontypes")
					contributiontypes += obj.tag + ",";
				
				}
				
				if (obj.getType() == "TextBox" && obj.id.indexOf("txtQuestion") >= 0 && obj.getValue() != "") {
					questions += obj.tag + ",";
					params["Q_" + obj.tag] = obj.getValue();
					
				}
			}
			
			if (numberOfThemes > 0 && themes == "") {
				if (multipleThemes) {
					alert("Please select one or more themes");
				}
				else {
					alert("Please select a theme");
				}
				return;
			}
			
			if (numberOfContributionTypes > 0 && contributiontypes == "") {
				if (multipleContributionTypes) {
					alert("Please select one or more contribution types");
				}
				else {
					alert("Please select a contribution type");
				}
				return;
				
			}
			
				
				
			// user fields
			params["ConferenceID"] = ConferenceID;
			params["SubmissionTypeID"] = SubmissionTypeID;
			params["Salutation"] = txtSalutation.getValue();
			params["FirstName"] = txtFirstName.getValue();
			params["Name"] = txtName.getValue();
			params["Email"] = txtEmail.getValue();
			params["Organisation"] = txtInstitution.getValue();
			params["CountryID"] = cboCountryID.getSelectedValue();
			
			//alert("themes: " + themes);
			
			params["Title"] = txtTitle.getValue();
			//params["Chair"] = txtChair.getValue();
			//params["Facilitator"] = txtFacilitator.getValue();
			params["Themes"] = themes;
			params["ContributionTypes"] = contributiontypes;
			//alert(params["ContributionTypes"]);
			params["Questions"] = questions;	
			params["OtherTheme"] = "";
			params["SubmissionGUID"] = SubmissionGUID;
			
			oXmlRequest = new XmlRequest();
			oXmlRequest.functionName	= "createSubmission"
			oXmlRequest.params 			= params;	
			oXmlRequest.onsuccess 		= createSubmission_success;
			oXmlRequest.onfailed 		= "";
			oXmlRequest.start();
			
				
		}
		
		function createSubmission_success(oXmlResponse) {
			
			debug.write("createSubmission_success: " + oXmlResponse.responseText);
			
			if (oXmlResponse.statusCode == "2000") {
			
				pnlStep1.hide();
				pnlStep2.show();	
				
				user.logOut();
			
			}
			else {
				alert(oXmlResponse.statusCode + " - " + oXmlResponse.status + " - " + oXmlResponse.responseText);
			}
			
		}
	
	}
	
	
	
	
	