// Firework Settings
var DEBUG_MODE = false;
var AjaxProgressDone = '<img src="images/progress_done.gif" width="16" height="16" border="0" align="absmiddle" />';
var AjaxProgressInfo = '<img src="images/progress_info.gif" width="16" height="16" border="0" align="absmiddle" />';
var AjaxProgressLoad = '<img src="images/progress_loading.gif" width="16" height="16" border="0" align="absmiddle" />';
var AjaxNoAvailiable = '<img src="images/progress_error.gif" width="16" height="16" border="0" align="absmiddle" />&nbsp;Ajax Disabled';
var AjaxErrorMessage = '<img src="images/progress_error.gif" width="16" height="16" border="0" align="absmiddle" />&nbsp;Server error. Try again.';

// Interface Function
function SubmitFormAjax(ClickFormName, SubmitType, SubmitURL, SendRequestMessage)
{
	if (document.getElementById(ClickFormName))
	{
		if (SubmitType == 'true') 
		{
			DisableSubmitButton(ClickFormName);
			SubmitOriginalForm(ClickFormName);
		}
		else 
		{
			SubmitAjaxForm(ClickFormName, SubmitURL, SendRequestMessage);
		}
	}
}
function ClearFormAjax(ClickFormName)
{
	ClearFormValue(ClickFormName, '');
}
function SubmitListAjax(ListName, SubmitURL, SubmitDATA, SendRequestMessage)
{
	if (document.getElementById(ListName+'_list') || document.getElementById(ListName+'_message'))
	{
		SubmitRequest(ListName, SubmitURL, SubmitDATA, SendRequestMessage);
	}
}

