/*
	Preload functions
*/
$(document).ready(function() 
{
	loadPage();
	
});
/********************************************************************************************************************************
* 
********************************************************************************************************************************/

function loadPage()
{
	var CurrentStatus
	/********************************************************************************************************************************
	* Action for change color when select on theck box in mange page
	********************************************************************************************************************************/
	$("input[id='ckCheckAll']").bind("click", function()
	{
		var checked_status = this.checked;
		$("input[name='id[]']").each(function() {selectRow(this,checked_status, true)});
		//Select for or header footer checkbox too
		$("input[name='ckCheckAll']").each(function()
		{
			this.checked = checked_status;
		});
	});
	$("input[name='id[]']").bind("click", function()
	{
		var checked_status = !this.checked; //Because the tr checked too
		//alert(checked_status);
		selectRow(this, checked_status, true);
		
	});
	function selectRow(target, checked_status, isChecked)
	{
		if(isChecked)
		{
			$(target).attr("checked",checked_status);
		}
		//target.checked = checked_status;
		
		//change the color of tr
		if(checked_status)
		{
			$(target).parent().parent().addClass("selected");
		}
		else
		{
			$(target).parent().parent().removeClass("selected");
		}
	}
	/********************************************************************************************************************************
	* End of Action for change color when select on theck box in mange page
	********************************************************************************************************************************/
	/********************************************************************************************************************************
	* Hover row when mouse over in manage page
	********************************************************************************************************************************/
	$(".manage tbody tr").hover(manageRowHover, manageRowOut);
	function manageRowHover()
	{
		//$(this).addClass("hover");
		var actionRow = $(this).find("div[class='row_action']");
		//alert("Hover");
		/*
		if(!$(this).find("div[class='row_action']").size())
		{
			var updateLink = "<a href=\"#\">Edit</a>";
			var deleteLink = "<a href=\"#\">Delete</a>";
			var quickUpdate = "<a href=\"#\">Quick Edit</a>";
			var actionHtml = "<div class=\"row_action\">" + updateLink + " | " + deleteLink + " | " + quickUpdate + "<div>";
			nameRow.append(actionHtml);
			
		}
		*/
	}
	function manageRowOut()
	{
		$(this).removeClass("hover");
		
		/*
		if($(this).find("div[class='row_action']").size())
		{
			$(this).find("div[class='row_action']").remove();
		}
		*/
		//document.write('Mouse out');
	}
	
	
	$(".manage tbody tr td table, .manage tbody tr td a, .manage tbody tr td input[type=button]").bind("click", function(event)
	{
		event.stopPropagation();
	});
	
	$(".manage tbody tr").bind("click", function()
	{
		var checkbox = $(this).find("input[name='id[]']");
		var isChecked = !checkbox.attr("checked");
		//alert(isChecked);
		//checkbox.attr("checked",isChecked);
		selectRow(checkbox, isChecked, true);
	});
	/********************************************************************************************************************************
	* End of Hover row when mouse over in manage page
	********************************************************************************************************************************/	
	toggleMenu("options");
	toggleMenu("seoinfo");
	initUI();
	
	initControl();

}
/********************************************************************************************************************************
* 
********************************************************************************************************************************/
function initUI()
{
	try
	{
	$("#PublishedDate").datepicker();
	$("#ExpireDate").datepicker();
	//$('#PublishedDate').datepicker('option', {dateFormat: 'dd/mm/yy'}); for formating
	}
	catch(e){}
	displayDialog();
}
/********************************************************************************************************************************
* 
********************************************************************************************************************************/
function displayDialog()
{
	
	$("a[name='show_dialog']").click
	(
		function()
		{
			var loadLink = $(this).attr("title") + "&from=ajax";
			var loadControl = $(this).attr("href");
			var title = $(loadControl).attr("title");
			$(loadControl).load(loadLink).dialog({
				modal: true,
				bgiframe: true,
				autoOpen: false,
				height: 500,
				width: 500,
				draggable: true,
				resizeable: true
		 	}); 
			$(loadControl).dialog("open");
			return false;
		}
	);

	
}

/********************************************************************************************************************************
* 
********************************************************************************************************************************/

