﻿// JScript File
var controlsEditActivity;
var controlsAddActivity;
var activityList = new activityListContainer();

function activity(ActivityType, Activity, ActivityPosition, ActivityHours, ActivityWeeks, ActivityYears, ActivityGrade9, 
		ActivityGrade10, ActivityGrade11, ActivityGrade12, ActivityPostSecondary) {
    this.InquiryActivityId = ActivityType;
    this.Activity = Activity;
    this.Position = ActivityPosition;
    this.HoursPerWeek = ActivityHours;
    this.WeekPerYear = ActivityWeeks;
    this.NumberOfYear = ActivityYears;
    this.IncludeParticipatedGrade09 = ActivityGrade9;
    this.IncludeParticipatedGrade10 = ActivityGrade10;
    this.IncludeParticipatedGrade11 = ActivityGrade11;
    this.IncludeParticipatedGrade12 = ActivityGrade12;
    this.IncludePostSecondary = ActivityPostSecondary;

}

function activityText(ActivityTypeText, ActivityText, ActivityPositionText ){
	this.ActivityTypeText = ActivityTypeText;
    this.ActivityText = ActivityText;
    this.ActivityPositionText = ActivityPositionText;
}

function controlActivityList(ActivityType, Activity, ActivityPosition, ActivityHours, ActivityWeeks, ActivityYears, ActivityGrade9, 
		ActivityGrade10, ActivityGrade11, ActivityGrade12, ActivityPostSecondary, ActivitiesHiddenField, BuildingHandlerHiddenField,
		InquiryFormHiddenField, ActivitiesTextHiddenField, ActivityIndexSelectedRowHiddenField, ActivityIdHiddenField) {
	this.ActivityType = ActivityType;
    this.Activity = Activity;
    this.ActivityPosition = ActivityPosition;
    this.ActivityHours = ActivityHours;
    this.ActivityWeeks = ActivityWeeks;
    this.ActivityYears = ActivityYears;
    this.ActivityGrade9 = ActivityGrade9;
    this.ActivityGrade10 = ActivityGrade10;
    this.ActivityGrade11 = ActivityGrade11;
    this.ActivityGrade12 = ActivityGrade12;
    this.ActivityPostSecondary = ActivityPostSecondary;
    this.ActivitiesHiddenField = ActivitiesHiddenField;
    this.BuildingHandlerHiddenField = BuildingHandlerHiddenField;
    this.InquiryFormHiddenField = InquiryFormHiddenField;
    this.ActivitiesTextHiddenField = ActivitiesTextHiddenField;
    this.ActivityIndexSelectedRowHiddenField = ActivityIndexSelectedRowHiddenField;
    this.ActivityIdHiddenField = ActivityIdHiddenField;
}

function initializeActivityLists() {
	activityList.initialize();
}

function GetActivityObject(indexObject, activitiesHiddenField) {
	var actualActivity;
	if ($("#" + activitiesHiddenField).val() != "")
		actualActivity = JSON.parse($("#" + activitiesHiddenField).val());

	return actualActivity[indexObject];
}

function SetActivityDropDownValueToHidden( ActivityField, ActivityIdHidden ) {
	var activityValue = $("#" + ActivityField).val();
	$("#" + ActivityIdHidden).val(activityValue);
}

