/**
 * AJAX content load
 *
 * @param string pageLink  URL link to load by Ajax
 * @param string pageHtmlContentFrom from loaded URL pageLink get only some element by ID
 * @param string pageHtmlContentTo insert into this element, if is set
 * @param string AjaxCallBackFunction this function will be call with content from DIV FROM or with from Ajax file content result
 */
function loadAjaxContent(pageLink,pageHtmlContentFrom,pageHtmlContentTo,AjaxCallBackFunction,AjaxCallBackFunctionParams, AjaxCallFirstFunction, AjaxCallFirstFunctionParams )
{
	var callback = false;
	var callbackFunction;
	var pageHtmlContentNextFrom = "";
	var pageHtmlContentNextTo = "";
	var tmpPartsFrom;
	var tmpPartsTo;

	if (pageHtmlContentTo == "")
	{
		pageHtmlContentTo = pageHtmlContentFrom;
	}

	if (pageHtmlContentFrom == "")
	{
		pageHtmlContentFrom = "AjaxContentResponse";
	}

	tmpPartsFrom = pageHtmlContentTo.split(" ");
	tmpPartsTo = pageHtmlContentFrom.split(" ");

	if (tmpPartsFrom.length == 2)
	{
		pageHtmlContentFrom = tmpPartsFrom[0];
		pageHtmlContentNextFrom = tmpPartsFrom[1];
	}

	if (tmpPartsTo.length == 2)
	{
		pageHtmlContentTo = tmpPartsTo[0];
		pageHtmlContentNextTo = tmpPartsTo[1];
	}
    
	// test on first call function
	if (AjaxCallFirstFunction != null && AjaxCallFirstFunction != "")
	{
		if (eval("typeof " + AjaxCallFirstFunction + "== 'function'"))
		{
			if (AjaxCallFirstFunctionParams == null || AjaxCallFirstFunctionParams == undefined)
			{
				AjaxCallFirstFunctionParams = "";
			}
			else
			{
				var tmp = AjaxCallFirstFunctionParams.split(',');
				var params = "";
				if (tmp.length)
				{
					for(var i = 0; i<tmp.length; i++)
					{
						params += "'" + tmp[i] + "'";
						if (i < (tmp.length - 1))
						{
							params += ",";
						}
					}
					AjaxCallFirstFunctionParams = params;
				}
			}
			eval(AjaxCallFirstFunction + "(" + AjaxCallFirstFunctionParams + ")");
		}
	}

	// test on callback function
	//AjaxCallBackFunction = AjaxCallBackFunction.replace("()","");
	if (AjaxCallBackFunction != null && AjaxCallBackFunction != "")
	{
		if (eval("typeof " + AjaxCallBackFunction + "== 'function'"))
		{
			callback = true;

			if (AjaxCallBackFunctionParams == null || AjaxCallBackFunctionParams == undefined)
			{
				AjaxCallBackFunctionParams = "";
			}
			else
			{
				var tmp = AjaxCallBackFunctionParams.split(',');
				var params = "";
				if (tmp.length)
				{
					for(var i = 0; i<tmp.length; i++)
					{
						params += "'" + tmp[i] + "'";
						if (i < (tmp.length - 1))
						{
							params += ",";
						}
					}
					AjaxCallBackFunctionParams = params;
				}
			}

		}
	}

	if (pageHtmlContentTo != "" && pageHtmlContentTo != null && $("#" + pageHtmlContentTo).length > 0)
	{
		$("#" + pageHtmlContentTo).addClass("relative");
		$("<span class='ajaxLoader'>&nbsp;</span>").appendTo("#" + pageHtmlContentTo);
	}
   

	$.ajax({
		type: "GET",
		url: pageLink,
		success: function(data){
			if (pageHtmlContentFrom != "" && $("#" + pageHtmlContentFrom, data).length != 0 )
			{
				var images = $('#' + pageHtmlContentTo + ' img', data);
				var imagesCount = images.length;
				var imagesLoaded = 0;

				// html wil be loaded after all TAGs IMG will be loaded
				if (imagesCount > 0)
				{
					$("#" + pageHtmlContentTo + " img", data).each(function(){
						$(this).load(function() {
							imagesLoaded += 1;
							if (imagesLoaded == imagesCount)
							{
								if (callback == true)
								{
									eval(AjaxCallBackFunction + "(" + AjaxCallBackFunctionParams.replace(pageHtmlContentFrom, $("#" + pageHtmlContentFrom, data).html()) + ")");
								}
								else
								{
									if (pageHtmlContentTo != "" && $("#" + pageHtmlContentTo).length > 0)
									{
										$("#" + pageHtmlContentTo).removeClass("relative");
										$("span.ajaxLoader").remove();
										$("#" + pageHtmlContentTo).html( $("#" + pageHtmlContentFrom, data).html() );
									}
									if (pageHtmlContentNextTo != "" && pageHtmlContentNextFrom != "")
									{
										$("#" + pageHtmlContentNextTo).html( $("#" + pageHtmlContentNextFrom, data).html() );
									}
								}
							}
						});
					});
				}
				else
				{
					if (callback == true)
					{
						eval(AjaxCallBackFunction + "(" + AjaxCallBackFunctionParams.replace(pageHtmlContentFrom, $("#" + pageHtmlContentFrom, data).html()) + ")");
					}

					if (pageHtmlContentTo != "" && $("#" + pageHtmlContentTo).length > 0)
					{
						$("#" + pageHtmlContentTo).html( $("#" + pageHtmlContentFrom, data).html() );
						$("#" + pageHtmlContentTo).removeClass("relative");
						$("span.ajaxLoader").remove();
					}
					
					if (pageHtmlContentNextTo != "" && pageHtmlContentNextFrom != "")
					{
						$("#" + pageHtmlContentNextTo).html( $("#" + pageHtmlContentNextFrom, data).html() );
					}
				}
			}
			else
			{
				if (callback == true)
				{
					eval(AjaxCallBackFunction + "(" + AjaxCallBackFunctionParams.replace(pageHtmlContentFrom,data) + ")");
				}

				if (pageHtmlContentTo != "" && $("#" + pageHtmlContentTo).length)
				{
					$("#"+ pageHtmlContentTo).html( data );
				}

				if (pageHtmlContentTo != "" &&  $("#" + pageHtmlContentTo).length > 0)
				{
					$("#" + pageHtmlContentTo).removeClass("relative");
					$("span.ajaxLoader").remove();
				}
			}
		}
	});

}