function toggleObject(objectName, isShow, appendHide, appendShow)
{
	if(isShow)
	{
		$("#" + objectName).show(300);
		if((appendHide != null) && (appendHide != ""))
		{
			$("#" + objectName + appendHide).hide();
		}
		if((appendShow != null) && (appendShow != ""))
		{
			$("#" + objectName + appendShow).show();
		}
	}
	else
	{
		$("#" + objectName).hide(300);
	}
	return false;
}
/********************************************************************************************************************************
* 
********************************************************************************************************************************/

function appendObject(aName, objectName, isShow)
{
	if(isShow)
	{	
		$("#" + aName).after($("#" + objectName));
		$("#" + objectName).show(300);
	}
	else
	{
		$("#" + objectName).hide(300);
	}
	return false;
}



/********************************************************************************************************************************
* 
********************************************************************************************************************************/

function toggleMenu(objectName)
{
	$("#" + objectName + "_detail").css("display","none");
	$("#" + objectName).toggle(
	function()
	{
		$("#" + objectName + "_detail").show(300);
		$("#" + objectName + " a").css('background','url(../../../includes/images/left_arrow.gif) no-repeat right');
	}, 
	function()
	{	
		$("#" + objectName + "_detail").hide(300);
		$("#" + objectName + " a").css('background','url(../../../includes/images/down_arrow.gif) no-repeat right');
	});
	return false;
}

/********************************************************************************************************************************
* 
********************************************************************************************************************************/
function initControl()
{
	//init for upload files
	$("input[type='file']").each(function()
	{
		var btnUpload=$(this);
		var uploadControlName = btnUpload.attr("name");
		var fileNameControl = uploadControlName.replace(/_Control/gi,"");
		var responseControl = fileNameControl + "_Response";
		var status=$("#" + responseControl);
		var oldFileName = $("#" + fileNameControl).val();
		var actionUrl = window.location + "&from=ajax&uploadfile=1&controlname=" + uploadControlName + "&oldfilename=" + oldFileName + "&responsename=" + responseControl;
		//alert(actionUrl);
		new AjaxUpload(btnUpload, {
			action: actionUrl,
			name: uploadControlName,
			onSubmit: function(file, ext)
			{
				//get the validation extension
				var acceptExtension = "";
				$(btnUpload).parent().find("input[type='hidden']").each(function()
				{
					if($(this).attr("id").indexOf("." + fileNameControl) >= 0)
					{
						acceptExtension = $(this).val();
					}
				});
				//get the validation message
				var validationMessage = "";
				if((acceptExtension != "") && (acceptExtension != ""))
				{
					$(btnUpload).parent().find("span").each(function()
					{
						if($(this).attr("id").indexOf("." + fileNameControl) >= 0)
						{
							validationMessage = $(this).attr("title");
						}
					});
					if(!checkFile(file, acceptExtension))
					{
						alert(validationMessage);
						//status.html("<div class=\"error\">" + validationMessage + "</div>");
						return false;
					}
				}
				status.text('Uploading...');
			},
			onComplete: function(file, response)
			{
				status.text("");
				//alert(response);
				$('Field',response).each(function(i)
				{
					var name = $(this).attr("name");
					var value = $(this).text();
					//alert(name + value);
					switch(name)
					{
						case "filename":
							$("#" + fileNameControl).val(value);
							break;
						case "response":
							status.html(value);
							break;
					}
					
				});
				initControl();
			}
		});
	});
	//End of init for upload files

}
/*
	End of Preload functions
*/
/*
	AJAX functions
*/

/********************************************************************************************************************************
* Function Name: ajaxSubmit
* Description: Perform a submit form using ajax
********************************************************************************************************************************/
function ajaxSubmitXML(formName, buttonName, validationGroup, waitingMessage, websiteUrl)
{
	
	var validate = validateForm(validationGroup);
	
	if(validate)
	{
		//Do ajax submit
		var form = $('#' + formName);
		var actionUrl = form.attr("action");
		//alert(form.serialize());
		var postData = form.serialize();
		postData = postData + "&" + buttonName + "=submit"
		
		if(actionUrl.indexOf("?") >= 0)
		{
			actionUrl = actionUrl + "&from=ajax";
		}
		else
		{
			actionUrl = actionUrl + "?from=ajax";
		}
		
		$.ajax(
		{
			type: "POST",
			url: actionUrl,
			data: postData,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
				$("#PageMessage").html(waitingIdicator);
			},
			dataType: "xml",
			success: function(data)
			{
				
				$('Field',data).each(function(i)
				{
					var name = $(this).attr("name");
					var value = $(this).text();
					if(($('#' + name).is('input')) || ($('#' + name).is('textarea')) || ($('#' + name).is('select')) || ($('#' + name).is('input')))
					{
						$('#' + name).val(value.toString());
					}
					else
					{
						
						$('#' + name).html(value);
					}
					$('#' + name + "_View").html(value);
				});
				
				//Remove the waiting Idicator
				//$("#PageMessage").html("");
				 
				//alert(data.PageMessage);
			},
			error: displayError 
		});
		
	}
	return false;
}

