function updateImage( id ){
	var imgDel 		= document.getElementById('imgDel_' + id);
	var txtStatus 	= document.getElementById('txtStatus_' + id);
	var txtDiv 		= document.getElementById('txtDiv_' + id);

	if( imgDel.value <= 0 ){
		imgDel.value 		= 1;
		txtDiv.innerHTML	= 'Cancel Delete';
		txtStatus.innerHTML	= '<strong>*<font color="#FF0000">Pending Delete</font>*</strong><br />';
	}else{
		imgDel.value 		= 0;
		txtDiv.innerHTML	= 'Delete';
		txtStatus.innerHTML	= '';
	}
}

function checkRequired(){
	var required = document.getElementById('_req').value;
	var splitReq = required.split('{,}');
	var fieldId;
	
	for(var i = 0; i < splitReq.length; i++){
		fieldId = splitReq[i].split('{-}');
		if( !document.getElementById( fieldId[0] ).value ){
			alert(fieldId[1]);
			document.getElementById( fieldId[0] ) .focus();
			return false;
		}
	}
	
	return true;
}

function set_layout(layoutRadioId, layoutId, fieldTotal, imageTotal){
	document.getElementById(layoutRadioId).checked = 'checked';
	document.getElementById('layoutId').value = layoutId;
	document.getElementById('layoutFields').value = fieldTotal;
	document.getElementById('layoutImages').value = imageTotal;
}

function set_Action(frm, actionField, performAction){
	frm[actionField].value = performAction; 
	//frm.submit();	
}
var previewWindow;
function preview_eflyer(eflyerId, save){
	/*if (save == true) {
		tinyMCE.triggerSave();
		set_fields();
	}*/
	try {
		previewWindow.close();
	} catch (e) {}
	var d = new Date();
	previewWindow = window.open('preview.php?eid=' + eflyerId + '&amp;PAWLIK_CACHE_BUSTER=' + d.getTime(), 'flyerPreview', 'width=800px,height=600px,scrollbars=1');	
}
var newWin;
function preview_temp_eflyer( eflyerId, layoutId, db ){
	/*tinyMCE.triggerSave();
	set_fields();*/
	try {
		newWin.close();
	} catch (e) {}
	var d = new Date();
	newWin = window.open('/Customer/preview.php?eid=' + eflyerId + '&layoutId=' + layoutId + '&db=' + db + '&amp;PAWLIK_CACHE_BUSTER=' + d.getTime(), 'flyerPreview', 'width=800px,height=600px,scrollbars=1,status=1');	
}
function toggleCheckAll(field, idPrefix) {
	var checked = false;
	if (field.checked == true) {
		checked = true;
	}
	var arr = document.getElementsByTagName('INPUT');
	for (i=0;i<arr.length;i++) {
		if (arr[i].id.indexOf(idPrefix) == 0) {
			arr[i].checked = checked;
		}
	}
}

/*function preview_temp_eflyer( eflyerId, layoutId, db ){
	var newWin = window.open('/preview.php?eid=' + eflyerId + '&layoutId=' + layoutId + '&db=' + db, 'flyerPreview', 'width=800px,height=600px,scrollbars=1,status=1');	
}*/