// Form Functions
function ClearFormValue(ClearFormName, ClearList)
{
	if (document.getElementById(ClearFormName))
	{
		var myObjt = document.getElementById(ClearFormName);
		for (var i=0; i<myObjt.length; i++)
		{
			ClearElement = true;
			for (var j=0; j<ClearList.length; j++)
			{
				TempString = unescape(ClearList.item(j).firstChild.data);
				if (TempString == myObjt.elements[i].id) {ClearElement = false;}
			}
			if (ClearElement == true)
			{
				if (myObjt.elements[i].type == 'text') {myObjt.elements[i].value = '';}
				else if (myObjt.elements[i].type == 'textarea') {myObjt.elements[i].value = '';}
				else if (myObjt.elements[i].type == 'password') {myObjt.elements[i].value = '';}
				else if (myObjt.elements[i].type == 'checkbox') {myObjt.elements[i].checked = false;}
				else if (myObjt.elements[i].type == 'select-one') {myObjt.elements[i].selectedIndex = 0;}
				else if (myObjt.elements[i].type == 'hidden') 
				{
					if (myObjt.elements[i].id != 'action' && myObjt.elements[i].id != 'ajax_submit_action') {myObjt.elements[i].value = '';}
				}
			}
		}
	}
}
function ChangeFormValues(ClickFormName, ChangeFormElements)
{
	if (document.getElementById(ClickFormName))
	{
		var myObjt = document.getElementById(ClickFormName);
		for (var i=0; i<myObjt.length; i++)
		{
			if (ChangeFormElements.getElementsByTagName("change_"+myObjt.elements[i].id).length > 0)
			{
				var NewValue = GetCompletedString(ChangeFormElements.getElementsByTagName("change_"+myObjt.elements[i].id));
				if (myObjt.elements[i].type == 'text') {myObjt.elements[i].value = NewValue;}
				else if (myObjt.elements[i].type == 'textarea') {myObjt.elements[i].value = NewValue;}
				else if (myObjt.elements[i].type == 'password') {myObjt.elements[i].value = NewValue;}
				else if ((myObjt.elements[i].type == 'checkbox') || (myObjt.elements[i].type == 'radio'))
				{
					if (NewValue == '1') {myObjt.elements[i].checked = true;}
					else {myObjt.elements[i].checked = false;}
				}
				else if (myObjt.elements[i].type == 'select-one') 
				{
					var SelectedIndex = 0;
					for (var j=0; j<myObjt.elements[i].length; j++) {if (myObjt.elements[i].options[j].value == NewValue) {SelectedIndex = j;}}
					myObjt.elements[i].selectedIndex = SelectedIndex;
				}
				else if (myObjt.elements[i].type == 'hidden') {myObjt.elements[i].value = NewValue;}
			}
		}
	}
}
function EnableSubmitButton(ClickFormName)
{
	if (document.getElementById(ClickFormName+'_button')) {document.getElementById(ClickFormName+'_button').disabled='';}
}
function DisableSubmitButton(ClickFormName)
{
	if (document.getElementById(ClickFormName+'_button')) {document.getElementById(ClickFormName+'_button').disabled='disabled';}
}
function SubmitOriginalForm(ClickFormName)
{
	document.getElementById(ClickFormName).submit();
}
function SubmitAjaxForm(ClickFormName, SubmitURL, SendRequestMessage)
{
	var RequestString = getFormConvertToPost(ClickFormName);
	SubmitRequest(ClickFormName, SubmitURL, RequestString, SendRequestMessage);
}
function getFormConvertToPost(ClickFormName)
{
	var RequestString = '';
	var myObjt = document.getElementById(ClickFormName);
	for (var i=0; i<myObjt.length; i++)
	{
		if (myObjt.elements[i].type == 'hidden') 
		{
			if (myObjt.elements[i].id != 'action')
			{
				if (myObjt.elements[i].id == 'ajax_submit_action')
				{
					if (RequestString == '') {RequestString = 'action='+escape(myObjt.elements[i].value);}
					else {RequestString += '&action='+escape(myObjt.elements[i].value);}
				}
				else
				{
					if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
					else {RequestString += '&'+myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
				}
			}
		}
		else if (myObjt.elements[i].type == 'text') 
		{
			if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
			else {RequestString += '&'+myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
		}
		else if (myObjt.elements[i].type == 'textarea') 
		{
			if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
			else {RequestString += '&'+myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
		}
		else if (myObjt.elements[i].type == 'password') 
		{
			if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
			else {RequestString += '&'+myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
		}
		else if (myObjt.elements[i].type == 'checkbox') 
		{
			var tempValue = '';
			if (myObjt.elements[i].checked) {tempValue = myObjt.elements[i].value;}
			if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(tempValue);}
			else {RequestString += '&'+myObjt.elements[i].id+'='+escape(tempValue);}
		}
		else if (myObjt.elements[i].type == 'select-one') 
		{
			var selectedValue = myObjt.elements[i].value;
			if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(selectedValue);}
			else {RequestString += '&'+myObjt.elements[i].id+'='+escape(selectedValue);}
		}
		else if (myObjt.elements[i].type == 'radio') 
		{
			if (myObjt.elements[i].checked)
			{
				if (RequestString == '') {RequestString = myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
				else {RequestString += '&'+myObjt.elements[i].id+'='+escape(myObjt.elements[i].value);}
			}
		}
	}
	return RequestString;
}
function HighLightForm(ResponceObjt, ClickFormName)
{
	var HighLightResult = ResponceObjt.getElementsByTagName("highlight");
	var HighLightResultAll = ResponceObjt.getElementsByTagName("highlight_all");
	for (var i=0; i<HighLightResultAll.length; i++)
	{
		TempString = unescape(HighLightResultAll.item(i).firstChild.data);
		if (document.getElementById(TempString+'_tag')) 
		{
			document.getElementById(TempString+'_tag').innerHTML = '';
			document.getElementById(TempString+'_tag').style.visibility = 'hidden';
		}
		if (document.getElementById(TempString)) {document.getElementById(TempString).style.backgroundColor = HighLightNormalColor;}
	}
	for (var i=0; i<HighLightResult.length; i++)
	{
		TempString = unescape(HighLightResult.item(i).firstChild.data);
		if (document.getElementById(TempString+'_tag')) 
		{
			document.getElementById(TempString+'_tag').innerHTML = HighLightErrorMessage;
			document.getElementById(TempString+'_tag').style.visibility = 'visible';
		}
		if (document.getElementById(TempString)) {document.getElementById(TempString).style.backgroundColor = HighLightErrorColor;}
	}
}
function ResponseForm(ClickFormName, ResponceObjt)
{
	var NoClearFormElements = ''; var ReloadListData = '';
	var ActionResult = GetCompletedString(ResponceObjt.getElementsByTagName("status"));
	var MessageResult = GetCompletedString(ResponceObjt.getElementsByTagName("message"));
	if (ResponceObjt.getElementsByTagName("no_clear").length > 0) {NoClearFormElements = ResponceObjt.getElementsByTagName("no_clear");}
	if (ResponceObjt.getElementsByTagName("reload_data").length > 0) {ReloadListData = GetCompletedString(ResponceObjt.getElementsByTagName("reload_data"));}
	HighLightForm(ResponceObjt, ClickFormName);
	PrintMessage(ClickFormName, MessageResult, ActionResult);
	ChangeFormValues(ClickFormName, ResponceObjt);
	if (ActionResult == 'send') {SubmitOriginalForm(ClickFormName);}
	else if (ActionResult == 'sent') {ClearFormValue(ClickFormName, NoClearFormElements);}
	else if (ActionResult == 'reload') 
	{
		ClearFormValue(ClickFormName, NoClearFormElements);
		StartReloadList(ReloadListData);
	}
	else if (ActionResult == 'renew') 
	{
		StartReloadList(ReloadListData);
	}
}

// List Functions
function ResponseList(ClickFormName, ResponceObjt)
{
	var ListBody = GetCompletedString(ResponceObjt.getElementsByTagName("list_body"));
	var ListPages = GetCompletedString(ResponceObjt.getElementsByTagName("list_pages"));
	var ListMessage = GetCompletedString(ResponceObjt.getElementsByTagName("list_message"));
	var ListPrevButton = GetCompletedString(ResponceObjt.getElementsByTagName("list_prev_button"));
	var ListNextButton = GetCompletedString(ResponceObjt.getElementsByTagName("list_next_button"));
	var ListActionResult = GetCompletedString(ResponceObjt.getElementsByTagName("list_status"));
	PrintMessage(ClickFormName, ListMessage, ListActionResult);
	if (document.getElementById(ClickFormName+'_list')) {document.getElementById(ClickFormName+'_list').innerHTML = ListBody;}
	if (document.getElementById(ClickFormName+'_pages')) {document.getElementById(ClickFormName+'_pages').innerHTML = ListPages;}
	if (document.getElementById(ClickFormName+'_button_prev')) {document.getElementById(ClickFormName+'_button_prev').innerHTML = ListPrevButton;}
	if (document.getElementById(ClickFormName+'_button_next')) {document.getElementById(ClickFormName+'_button_next').innerHTML = ListNextButton;}
	if (document.getElementById(ClickFormName+'_pages_2')) {document.getElementById(ClickFormName+'_pages_2').innerHTML = ListPages;}
	if (document.getElementById(ClickFormName+'_button_prev_2')) {document.getElementById(ClickFormName+'_button_prev_2').innerHTML = ListPrevButton;}
	if (document.getElementById(ClickFormName+'_button_next_2')) {document.getElementById(ClickFormName+'_button_next_2').innerHTML = ListNextButton;}
}

// Ajax Functions
function SubmitRequest(ClickFormName, RequestURL, RequestString, SendRequestMessage)
{
	var XMLHttpRequestObject = false; 
	if (window.XMLHttpRequest) {XMLHttpRequestObject = new XMLHttpRequest();} 
	else if (window.ActiveXObject) {XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");} 
	if(XMLHttpRequestObject) 
	{
		PrintMessage(ClickFormName, SendRequestMessage, 'loading');
		DisableSubmitButton(ClickFormName);
		XMLHttpRequestObject.open("POST", RequestURL); 
		XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		XMLHttpRequestObject.onreadystatechange = function() 
		{
			if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) 
			{
				if (DEBUG_MODE == true) {alert(XMLHttpRequestObject.responseText);}
				if (XMLHttpRequestObject.responseXML) {getServerResponce(XMLHttpRequestObject.responseXML, ClickFormName);}
				else {PrintMessage(ClickFormName, AjaxErrorMessage, '');}
				delete XMLHttpRequestObject;
				XMLHttpRequestObject = null;
				EnableSubmitButton(ClickFormName);
			}
		}
		if (DEBUG_MODE == true) {alert(RequestString);}
		XMLHttpRequestObject.send(RequestString);
	}
	else {PrintMessage(ClickFormName, AjaxNoAvailiable, '');}
}
function getServerResponce(ResponceObjt, ClickFormName)
{
	if (ResponceObjt.getElementsByTagName("FormResponce").length > 0)
	{
		ResponseForm(ClickFormName, ResponceObjt);
	}
	else if (ResponceObjt.getElementsByTagName("ListResponce").length > 0)
	{
		ResponseList(ClickFormName, ResponceObjt);
	}
	else
	{
		PrintMessage(ClickFormName, AjaxErrorMessage, '');
	}
}
function ClearMessage(ClickFormName)
{
	if (document.getElementById(ClearFormName+'_message')) {document.getElementById(ClearFormName+'_message').innerHTML='';}
}
function PrintMessage(ClickFormName, Message, MessageType)
{
	if (document.getElementById(ClickFormName+'_message')) 
	{
		if (Message.indexOf('img') == -1)
		{
			if (MessageType == 'loading') {Message = AjaxProgressLoad+'&nbsp;'+Message;}
			else if (MessageType == 'send') {Message = AjaxProgressDone+'&nbsp;'+Message;}
			else if (MessageType == 'sent') {Message = AjaxProgressDone+'&nbsp;'+Message;}
			else if (MessageType == 'done') {Message = AjaxProgressDone+'&nbsp;'+Message;}
			else if (MessageType == 'reload') {Message = AjaxProgressDone+'&nbsp;'+Message;}
			else if (MessageType == 'message') {Message = AjaxProgressInfo+'&nbsp;'+Message;}
			else if (MessageType == 'renew') {Message = AjaxProgressInfo+'&nbsp;'+Message;}
			else 
			{
				if (Message != '') {Message = AjaxProgressInfo+'&nbsp;'+Message;}
			}
		}
		document.getElementById(ClickFormName+'_message').innerHTML = Message;
	}
}
function GetCompletedString(MessageResult)
{
	var TempString = '';
	for (var i=0; i<MessageResult.length; i++)
		TempString += unescape(MessageResult.item(i).firstChild.data);
	return TempString;
}