/********************************************************************************************************************************
* Function Name: ajaxSubmit
* Description: Perform a submit form using ajax
********************************************************************************************************************************/
function ajaxSubmitJSON(formName, buttonName, validationGroup, waitingMessage, websiteUrl)
{
	var validate = validateForm(validationGroup);
	if(validate)
	{
		//Do ajax submit
		var form = $('#' + formName);
		var actionUrl = form.attr("action");
		//alert(form.serialize());
		var postData = form.serialize();
		postData = postData + "&" + buttonName + "=submit"
		if(actionUrl.indexOf("?") >= 0)
		{
			actionUrl = actionUrl + "&from=ajax";
		}
		else
		{
			actionUrl = actionUrl + "?from=ajax";
		}
		
		$.ajax(
		{
			type: "POST",
			url: actionUrl,
			data: postData,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
				$("#PageMessage").html(waitingIdicator);
				if(x && x.overrideMimeType) 
				{
					x.overrideMimeType("application/j-son;charset=UTF-8");
				}
			},
			dataType: "json",
			success: function(data)
			{
				
				//Remove the waiting Idicator
				$("#PageMessage").html("");
				$.each(data, function(entryIndex, entry) 
				{
					//alert('#' + entryIndex + "|" + ($('#' + entryIndex).is('select')) + "|" + entry);
					if(($('#' + entryIndex).is('input')) || ($('#' + entryIndex).is('textarea')) || ($('#' + entryIndex).is('select')) || ($('#' + entryIndex).is('input')))
					{
						$('#' + entryIndex).val(entry.toString());
					}
					else
					{
						
						$('#' + entryIndex).html(entry);
					}
					$('#' + entryIndex + "_View").html(entry);
				});
				//alert(data.PageMessage);
			},
			error: displayError 
		});
		
	}
	return false;
}

/********************************************************************************************************************************
* Function Name: ajaxSubmit
* Description: Perform a submit form using ajax
********************************************************************************************************************************/

function ajaxSubmitDiv(divName, buttonName, validationGroup, responseObjectName, waitingObjectName, displayRow, actionUrl, waitingMessage, websiteUrl)
{
	var validate = validateForm(validationGroup);
	if(validate)
	{
		//Do ajax submit
		if(responseObjectName == "")
		{
			responseObjectName = "l_content";
		}
		if(waitingObjectName == "")
		{
			waitingObjectName = "PageMessage";
		}
		var appendDisplayRow = "";
		if(displayRow > 0)
		{
			appendDisplayRow = "&displayrow=" + displayRow;
		}
		var postData = $("#" + divName + " *").serialize();
		//alert(postData);
		postData = postData + "&" + buttonName + "=submit"
		actionUrl = actionUrl + appendDisplayRow + "&from=ajax";
		$.ajax(
		{
			type: "POST",
			url: actionUrl,
			data: postData,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<div class=\"waitingmessage\" name=\"waitingMessage\"><img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage + "</div>";
				$("#" + waitingObjectName).prepend(waitingIdicator);
			},
			dataType: "html",
			success: function(data)
			{
				//return false;
				//Remove the waiting Idicator
				$("#" + waitingObjectName).html("");
				
				$("#" + responseObjectName).html(data);
				loadPage();
				//alert(data.PageMessage);
			},
			error: displayError 
		});
		
	}
	return false;
}
/********************************************************************************************************************************
* Function Name: ajaxSubmit
* Description: Perform a submit form using ajax
********************************************************************************************************************************/