function confirmDelete(id, title){
	return confirm('Are you sure you want to delete? \n\n ' + title);
}
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] == value) {
			return true;
		}
	}
	return false;
};
function popitup(url) {
	newwindow=window.open(url,'name','width=800,height=600,toolbar=0,resizable=0');
	if (window.focus) {newwindow.focus()}
	return false;
}
function changeTab(newTab, undisplayArr, displayArr, selectedClass, newValues) {
	undisplayElements(undisplayArr);
	displayElements(displayArr);
	var noneSelClass = newTab.className;
	var idPrefix = newTab.id.split('_')[0];
	// Loop through the other tabs and deselect them
	var arr = getElementsByClass(noneSelClass);
	for (var i=0;i<arr.length;i++) {
		if (arr[i].id.indexOf(idPrefix) == 0) {
			arr[i].className = noneSelClass;
		}
	}
	newTab.className = newTab.className + ' ' + selectedClass;
	for (var i=0;i<newValues.length;i++) {
		try {
			document.getElementById(newValues[i][0]).value = newValues[i][1];
		} catch (error) {}
	}
}
function displayElements(elements, displayType) {
	if (displayType == null) {
		displayType = 'block';
	}
	for (var i=0;i<elements.length;i++) {
		if (typeof(elements[i]) == "string") {
			var element = document.getElementById(elements[i]);
		} else {
			var element = elements[i];
		}
		if (typeof(element) != "undefined") {
			element.style.display = displayType;
		}
	}
}
function undisplayElements(elements) {
	displayElements(elements,'none');
}
function toggleElements(elements) {
	var element = elements[0];
	if (typeof(element) != "undefined") {
		if (element.style.display == "block") {
			undisplayElements(elements);
		} else {
			displayElements(elements);
		}
	}
}
function toggleElement(element, useDisplay) {
	if (typeof(element) != "undefined") {
		if (useDisplay == true) {
			if (element.style.display == "block") {
				element.style.display = "none";
			} else {
				element.style.display = "block";
			}
		} else {
			if (element.style.visibility == "visible") {
				element.style.visibility = "hidden";
			} else {
				element.style.visibility = "visible";
			}
		}
	}
}
function hideElement(element) {
	if (typeof(element) != "undefined") {
		element.style.visibility = "hidden";
	}
}
function showElement(element) {
	if (typeof(element) != "undefined") {
		element.style.visibility = "visible";
	}
}
function showContainer(id, style, animate) {
	//alert("id: "+id);
	var obj = document.getElementById(id);
	//alert("obj: "+obj);
	if ((animate == true) && (obj.style.display == "none")) {
		changeOpac(id, 0);
		obj.style.display = style;
		fadeIn(id,5,100,100);
	} else {
		obj.style.display = style;
	}
	
}
function hideContainer(id, animate, removeChild) {
	//alert("id: "+id);
	if (animate == true) {
		changeOpac(id, 100);
		fadeOut(id,5,100,removeChild);
	} else {
		document.getElementById(id).style.display = "none";
	}
}
function addUnloadEvent(func) {
	/* 
	http://www.dustindiaz.com/top-ten-javascript
	Originally written by Simon Willison and highly adopted by many others as a simple 
	way to add events to trigger after the page has loaded. This of course attaches all 
	your events to the onload event handler which some still see as necessary, 
	nevertheless it does exactly what itâs supposed to, and does it well.
	*/
	var oldonunload = window.onunload;
	if (typeof window.onunload != 'function') {
		window.onunload = func;
	} else {
		window.onunload = function() {
			if (oldonunload) {
				oldonunload();
			}
			func();
		}
	}
}
function addLoadEvent(func) {
	/* 
	http://www.dustindiaz.com/top-ten-javascript
	Originally written by Simon Willison and highly adopted by many others as a simple 
	way to add events to trigger after the page has loaded. This of course attaches all 
	your events to the onload event handler which some still see as necessary, 
	nevertheless it does exactly what itâs supposed to, and does it well.
	*/
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}
function opacity(id, opacStart, opacEnd, millisec, removeChild) { 
	//speed for each frame 
	var speed = Math.round(millisec / 100); 
	var timer = 0; 

	//determine the direction for the blending, if start and end are the same nothing happens 
	if(opacStart > opacEnd) { 
		for(i = opacStart; i >= opacEnd; i--) { 
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
			timer++; 
		}
		setTimeout("fadeEnd('" + id + "'," + removeChild + ", '')",(timer * speed));
	} else if(opacStart < opacEnd) { 
		for(i = opacStart; i <= opacEnd; i++) 
			{ 
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
			timer++; 
		}
		//setTimeout("fadeEnd('" + id + "'," + removeChild + ")",(timer * speed));
	}
}
function moveIn(id, startPos, endPos, millisec, pxPerIter, removeChild, edge, alsoExecute) {
	var speed = Math.round((millisec / 100) * pxPerIter);
	//alert('speed: ' + speed + ', pxPerIter: ' + pxPerIter);
	var timer = 0;
	
	//determine the direction for the blending, if start and end are the same nothing happens 
	if(startPos > endPos) {
		for(i = startPos; i >= endPos; i-=pxPerIter) {
			setTimeout("changeEdge(" + i + ",'" + id + "', '" + edge + "')",(timer * speed));
			timer++;
		}
		setTimeout("fadeEnd('" + id + "'," + removeChild + ", '" + alsoExecute + "')",(timer * speed));
	} else if(startPos < endPos) {
		for(i = startPos; i <= endPos; i+=pxPerIter) {
			setTimeout("changeEdge(" + i + ",'" + id + "', '" + edge + "')",(timer * speed));
			timer++;
		}
		setTimeout("changeEdge(" + endPos + ",'" + id + "', '" + edge + "')",(timer * speed));
		//setTimeout("fadeEnd('" + id + "'," + removeChild + ")",(timer * speed));
	}
}
function changeEdge(newValue, id, edge) {
	var object = document.getElementById(id).style;
	eval("object." + edge + " = newValue + 'px'");
}

