personForm.js 5.21 KB
/*
 * requires fittingStrings.js to be loaded first
 */


/*
 * controls input/update formular for person insert
 *
 * Arguments:
 * upId    / ID of the insert checkbox
 * inId    / ID of the update checkbox
 * persons / Array containing all persons already existant in DB
 *
 * Methods:
 * de_activate / de/activate the formular fields for input
 * updateForm  / calls de_activate and controls the checkboxes
 */
function personForm (
	upId, inId, submitId, person, newPerson, arrRight, arrDown)
{
	this.updBox       = upId;
	this.insBox       = inId;
	this.submitButton = submitId;
	this.arrRight     = arrRight;
	this.arrDown      = arrDown;
	this.person       = person;
	this.newPerson    = newPerson;

	person.connect (this);

	this.showHideBlock = function (titleId)
	{
		var titleElement = document.getElementById (titleId);
		var imgElement   = titleElement.getElementsByTagName ('img')[0];
		var blockElement = titleElement.parentNode;
		var dataElement  = blockElement.getElementsByTagName ('div')[1];

		var insBox = document.getElementById (this.insBox);
		var person = (insBox.checked == true)? this.newPerson: this.person;

		switch (titleId)
		{
			case 'title_photographer':
				var id  = 'photographerId';
				var _id = '_photographerId';
				break;

			case 'title_owner':
				var id  = 'ownerId';
				var _id = '_ownerId';
		}

		if (dataElement.style.display == 'none')
			if (person[_id] != -1)
				person[id] = person[_id];
			else
				person[id] = 0;
		else
			person[id] = -1;

		this.un_fold (person[id], dataElement)
	}

	this.sendForm = function (formId)
	{
		var form   = document.getElementById (formId);
		var action = form.getAttribute ('action');

		form.setAttribute (
			'action', action + '?action=delete&personId=' + this.person.personId);
		form.submit ();

		return false;
	}

	this.de_activate = function (field)
	{
		var updBox = document.getElementById (this.updBox);
		var insBox = document.getElementById (this.insBox);

		if (updBox.checked == true || insBox.checked == true)
			field.disabled = false;
		else
			field.disabled = true;

		return false;
	}

	this.un_fold = function (id, element)
	{
		var title = element.parentNode.getElementsByTagName ('div')[0];
		var img   = title.getElementsByTagName ('img')[0];

		var classes = '';
		var _classes = title.className.split (' ');

		for (c in _classes)
			if (_classes[c][0] != 'f')
				classes += ' ' + _classes[c];

		if (id != -1)
		{
			element.style.display = 'block';
			title.className = classes + ' f-grp-head1';
			img.src = this.arrDown.getImgUrl (title);
		}
		else
		{
			element.style.display = 'none';
			title.className = classes + ' f-grp-head-unset1';
			img.src = this.arrRight.getImgUrl (title);
		}
	}

	this.updateFields = function (person)
	{
		for (p in person)
		{
			if (p == 'personForm')
				break;

			var field = document.getElementById (p);

			if (field != null)
			{
				field.value = person[p];
				this.de_activate (field);
			}

			switch (p)
			{
				case 'photographerId':
					this.un_fold (person[p],
						document.getElementById (
							'cameraId').parentNode.parentNode.parentNode);
					break;
				case 'ownerId':
					this.un_fold (person[p],
						document.getElementById (
							'wmWidth').parentNode.parentNode.parentNode);
			}
		}
	}

	this.updateForm = function ()
	{
		var updBox       = document.getElementById (this.updBox);
		var insBox       = document.getElementById (this.insBox);
		var submitButton = document.getElementById (this.submitButton);
		var person;

		if (this.person.personId != -1)
		{
			if (insBox.checked == false)
			{
				person = this.person;
				updBox.disabled = false;
			}
			else
			{
				person = this.newPerson;
				updBox.checked = false;
				updBox.disabled = true;
			}
		}
		else
		{
			person = this.newPerson;
			updBox.checked = false;
			updBox.disabled = true;
		}

		if (updBox.checked == true || insBox.checked == true)
		{
			submitButton.value = submit_str;
			submitButton.disabled = false;
		}
		else
		{
			if (this.person.personId != -1)
			{
				submitButton.value = delete_str;
				submitButton.disabled = false;
			}
			else
			{
				submitButton.value = submit_str;
				submitButton.disabled = true;
			}
		}

		this.updateFields (person);

		return false;
	}

	this.selectPerson = function ()
	{
		var insBox = document.getElementById (this.insBox);
		var person;

		if (insBox.checked == true)
			person = this.newPerson;
		else
			person = this.person;

		return person;
	}

	this.setFirstname = function (value)
	{
		this.selectPerson ().firstname = value;
	}

	this.setSurname   = function (value)
	{
		this.selectPerson ().surname = value;
	}

	this.setCompany   = function (value)
	{
		this.selectPerson ().company = value;
	}

	this.setEmail     = function (value)
	{
		this.selectPerson ().email = value;
	}

	this.setUrl       = function (value)
	{
		this.selectPerson ().url = value;
	}

	this.setCameraId  = function (value)
	{
		this.selectPerson ().cameraId = value;
	}

	this.setWmWidth   = function (value)
	{
		this.selectPerson ().wmWidth = value;
	}

	this.setWmHeight  = function (value)
	{
		this.selectPerson ().wmHeight = value;
	}

	this.setWmXPos    = function (value)
	{
		this.selectPerson ().wmXPos = value;
	}

	this.setWmYPos    = function (value)
	{
		this.selectPerson ().wmYPos = value;
	}
}