function ajaxSubmitDivXML(divName, buttonName, validationGroup, actionUrl, isResetForm, waitingMessage, websiteUrl, displayType, displayErrorType)
{
	if(displayErrorType == null)
	{
		displayErrorType = 1;
	}
	var validate = validateForm(validationGroup, displayErrorType);
	if(displayType == null)
	{
		displayType = 1;
	}
	if(validate)
	{
		//Do ajax submit
		var postData = $("#" + divName + " *").serialize();
		//alert(postData);
		postData = postData + "&" + buttonName + "=submit";
		if(actionUrl.indexOf("?") >= 0)
		{
			actionUrl = actionUrl + "&from=ajax";
		}
		else
		{
			actionUrl = actionUrl + "?from=ajax";
		}
		
		$.ajax(
		{
			type: "POST",
			url: actionUrl,
			data: postData,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<div class=\"waitingmessage\" name=\"waitingMessage\"><img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage + "</div>";
				switch(displayType)
				{
					case 1:
						$("#" + divName).prepend(waitingIdicator);
						break;
					case 2:
						$("#" + divName).html(waitingIdicator);
						break;
				}
			},
			dataType: "xml",
			success: function(data)
			{
				//$("#" + waitingObjectName).html("");
				$("#" + divName).parent().find('.waitingmessage').remove();
				$('Field',data).each(function(i)
				{
					var name = $(this).attr("name");
					var value = $(this).text();
					if(($('#' + name).is('input')) || ($('#' + name).is('textarea')) || ($('#' + name).is('select')) || ($('#' + name).is('input')))
					{
						$('#' + name).val(value.toString());
					}
					else
					{
						
						$('#' + name).html(value);
					}
					
					if(isResetForm)
					{
						$("#" + divName).find("input[type=text]").each(function()
						{
							$(this).val("");
						});
					}
				});
			},
			error: displayError 
		});
		
	}
	return false;
}
/********************************************************************************************************************************
* Function Name: ajaxDeleteItem
* Description: delete 1 item
********************************************************************************************************************************/
function ajaxActionItem(confirmMessage, waitingMessage, strDeleteUrl, websiteUrl)
{
	if(confirm(confirmMessage))	
	{
		var actionUrl = strDeleteUrl;
		if(actionUrl.indexOf("?") >= 0)
		{
			actionUrl = actionUrl + "&from=ajax";
		}
		else
		{
			actionUrl = actionUrl + "?from=ajax";
		}
		actionUrl = actionUrl + "&confirm=yes";
		
		$.ajax(
		{
			type: "GET",
			url: actionUrl,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
				$("#PageMessage").html(waitingIdicator);
			},
			dataType: "html",
			success: function(data)
			{
				//Remove the waiting Idicator
				$("#PageMessage").html("");
				
				$("#l_content").html(data);
				loadPage();
				//alert(data.PageMessage);
			},
			error: displayError 
		});
	}
	return false;
}
/********************************************************************************************************************************
* Function Name: ajaxLink
* Description: 
********************************************************************************************************************************/
function ajaxView(containerObject, strUrl, waitingMessage, websiteUrl, isDisplayCancel, cancelTitle)
{
	var actionUrl = strUrl;
	if(actionUrl.indexOf("?") >= 0)
		{
			actionUrl = actionUrl + "&from=ajax";
		}
		else
		{
			actionUrl = actionUrl + "?from=ajax";
		}
	//alert(strUrl);
	
	$.ajax(
	{
		type: "GET",
		url: actionUrl,
		timeout: 75000, beforeSend: function(x) 
		{
			var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
			$("#" + containerObject).html(waitingIdicator);
		},
		dataType: "html",
		success: function(data)
		{
			$("#" + containerObject).hide();
			$("#" + containerObject).show(300);
			//Remove the waiting Idicator
			if(isDisplayCancel)
			{
				data = data + "<div><input type=\"button\" value=\"" + cancelTitle + "\" onclick=\"toggleObject('" + containerObject + "', false);\" /><div>";
			}
			$("#" + containerObject).html(data);
			loadPage();
			//alert(data.PageMessage);
		},
		error: displayError 
	});
	return false;
}
/********************************************************************************************************************************
* Function Name: ajaxChangeCombo
* Description: 
********************************************************************************************************************************/
function ajaxChangeCombo(target, urlparams, strUrl, waitingMessage, websiteUrl)
{
	$.each(urlparams, function(queryKey, queryValue) 
	{
		if(strUrl.indexOf("&" + queryKey + "=") > 0)
		{
			strUrl = strUrl.replace("&" + queryKey + "=" + queryValue, "&" + queryKey + "=" + target.value);
		}
		else
		{
			strUrl = strUrl + "&" + queryKey + "=" + target.value
		}
	});
	ajaxLink(strUrl, waitingMessage, websiteUrl);
}
/********************************************************************************************************************************
* Function Name: ajaxChangeCombo
* Description: 
********************************************************************************************************************************/
function ajaxControlAction(target, urlparams, strUrl, waitingMessage, websiteUrl, responseObjectName, waitingObjectName)
{
	$.each(urlparams, function(queryKey, queryValue) 
	{
		if(strUrl.indexOf("&" + queryKey + "=") > 0)
		{
			strUrl = strUrl.replace("&" + queryKey + "=" + queryValue, "&" + queryKey + "=" + target.value);
		}
		else
		{
			strUrl = strUrl + "&" + queryKey + "=" + target.value
		}
	});
	ajaxLinkControl(strUrl, waitingMessage, websiteUrl, responseObjectName, waitingObjectName);
}
/********************************************************************************************************************************
* Function Name: ajaxLink
* Description: 
********************************************************************************************************************************/
function ajaxLinkControl(strUrl, waitingMessage, websiteUrl, responseObjectName, waitingObjectName)
{
	var actionUrl = strUrl;
	if(actionUrl.indexOf("?") >= 0)
	{
		actionUrl = actionUrl + "&from=ajaxcontrol";
	}
	else
	{
		actionUrl = actionUrl + "?from=ajaxcontrol";
	}
	//Do ajax submit
	if((responseObjectName == null) || (responseObjectName == ""))
	{
		responseObjectName = "l_content";
	}
	if((waitingObjectName == "") || (waitingObjectName == null))
	{
		waitingObjectName = "PageMessage";
	}
	$.ajax(
	{
		type: "GET",
		url: actionUrl,
		timeout: 75000, beforeSend: function(x) 
		{
			var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
			$("#" + waitingObjectName).html(waitingIdicator);
		},
		dataType: "html",
		success: function(data)
		{
			//Remove the waiting Idicator
			$("#" + waitingObjectName).html("");
			$("#" + responseObjectName).html(data);
			loadPage();
			//alert(data.PageMessage);
		},
		error: displayError 
	});
	return false;
}