function activityListContainer() {
 
	var selectedRow;
	var templateRow;
	var removedRow;
 
	this.initialize = function() {

		var actualActivity = this.GetAllActivityObject(controlsAddActivity.ActivitiesHiddenField);

		if (actualActivity.length > 0 && actualActivity.length != undefined) {
		    var listOldActivityText = this.AddActivityTextObject(new activityText("", "", ""), controlsAddActivity.ActivitiesTextHiddenField)
		    this.BuildActivityTable(actualActivity, controlsAddActivity.ActivitiesHiddenField, listOldActivityText);
		    var selectedRow = $("#activityTable").find("tr[indexId='" + $("#" + controlsAddActivity.ActivityIndexSelectedRowHiddenField).val() + "']");
		    this.selectRowFromRow(selectedRow, true);
		}
		
		
		$("#" + controlsAddActivity.Activity).change(this.updateSelectedRow);
		$("#" + controlsAddActivity.ActivityPosition).change(this.updateSelectedRow);
	}

	this.selectRow = function(row, isEdit, fillActivity) {
		var isValidControl = true;

		if (isEdit == true) {
			isValidControl = Page_ClientValidate("NewApplicationActivity");
			if (isValidControl == true) {
				var oldIndexObject = $("#activityTable").find("tr[class=selectedrow]").attr("indexId");
				var oldActivityObject = this.GetActivityObjectFromPanel(controlsAddActivity);
				var oldActivityTextObject = this.GetActivityTextObjectFromPanel(controlsAddActivity);
				this.EditActivityObject(oldIndexObject, controlsAddActivity.ActivitiesHiddenField,
					controlsAddActivity.ActivitiesTextHiddenField, oldActivityObject, oldActivityTextObject);
			}
		}
		if (isValidControl == true) {
			$(row).parent().find("tr").attr("class", "");
			$(row).attr("class", "selectedrow")

			var newIndexObject = $(row).attr("indexId");
			if (newIndexObject != undefined) {
				var activityObject = GetActivityObject(newIndexObject, controlsAddActivity.ActivitiesHiddenField);
				if (fillActivity == true) {
					FillActivityPanel(activityObject, controlsAddActivity);
					$("#" + controlsAddActivity.ActivityIndexSelectedRowHiddenField).val(newIndexObject);
				}
			}
		}
	}

    this.selectRowFromRow = function(row, isEdit) {
        $(row).parent().find("tr").attr("class", "");
        $(row).attr("class", "selectedrow")
        var selectedRow = $("#activityTable").find("tr[class=selectedrow]");
        updateRow(selectedRow);
    }
	
	 this.GetActivityObjectFromPanel = function (targetControlActivity) {
	 var activityObject = new activity(0, 0, 0, 0, 0, 0, false, false, false, false, false);
		activityObject.InquiryActivityId = parseInt($("#" + targetControlActivity.ActivityType).val());
        activityObject.Activity = parseInt($("#" + targetControlActivity.Activity).val());
        activityObject.Position = parseInt($("#" + targetControlActivity.ActivityPosition).val());
        activityObject.HoursPerWeek = parseFloat($("#" + targetControlActivity.ActivityHours).val());
        activityObject.WeekPerYear = parseInt($("#" + targetControlActivity.ActivityWeeks).val());
		activityObject.NumberOfYear = parseInt($("#" + targetControlActivity.ActivityYears).val());
		activityObject.IncludeParticipatedGrade09 = $("#" + targetControlActivity.ActivityGrade9).attr('checked');
		activityObject.IncludeParticipatedGrade10 = $("#" + targetControlActivity.ActivityGrade10).attr('checked');
		activityObject.IncludeParticipatedGrade11 = $("#" + targetControlActivity.ActivityGrade11).attr('checked');
		activityObject.IncludeParticipatedGrade12 = $("#" + targetControlActivity.ActivityGrade12).attr('checked');
		activityObject.IncludePostSecondary = $("#" + targetControlActivity.ActivityPostSecondary).attr('checked');

		return activityObject;
	}
	
	this.GetActivityTextObjectFromPanel = function (targetControlActivity) { 
		var activityTextObject = new activityText("", "", "");
		activityTextObject.ActivityTypeText = $("#" + targetControlActivity.ActivityType).find('option').filter(':selected').text();
		activityTextObject.ActivityText = $("#" + targetControlActivity.Activity).find('option').filter(':selected').text();
		activityTextObject.ActivityPositionText = $("#" + targetControlActivity.ActivityPosition).find('option').filter(':selected').text();
		return activityTextObject;
	}
	
	this.StoreCurentObject = function() {
		var selectedActivityIndex = $("#activityTable").find("tr[class=selectedrow]").attr("indexId");
		var currentActivityObject = this.GetActivityObjectFromPanel(controlsAddActivity);
		var currentActivityTextObject = this.GetActivityTextObjectFromPanel(controlsAddActivity);
		
		this.EditActivityObject(selectedActivityIndex, controlsAddActivity.ActivitiesHiddenField, 
			controlsAddActivity.ActivitiesTextHiddenField, currentActivityObject, currentActivityTextObject);
	}
	
	this.AddNewRow = function() {
		if (Page_ClientValidate("NewApplicationActivity")) {
			this.StoreCurentObject();
			
			var allActivityObjects = this.AddActivityObject(new activity(0, 0, 0, 0, 0, 0, false, false, false, false, false), controlsAddActivity.ActivitiesHiddenField);
			var allActivityTextObjects = this.AddActivityTextObject(new activityText("", "", ""), controlsAddActivity.ActivitiesTextHiddenField);

			this.BuildActivityTable(allActivityObjects, controlsAddActivity.ActivitiesHiddenField, allActivityTextObjects);

			FillActivityPanel(new activity(0, 0, 0, 0, 0, 0, false, false, false, false, false), controlsAddActivity);

			this.selectRow($("#activityTable").find("tr:last"), false, true);
		}
	}
	
	this.EditActivityObject = function(indexObject, activityHiddenField, activityTextHiddenField, newActivityObject, newActivityTextObject) {
		var actualActivity, actualTextActivity;
		if ($("#" + activityHiddenField).val() != ""){
			actualActivity = JSON.parse($("#" + activityHiddenField).val());
			actualActivity[indexObject] = newActivityObject;
			$("#" + activityHiddenField).val(JSON.stringify(actualActivity));
		}
		if ($("#" + activityTextHiddenField).val() != ""){
			actualTextActivity = JSON.parse($("#" + activityTextHiddenField).val());
			actualTextActivity[indexObject] = newActivityTextObject;
			$("#" + activityTextHiddenField).val(JSON.stringify(actualTextActivity));
		}
	}
	
	 this.BuildActivityTable = function(arrayActivity, activityHiddenField, arrayActivityText) {              

		$("#activityTable").empty();

		var removeButton = "";
		for (var i = 0; i <= (arrayActivity.length - 1); i = i + 1) {
			removeButton = "<a name='removeButton' href='javascript:void(0);return false;'><img height='18' src='../App_Themes/Default/Images/icon_delete_x.gif' width='18' border='0' /></a>";

			$("#activityTable").append(
				"<tr indexId='" + i + "'>" +
					"<td style='width: 100%'>" +
						"<span style='font-weight:bold' >" + arrayActivityText[i].ActivityText + " </span><span>" +
							arrayActivityText[i].ActivityPositionText + " </span>" +
					"</td>" +
					"<td>" +
						removeButton +
					"</td>" +
				"</tr>");
		}

		$("#activityTable").find("tr").click(
			function() {
				activityList.selectRow(this, true, true)
			}
		);

		$("#activityTable").find("tr").find("a").click(
			function() {
				activityList.removeRow(this.parentNode.parentNode)
			}
		);
	}

	this.removeRow = function(row) {

		this.StoreCurentObject();

		var activityIndexDelete = $(row).attr("indexId");
		var actualSelectedActivityIndex = $("#activityTable").find("tr[class=selectedrow]").attr("indexId");

		var activityDeleteRowClass = $(row).attr("class");
		var actualActivity = this.DeleteActivityObject(activityIndexDelete, controlsAddActivity.ActivitiesHiddenField);
		this.DeleteActivityTextObject(activityIndexDelete, controlsAddActivity.ActivitiesTextHiddenField);

		if (actualActivity.length == 0 || actualActivity.length == undefined) {
			FillActivityPanel(new activity(0, 0, 0, 0, 0, 0, false, false, false, false, false), controlsAddActivity);
			$("#activityTable").empty();
		}
		else
			this.BuildActivityTable(this.GetAllActivityObject(controlsAddActivity.ActivitiesHiddenField), controlsAddActivity.ActivitiesHiddenField,
				this.GetAllActivityObject(controlsAddActivity.ActivitiesTextHiddenField));

		if (activityDeleteRowClass == "selectedrow") {
			this.selectRow($("#activityTable").find("tr:first"), false, true);
		} else {
			if (activityIndexDelete < actualSelectedActivityIndex)
				this.selectRow($("#activityTable").find("tr[indexId=" + (actualSelectedActivityIndex - 1) + "]"), false, true);
			else
				this.selectRow($("#activityTable").find("tr[indexId=" + actualSelectedActivityIndex + "]"), false, true);
		}
	}
	
	this.AddActivityObject = function (activityObject, activityHiddenField) {
		var actualActivity;
		var temp = $("#" + activityHiddenField).val();
		if (($("#" + activityHiddenField).val() != "" || $("#" + activityHiddenField).val() == "{}") &&
			$("#" + activityHiddenField).val() != undefined)
			actualActivity = JSON.parse($("#" + activityHiddenField).val());
		else
			actualActivity = new Array();

		actualActivity.push(activityObject);

		$("#" + activityHiddenField).val(JSON.stringify(actualActivity));

		return actualActivity;
	}
	
	this.AddActivityTextObject = function (activityTextObject, activityTextHiddenField) {
		var actualTextActivity;
		var temp = $("#" + activityTextHiddenField).val();
		if (($("#" + activityTextHiddenField).val() != "" || $("#" + activityTextHiddenField).val() == "{}") &&
			$("#" + activityTextHiddenField).val() != undefined)
			actualTextActivity = JSON.parse($("#" + activityTextHiddenField).val());
		else
			actualTextActivity = new Array();

		actualTextActivity.push(activityTextObject);

		$("#" + activityTextHiddenField).val(JSON.stringify(actualTextActivity));

		return actualTextActivity;
	}
	
	this.GetAllActivityObject = function (activityHiddenField) {
		if ( ($("#" + activityHiddenField).val() != "") && ($("#" + activityHiddenField).val() != undefined))
			return JSON.parse($("#" + activityHiddenField).val());
		else
			return new Array();
	}
	
	function FillActivityPanel(activityObject, targetControlActivity) {
		if (!isNaN(activityObject.InquiryActivityId) && activityObject.InquiryActivityId != 0)
		{
			$("#" + targetControlActivity.ActivityType).val(activityObject.InquiryActivityId);
		}
		else
		{
			$("#" + targetControlActivity.ActivityType).val("");
		}
		setCascadingDropDownValuesTwoParameters($("#" + targetControlActivity.BuildingHandlerHiddenField).val(), 
			targetControlActivity.ActivityType, targetControlActivity.Activity, $("#" + targetControlActivity.InquiryFormHiddenField).val(), 
			'inquiryFormSettingId', 'activityTypeId');
		
		if (!isNaN(activityObject.Position) && activityObject.Position != 0)
		{
			$("#" + targetControlActivity.ActivityPosition).val(activityObject.Position);
		}	
		else
		{
			$("#" + targetControlActivity.ActivityPosition).val("");
		}
		
		if(activityObject.HoursPerWeek != null && activityObject.HoursPerWeek != 0)
			$("#" + targetControlActivity.ActivityHours).val(activityObject.HoursPerWeek);
		else
			$("#" + targetControlActivity.ActivityHours).val("");
		
		if(activityObject.WeekPerYear != null && activityObject.WeekPerYear != 0)
			$("#" + targetControlActivity.ActivityWeeks).val(activityObject.WeekPerYear);
		else
			$("#" + targetControlActivity.ActivityWeeks).val("");
			
		if(activityObject.NumberOfYear != null && activityObject.NumberOfYear != 0)
			$("#" + targetControlActivity.ActivityYears).val(activityObject.NumberOfYear);
		else 
			$("#" + targetControlActivity.ActivityYears).val("");
			
		$("#" + targetControlActivity.ActivityGrade9).attr('checked', activityObject.IncludeParticipatedGrade09);
		$("#" + targetControlActivity.ActivityGrade10).attr('checked', activityObject.IncludeParticipatedGrade10);
		$("#" + targetControlActivity.ActivityGrade11).attr('checked', activityObject.IncludeParticipatedGrade11);
		$("#" + targetControlActivity.ActivityGrade12).attr('checked', activityObject.IncludeParticipatedGrade12);
		
		$("#" + targetControlActivity.ActivityPostSecondary).attr('checked', activityObject.IncludePostSecondary);

		if (!isNaN(activityObject.Activity))
		{
			$("#" + targetControlActivity.Activity).val(activityObject.Activity);
		}
		else
		{
			$("#" + targetControlActivity.Activity).val("");
		}

		$("#" + controlsAddActivity.ActivityIdHiddenField).val(activityObject.Activity);

	}
	
	this.DeleteActivityObject = function (indexObject, activitiesHiddenField) {
		var actualActivity;

		if ($("#" + activitiesHiddenField).val() != "")
			actualActivity = JSON.parse($("#" + activitiesHiddenField).val());

		actualActivity.splice(indexObject, 1);
		$("#" + activitiesHiddenField).val(JSON.stringify(actualActivity));

		return actualActivity;
	}
	
	this.DeleteActivityTextObject = function (indexObject, activitiesTextHiddenField) {
		var actualActivityText;

		if ($("#" + activitiesTextHiddenField).val() != "")
			actualActivityText = JSON.parse($("#" + activitiesTextHiddenField).val());

		actualActivityText.splice(indexObject, 1);
		$("#" + activitiesTextHiddenField).val(JSON.stringify(actualActivityText));

		return actualActivityText;
	}
	
	this.updateSelectedRow = function() {
		var selectedRow = $("#activityTable").find("tr[class=selectedrow]");
		updateRow(selectedRow);
	}

	function updateRow(row) {
		if (row.length == 0 || row.length == undefined) {
			createEmptyRow(row);
			var spans = $("#activityTable").find("span");
		}
		else {
			var spans = $(row).find("span");
		}
		spans[0].innerHTML = $("#" + controlsAddActivity.Activity).find('option').filter(':selected').text();
		spans[1].innerHTML = "&nbsp;&nbsp;" + $("#" + controlsAddActivity.ActivityPosition).find('option').filter(':selected').text();
	}

	function createEmptyRow() {
		var listActivity = activityList.AddActivityObject(new activity(0, 0, 0, 0, 0, 0, false, false, false, false, false), controlsAddActivity.ActivitiesHiddenField);
		var listActivityText = activityList.AddActivityTextObject(new activityText("", "", ""), controlsAddActivity.ActivitiesTextHiddenField)
		activityList.BuildActivityTable(listActivity, controlsAddActivity.ActivitiesHiddenField, listActivityText);
		activityList.selectRow($("#activityTable").find("tr:first"), false, false);
		$("#" + controlsAddActivity.ActivityIndexSelectedRowHiddenField).val(0);
	}

 
 }