/**
 * 	@author Aravintha Krishnan Jagannathan
 * 	@since Moveo 1.0
 * 	Add and/or Update Elements
 */
 
 /*	global variables */
  	var elementTagVar = "input";
  	var elementNameVar = "name";
  	var elementIdVar = "id";
  	var elementTypeVar = "type";
  	var elementValueVar = "value";
  	var elementIdSeparator = "_";
  	
 
 /* function - to add a hidden element to a form or update a hidden element value of a form
	input - gets a target object, element object name and element value
	output - returns true of false
 */
	function setHiddenElement(targetObject,elementName,elementValue) {
		var elementId = getElementId(elementName);
		var elementObject = getElementObjectById(elementId);

	 	if (isNull(elementObject)) {
	 		return addElement(targetObject,"hidden",elementName,elementValue);
	 	}
		 else {
		 	return updateElementValue(elementObject,elementValue);
		 }
	}


 /* function - to add an element to the target, like form
	input - gets a target object, type of element to add, element object name and element value
	output - returns true of false
 */
	function addElement(targetObject,elementType,elementName,elementValue) {
		 	var elementObject = document.createElement(elementTagVar);
		 	elementObject.setAttribute(elementNameVar,elementName);
		 	elementObject.setAttribute(elementIdVar,getElementId(elementName));
		 	elementObject.setAttribute(elementTypeVar,elementType);
		 	elementObject.setAttribute(elementValueVar,elementValue);
		 	targetObject.appendChild(elementObject);
			return TRUE_FLAG;
	}


 /* function - to update an element value
	input - gets an element object and element value
	output - returns true or false
 */
	function updateElementValue(elementObject,elementValue) {
		if(elementObject != UNDEFINED_STRING && !isNull(elementObject)) {
		 	elementObject.value = elementValue;
			return TRUE_FLAG;
		}
		return FALSE_FLAG;
	}


 /* function - to get an element object by element id
	input - element name
	output - returns element object
 */
	function getElementObjectById(elementId) {
		return document.getElementById(elementId);
	}


 /* function - to get an id attribute of the element
	input - element name
	output - returns string
 */
	function getElementId(elementName) {
		return elementName + elementIdSeparator + elementIdVar;
	}

	
 /* function - to set an object to a variable, focusElement (global variable)
 			   sets which element to be focused on the page
	input - element name
	output - returns true
 */
	function setFocusElement(elementObject) {
		focusElement = elementObject;
		return TRUE_FLAG;
	}
	

 /* function - to get the focusElement object (global variable)
	input - 
	output - returns focusElement
 */
	function getFocusElement() {
		return focusElement;
	}


 /* function - to focus the cursor on an element on the page
	input - element object
	output - returns true or false
 */
	function elementFocus(elementObject) {
		if(!isNull(elementObject)) {
			elementObject.select();
			elementObject.focus();
			focusElement=NULL_VALUE;
			return TRUE_FLAG;
		}
		return FALSE_FLAG;
	}


 /* function - to check is the object is a document object
	input - object
	output - returns true or false
 */
	function isDocument(object) {
		var objectnodeName = object.nodeName;
 		return objectnodeName.indexOf(DOCUMENT_TAG_NAME) != -1;
	}


 /* function - to check is the object is a form object
	input - object
	output - returns true or false
 */
	function isForm(object) {
		var objectnodeName = object.nodeName;
 		return objectnodeName == FORM_TAG_NAME;
	}
	