//change the opacity for different browsers 
function changeOpac(opacity, id) { 
	try {
		var object = document.getElementById(id).style;
		object.opacity = (opacity / 100);
		object.MozOpacity = (opacity / 100);
		object.KhtmlOpacity = (opacity / 100);
		object.filter = "alpha(opacity=" + opacity + ")";
	} catch (error) {}
}
function shiftOpacity(id, millisec) { 
	//if an element is invisible, make it visible, else make it invisible 
	if(document.getElementById(id).style.opacity == 0) { 
		opacity(id, 0, 100, millisec); 
	} else { 
		opacity(id, 100, 0, millisec); 
	} 
}
function fadeEnd(objId, removeChild, alsoExecute) {
	var obj = document.getElementById(objId);
	//alert("objId: " + objId + " obj: " + obj + " removeChild: " + removeChild + " alsoExecute: " + alsoExecute);
	switch (removeChild) {
		case 2:
			// Remove element from DOM
			obj.parentNode.removeChild(obj);
			break;
		case 1:
			// Hide the element
			obj.style.display = "none";
			break;
		case 0:
			obj.style.backgroundColor = "inherit";
			break;
		case 3:
			obj.style.backgroundColor = "red";
			break;
		case 4:
			// Hide the element
			obj.style.visibility = "hidden";
			break;
	}
	eval(alsoExecute);
}

function toggleExpand(element, content, state, event) {
	//alert('element.src: ' + element);
	if (element != null) {
		var oldSrc = element.src;
		var dirs = oldSrc.split("/");
		filename = dirs.pop();
		nameArr = filename.split("_");
		filename = "_" + nameArr[1];
		if (nameArr.length == 1) {
			nameArr = filename.split(".");
			filename = "." + nameArr[1];
		}
	}
	
	switch (state) {
		 case "expanded":
		 	if (element != null) {
		 		element.src = dirs.join("/") + "/expanded" + filename;
		 	}
			content.style.display = "block";
		 	break;
		 case "close":
		 	if (element != null) {
		 		element.src = dirs.join("/") + "/expand" + filename;
		 	}
			content.style.display = "none";
		 	break;
		 default:
		 	if (content.style.display == "none") {
				if (element != null) {
					element.src = dirs.join("/") + "/expanded" + filename;
				}
				content.style.display = "block";
			} else {
				if (element != null) {
					element.src = dirs.join("/") + "/expand" + filename;
				}
				content.style.display = "none";
			}
		 	break;
	}
	
	// Prevent event from bubble
	if (!event) {
		event = window.event;
	}
	event.cancelBubble = true;
	if (event.stopPropagation) {
		event.stopPropagation();
	}
}
/* 
http://www.dustindiaz.com/top-ten-javascript
Originially written by nobody in particular. Several developers have implemented 
their own version and no one single version has proven to be better than another. 
As you might expect, my humble self has even had a crack at it. This function was 
spawned from developers needing a quick and elegant way of grabbing elements by a 
className and to a developer@s surprise, itâs not an original DOM method as one 
might think... afterall, we have getElementById, getElementsByName(), 
getElementsByTagName, what the hell happened to getElementsByClass???
*/

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
/*
http://www.dustindiaz.com/top-ten-javascript
As far as I know, Jeremy Keith sort of came up with this idea even though one would 
have thought this too would be a DOM core method. But just like getElementsByClass, 
it isnât. So rather than pulling the function straight out of the book, Iâll leave 
that up to you to buy it yourself. Instead Iâve pulled this simple method from public domain:
*/
function insertAfter(parent, node, referenceNode) {
	parent.insertBefore(node, referenceNode.nextSibling);
}