/********************************************************************************************************************************
* Function Name: ajaxLink
* Description: 
********************************************************************************************************************************/
function ajaxLink(strUrl, waitingMessage, websiteUrl, responseObjectName, waitingObjectName)
{
	var actionUrl = strUrl;
	if(actionUrl.indexOf("?") >= 0)
	{
		actionUrl = actionUrl + "&from=ajax";
	}
	else
	{
		actionUrl = actionUrl + "?from=ajax";
	}
	//Do ajax submit
	if((responseObjectName == null) || (responseObjectName == ""))
	{
		responseObjectName = "l_content";
	}
	if((waitingObjectName == "") || (waitingObjectName == null))
	{
		waitingObjectName = "PageMessage";
	}
	$.ajax(
	{
		type: "GET",
		url: actionUrl,
		timeout: 75000, beforeSend: function(x) 
		{
			var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
			$("#" + waitingObjectName).html(waitingIdicator);
		},
		dataType: "html",
		success: function(data)
		{
			//Remove the waiting Idicator
			$("#" + waitingObjectName).html("");
			$("#" + responseObjectName).html(data);
			loadPage();
			//alert(data.PageMessage);
		},
		error: displayError 
	});
	return false;
}
/********************************************************************************************************************************
* Function Name: ajaxLinkXML
* Description: Perform an ajax link and return as xml format
********************************************************************************************************************************/
function ajaxLinkXML(strUrl, waitingMessage, websiteUrl, confirmMessage, waitingObjectName)
{
	var actionUrl = strUrl;
	if(actionUrl.indexOf("?") >= 0)
	{
		actionUrl = actionUrl + "&from=ajax";
	}
	else
	{
		actionUrl = actionUrl + "?from=ajax";
	}
	if((waitingObjectName == null) || (waitingObjectName == ""))
	{
		waitingObjectName = "PageMessage";
	}
	var bConfirm = true;
	if(confirmMessage != "")
	{
		bConfirm = confirm(confirmMessage);
	}
	if(bConfirm)
	{
		$.ajax(
		{
			type: "GET",
			url: actionUrl,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
				$("#" + waitingObjectName).html(waitingIdicator);
			},
			dataType: "xml",
			success: function(data)
			{
				$("#" + waitingObjectName).html("");
				$('Field',data).each(function(i)
				{
					var name = $(this).attr("name");
					var value = $(this).text();
					if(($('#' + name).is('input')) || ($('#' + name).is('textarea')) || ($('#' + name).is('select')) || ($('#' + name).is('input')))
					{
						$('#' + name).val(value.toString());
					}
					else
					{
						$('#' + name).html(value);
						$('#' + name + "_View").html(value);
						
					}
				});
				
				//Remove the waiting Idicator
				//$("#PageMessage").html("");
				 
				//alert(data.PageMessage);
			},
			error: displayError 
		});
	}
	return false;
}