function httpRequest() {
	var request;
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return request;
}
function sendAJAXRequest(request, responseHandler) {
	ajaxRequest.onreadystatechange = responseHandler;
	ajaxRequest.open("GET", request , true);
	//myHomeListRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	ajaxRequest.send(null);
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
var inputTags = new Array("INPUT","SELECT","TEXTAREA");
function resetForm(formID,prefix,suffix, url, resetSearchState) {
	var formObject = document.getElementById(formID);
	for(var i = 0;i < formObject.elements.length;i++) {
		//try {
			var tagName = formObject.elements[i].tagName.toUpperCase();
			
			if ((inputTags.inArray(tagName))
					&&
				(
					(typeof(formObject.elements[i].id) == "undefined") || 
					(
						(typeof(prefix) == "undefined") || (prefix == null) || (formObject.elements[i].id.indexOf(prefix) == 0)
							&&
						(typeof(suffix) == "undefined" || suffix == null) || (formObject.elements[i].id.indexOf(suffix) != -1)
					)
				)
			) {
				switch (tagName) {
					case 'TEXTAREA':
						break;
					case 'SELECT':
						switch(formObject.elements[i].type) {
							case "select-one":
								formObject.elements[i].selectedIndex = 0;
								break;
						}
						break;
					case 'INPUT':
						switch(formObject.elements[i].type) {
							case "checkbox":
							case "radio":
								formObject.elements[i].checked = false;
								break;
						}
						break;
				}
			}
		//} catch (error) {}
	}
	// Unset servers search session
	var resetRequest = httpRequest();
	resetRequest.onreadystatechange = function () {};
	resetRequest.open("GET", url + "?RequestState=" + resetSearchState, true);
	resetRequest.send(null);
}

function getFormValues(formID,prefix,suffix) {
	var formObject = document.getElementById(formID);
	var str = "";
	
	for(var i = 0;i < formObject.elements.length;i++) {
		try {
			var tagName = formObject.elements[i].tagName.toUpperCase();
			if ((inputTags.inArray(tagName))
					&&
				(
					(typeof(formObject.elements[i].id) == "undefined") || 
					(
						(typeof(prefix) == "undefined") || (prefix == null) || (formObject.elements[i].id.indexOf(prefix) == 0)
							&&
						(typeof(suffix) == "undefined" || suffix == null) || (formObject.elements[i].id.indexOf(suffix) != -1)
					)
				)
			) {
				
				if (tagName == "TEXTAREA") {
					str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
				} else {
					switch(formObject.elements[i].type) {
						case "text":
						case "hidden":
							str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
							break;
						case "radio":
							if (formObject.elements[i].checked) {
								str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
							}
							break;
						case "checkbox":
							if (formObject.elements[i].checked) {
								str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
							} else {
								str += formObject.elements[i].name + "=&";
							}
							break;
						case "select-one":
							str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].options[formObject.elements[i].selectedIndex].value) + "&";
							break;
					}
				}
			}
		} catch (error) {}
	}
	str = str.substr(0,(str.length - 1));
	return str;
}
function getRequestState() {
	return document.getElementById("RequestState").value;
}

function setRequestState(state) {
	document.getElementById("RequestState").value = state;
}

function parseXMLDoc(xml, parentTag) {
	if (parentTag == null) {
		parentTag = 'MHL';
	}
	//alert('xml.getElementsByTagName("LAL")[0]: ' + xml.getElementsByTagName('LAL')[0]);
	var elements = findAllChildren(xml.getElementsByTagName(parentTag)[0]);
	
	for(var i = 0; i < elements.length; i++) {
		var noEvents = false;
		//alert('elements[i]: ' + elements[i]);
		//alert('elements[i].tagName: ' + elements[i].tagName + ' document.getElementById(elements[i].tagName): ' + document.getElementById(elements[i].tagName));
		htmlElement = document.getElementById(elements[i].tagName);
		
		
		//alert('htmlElement: ' + htmlElement);
		if ((htmlElement != undefined) && (htmlElement != null)) {
			var oldEvent = null;
			if (typeof htmlElement.onchange == 'function') {
				oldEvent = htmlElement.onchange;
			}
			//alert('elements[i].getAttribute("value"): ' + elements[i].getAttribute("value"));
			
			// Update attributes
			var attrs = elements[i].attributes;
			for(var j=attrs.length-1; j>=0; j--) {
				if (attrs[j].name == "parseXML_noEvents") {
					noEvents = eval(attrs[j].value);
					if (typeof oldEvent == 'function' && noEvents == true) {
						htmlElement.onchange = function () {};
					}
				} else {
					htmlElement.removeAttribute(attrs[j].name);
					htmlElement.setAttribute(attrs[j].name,attrs[j].value);
				}
			}
			//alert('htmlElement.getAttribute("value"): ' + htmlElement.getAttribute("value"));
			
			// Update text content
			if (elements[i].hasChildNodes()) {
				htmlElement.innerHTML = elements[i].firstChild.nodeValue;
			}
			
			if (typeof oldEvent == 'function' && noEvents == true) {
				htmlElement.onchange = oldEvent;
			}
			
			// Check for and fire onchange event
			if (typeof htmlElement.onchange == 'function' && noEvents == false) {
				try {
					htmlElement.onchange();
				} catch (e) {}
			}
		}
	}
}
function findAllChildren(parent, ignoreClassName, includeTagName) {
	var nodes = new Array();
	var cNodes = parent.childNodes;
	for(var i = 0; i < cNodes.length; i++) {
		//alert("class: " + cNodes[i].className + ", tag: " + cNodes[i].tagName);
		//alert("includeTagName: " + includeTagName + ", ignoreClassName: " + ignoreClassName);
		if (((cNodes[i].tagName == includeTagName) || (includeTagName == undefined)) && ((ignoreClassName == undefined) || (cNodes[i].className != ignoreClassName))) {
			nodes.push(cNodes[i]);
		}
		if (cNodes[i].hasChildNodes()) {
			nodes = nodes.concat(findAllChildren(cNodes[i], ignoreClassName, includeTagName));
		}
	}
	
	//alert("nodes length: " + nodes.length);
	return nodes;
}
function toggleCheckAll(field, idPrefix) {
	var checked = false;
	if (field.checked == true) {
		checked = true;
	}
	var arr = document.getElementsByTagName('INPUT');
	for (i=0;i<arr.length;i++) {
		if (arr[i].id.indexOf(idPrefix) == 0) {
			arr[i].checked = checked;
		}
	}
}
/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 
function todaysDate() {
	var today = new Date();
	return (today.getDate() + "-" + parseInt(today.getMonth()+1) + "-" + parseInt(today.getFullYear()));
}
function insertTodaysDate(field) {
	field.value = todaysDate();
	field.onchange();
}
function highlightResult(element) {
	if (typeof(element) != "undefined") {
		element.style.backgroundColor = "red";
	}
}
function unhighlightResult(element) {
	if (typeof(element) != "undefined") {
		element.style.backgroundColor = "inherit";
	}
}
function disableLink(link) {
	link.href = "javascript:return false;";
}
function getRequestingState() {
	return document.getElementById("RequestState").value;
}
function setRequestingState(state) {
	document.getElementById("RequestState").value = state;
}
function submitForm() {
	var ret = true;
	if (typeof getForm().onsubmit == 'function') {
		ret = getForm().onsubmit();
	}
	if (ret != false) {
		getForm().submit();
	}
}
function getForm() {
	return (document.getElementById(defaultFormId));
}
var rootElement = document.getElementsByTagName("html")[0];
var AP_Dialog_timer;
function AP_Dialog(title, content, returnFunction) {
	var newBackground = document.createElement("div");
	newBackground.setAttribute("id","AP_Dialog_background");
	newBackground.setAttribute("style","position: fixed; top: 0px; left: 0px; width: 100%; height: 100%; background-color: white; z-index: 98; visibility: hidden;");
	rootElement.appendChild(newBackground);
	changeOpac(80,'AP_Dialog_background');
	showElement(newBackground);
	
	var myDialog = document.createElement("div");
	myDialog.setAttribute("id","AP_Dialog");
	
	var heading = document.createElement("h3");
	heading.appendChild(document.createTextNode(title));
	myDialog.appendChild(heading);
	
	
	var myDialogContent = document.createElement("div");
	myDialogContent.setAttribute("class","body");
	myDialogContent.innerHTML = content;
	myDialog.appendChild(myDialogContent);
	
	var submitDialog = document.createElement("input");
	submitDialog.id = submitDialog.name = "AP_Dialog_submit";
	submitDialog.type = "submit";
	//submitPrintCenter.click = function () {alert('returnFunction: ' + returnFunction);};
	getForm().onsubmit = function () {AP_Dialog_close(4, returnFunction); return false;};
	
	var footer = document.createElement("div");
	footer.className = "footer";
	footer.appendChild(submitDialog);
	myDialog.appendChild(footer);
	
	getForm().appendChild(myDialog);
	
	myDialog.style.display = 'block';
	
	//alert('window.offsetWidth: ' + window.offsetWidth);
	myDialog.style.left = ((window.innerWidth-myDialog.offsetWidth) / 2) + 'px';
	myDialog.style.top = '-' + myDialog.offsetHeight + 'px';
	
	moveIn('AP_Dialog', -myDialog.offsetHeight, 0, 200, 30, 0, 'top', '');
	
	showElement(myDialog);
	
	return false;
}
function AP_Dialog_continue() {
	
}
function AP_Dialog_close(removal, returnFunction) {
	//alert('returnFunction: ' + returnFunction);
	//var myEls = getElementsByClass("notDisplayed");for (var i=0;i<myEls.length;i++) {myEls[i].style.display = "block";}; 
	moveIn('AP_Dialog', 0, -document.getElementById("AP_Dialog").offsetHeight, 200, 50, removal, 'top', 'getForm().onsubmit = "";rootElement.removeChild(document.getElementById("AP_Dialog_background"));eval("' + returnFunction + '");');
	
	return false;
}
function moduleAction(state, extraFields) {
	setRequestingState(state);
	if (extraFields != null) {
		for(var i = 0; i < extraFields.length; i++) {
			var field = document.createElement("input");
			field.setAttribute("type","hidden");
			field.setAttribute("name",extraFields[i][0]);
			field.setAttribute("value",extraFields[i][1]);
			getForm().appendChild(field);
		}
	}
	submitForm();
	if (state == 9) {
		return confirm("Are you sure you wish to delete?");
	} else {
		return false; // Prevents browser from following link
	}
}
function leaveModule(url) {
	setRequestingState(STATE_EXIT);
	
	var gotoField = document.createElement("input");
	gotoField.setAttribute("type","hidden");
	gotoField.setAttribute("name","goTo");
	gotoField.setAttribute("value",url);
	getForm().appendChild(gotoField);
	
	submitForm();
	return false;
}
var inputTags = new Array("INPUT","SELECT","TEXTAREA");