/********************************************************************************************************************************
* Function Name: ajaxActionItemAll
* Description: delete item base on checkbox
********************************************************************************************************************************/
function ajaxActionItemAll(formName,  buttonName, controlName, action, confirmMessage, notSelectMessage, waitingMessage, websiteUrl)
{
	var count = 0;
	$("input[name='id[]']").each(function() 
	{
		if($(this).attr("checked"))
		{
			count++;
		}
	});
	confirmMessage = confirmMessage.replace("{count}", count);
	if(count > 0)
	{
		if(confirm(confirmMessage))	
		{
			var form = $('#' + formName);
			var actionUrl = form.attr("action");
			actionUrl = actionUrl + "&action=" + action;
			if(actionUrl.indexOf("?") >= 0)
			{
				actionUrl = actionUrl + "&from=ajax";
			}
			else
			{
				actionUrl = actionUrl + "?from=ajax";
			}
			actionUrl = actionUrl + "&confirm=yes";
			var postData = form.serialize();
			postData = postData + "&" + buttonName + "=submit"
			var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
			$("#PageMessage").html(waitingIdicator);
			$.ajax(
			{
				type: "POST",
				url: actionUrl,
				timeout: 75000, beforeSend: function(x) 
				{
					var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
					$("#PageMessage").html(waitingIdicator);
				},
				data: postData,
				dataType: "html",
				success: function(data)
				{
					//Remove the waiting Idicator
					$("#PageMessage").html("");
					$("#l_content").html(data);
					loadPage();
					//alert(data.PageMessage);
				},
				error: displayError 
			});
		}
	}
	else
	{
		alert(notSelectMessage);
	}
	return false;
}
/********************************************************************************************************************************
* Function Name: changeAction
* Description: change action
********************************************************************************************************************************/
function changeAction(target, formName,  arrConfirmMessage, arrNotSelectMessage, arrWaitingMessage, websiteUrl)
{
	var count = 0;
	$("input[name='id[]']").each(function() 
	{
		if($(this).attr("checked"))
		{
			count++;
		}
	});
	var selectedIndex = target.selectedIndex;
	confirmMessage = arrConfirmMessage[selectedIndex];
	notSelectMessage = arrNotSelectMessage[selectedIndex];
	waitingMessage = arrNotSelectMessage[arrWaitingMessage];
	
	confirmMessage = confirmMessage.replace("{count}", count);
	var buttonName = "btn" + target.value;
	var action = target.value.toLowerCase();
	if(count > 0)
	{
		var bIsConfirm = true;
		if(confirmMessage != "")
		{
			bIsConfirm = confirm(confirmMessage);
		}
		if(bIsConfirm)	
		{
			switch(action)
			{
				case "":
					$("input[name='id[]']").each(function() 
					{
						if($(this).attr("checked"))
						{
							toggleObject('quickEdit_' + $(this).attr("value"), false, "", " table tfoot");
						}
					});
					$('#btnSaveAll').hide();
					 
					break;
				case "quickedit":
					$("input[name='id[]']").each(function() 
					{
						if($(this).attr("checked"))
						{
							toggleObject('quickEdit_' + $(this).attr("value"), true, " table tfoot");
						}
					});
					 $('#btnSaveAll').show();
					break;
				default:
						var form = $('#' + formName);
						var actionUrl = form.attr("action");
						actionUrl = actionUrl + "&action=" + action;
						if(actionUrl.indexOf("?") >= 0)
						{
							actionUrl = actionUrl + "&from=ajax";
						}
						else
						{
							actionUrl = actionUrl + "?from=ajax";
						}
						actionUrl = actionUrl + "&confirm=yes";
						var postData = form.serialize();
						postData = postData + "&" + buttonName + "=submit"
						var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
						$("#PageMessage").html(waitingIdicator);
						$.ajax(
						{
							type: "POST",
							url: actionUrl,
							timeout: 75000, beforeSend: function(x) 
							{
								var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
								$("#PageMessage").html(waitingIdicator);
							},
							data: postData,
							dataType: "html",
							success: function(data)
							{
								//Remove the waiting Idicator
								$("#PageMessage").html("");
								$("#l_content").html(data);
								loadPage();
								//alert(data.PageMessage);
							},
							error: displayError 
						});
					break;
			}

		}
		
	}
	else
	{
		alert(notSelectMessage);
	}
	target.selectedIndex = 0;
	return false;
}
/********************************************************************************************************************************
* Function Name: ajaxSubmit
* Description: perform submit form using ajax & display html
********************************************************************************************************************************/
function ajaxSubmit(formName,  buttonName, controlName, validationGroup, waitingMessage, completeMessage, websiteUrl, urlparams)
{
	var validate = true;
	if(validationGroup != '')
	{
		validate = validateForm(validationGroup);
	}
	if(validate)
	{
		var form = $('#' + formName);
		var actionUrl = form.attr("action");
		if(actionUrl.indexOf("?") >= 0)
		{
			actionUrl = actionUrl + "&from=ajax";
		}
		else
		{
			actionUrl = actionUrl + "?from=ajax";
		}
		
		actionUrl = addToUrl(actionUrl, urlparams);
		var postData = form.serialize();
		postData = postData + "&" + buttonName + "=submit"
		
		$.ajax(
		{
			type: "POST",
			url: actionUrl,
			timeout: 75000, beforeSend: function(x) 
			{
				var waitingIdicator = "<img src=\"" + websiteUrl + "includes/images/ajax-loader.gif\" align=\"left\" hspace=\"6\" />" + waitingMessage;
				$("#PageMessage").html(waitingIdicator);
			},
			data: postData,
			dataType: "html",
			success: function(data)
			{
				//Remove the waiting Idicator
				$("#PageMessage").html("<div class=\"messagebox\">" + completeMessage + "</div>");
				$("#l_content").html(data);
				loadPage();
				//alert(data.PageMessage);
			},
			error: displayError 
		});
	}
	return false;
}
/********************************************************************************************************************************
* Function Name: displayError
* Description: handle ajax error
********************************************************************************************************************************/
function displayError(XMLHttpRequest, textStatus, errorThrown) 
{
	try 
	{
		alert(XMLHttpRequest.responseText);
		alert("AJAX error: error Type: " + textStatus + " \nError Description: " + errorThrown);
		if (textStatus == "timeout") 
		{
			alert("Time out");
		}
	}
	catch (e) 
	{
	}
} 
/*
	End of AJAX functions
*/
/********************************************************************************************************************************
* Function Name: redirect
* Description: redirect to an strUrl
********************************************************************************************************************************/

function redirect(strUrl, urlparams)
{
	strUrl = addToUrl(strUrl, urlparams);
	window.location.href = 	strUrl;
	return false;
}
/********************************************************************************************************************************
* Function Name: addToUrl
* Description: add to strUrl with the values from urlparams
********************************************************************************************************************************/


function addToUrl(strUrl, urlparams)
{
	//prepare for url
	if(urlparams != null)
	{
		$.each(urlparams, function(queryKey, queryObjectName) 
		{
			var queryValue = $("#" + queryObjectName).val();
			strUrl = strUrl + "&" + queryKey + "=" + queryValue;
		});
	}
	return strUrl;
}
/********************************************************************************************************************************
* Function Name: gotoNexField
* Description: go to next field when the current field is enough length
********************************************************************************************************************************/
function gotoNexField(target, nextFieldName, maxlength)
{
	var str = target.value;
	str = jQuery.trim(str);
	if(str.length >= maxlength)
	{
		document.getElementById(nextFieldName).focus();
	}
}
/********************************************************************************************************************************
* Function Name: emptyObject
* Description: empty object content
********************************************************************************************************************************/

function emptyObject(objectName)
{
	$("#" + objectName).html("");;
}