function getFormValues(formID,prefix,suffix) {
	var formObject = document.getElementById(formID);
	var str = "";
	for(var i = 0;i < formObject.elements.length;i++) {
		try{
			if ((inputTags.inArray(formObject.elements[i].tagName.toUpperCase()))
					&&
				(typeof(prefix) == "undefined") || (formObject.elements[i].name.indexOf(prefix) == 0)
					&&
				(typeof(suffix) == "undefined") || (formObject.elements[i].id.indexOf(suffix) != -1)
			) {
				if (formObject.elements[i].tagName.toUpperCase() == "TEXTAREA") {
					str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
				} else {
					switch(formObject.elements[i].type) {
						case "text":
						case "hidden":
							str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
							break;
						case "radio":
							if (formObject.elements[i].checked) {
								str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
							}
							break;
						case "checkbox":
							if (formObject.elements[i].checked) {
								str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].value) + "&";
							} else {
								str += formObject.elements[i].name + "=&";
							}
							break;
						case "select-one":
							str += formObject.elements[i].name + "=" + encodeURIComponent(formObject.elements[i].options[formObject.elements[i].selectedIndex].value) + "&";
							break;
					}
				}
			}
		} catch (error) {}
	}
	str = str.substr(0,(str.length - 1));
	return str;
}
function createElementWithName(){}
(function(){
	try {
		var el=document.createElement( '<div name="foo">' );
		if( 'DIV'!=el.tagName || 'foo'!=el.name ){
			throw 'create element error';
		}
		createElementWithName = function( tag, name ){
			return document.createElement( '<'+tag+' name="'+name+'"></'+tag+'>' );
		}
	}catch( e ){
		createElementWithName = function( tag, name ){
		var el = document.createElement( tag );
		// setAttribute might be better here ?
		el.setAttribute("name",name);
		return el;
	}
}
})();

