/** Global variable, about thinking go to start page 1 with first record.  */
var goToStartPage = false;// global variable sets by filling data for search on form.

var ondrej = function() {
	return {
		util: function() {
			return {
				url: function() {
					return {
						replaceParameter: function(parameter, url) {
							var uerelka = url == null ? window.location.href : url;
							var parameterName = parameter.substring(0, parameter.indexOf('=') + 1);
							var parameterIndex = uerelka.indexOf(parameterName);
							if (parameterIndex != -1) {
								var ampresandIndex = uerelka.lastIndexOf('&');
								if (ampresandIndex > parameterIndex) {
									var newUrl = uerelka.substring(0, parameterIndex);
									var i = parameterIndex;
									while(uerelka.charAt(i) != '&') {
										i++;
									}
									newUrl = newUrl + uerelka.substring(i + 1, uerelka.length); // + 1 lebo ampresand nechcem...
									return ondrej.util.url.appendParameter(parameter, newUrl);
								} else {
									return ondrej.util.url.appendParameter(parameter, uerelka.substring(0, uerelka.indexOf(parameterName)));
								}
							} else {
								return ondrej.util.url.appendParameter(parameter, uerelka);
							}
						},
						appendParameter: function(parameter, url) {
							var uerelka = url == null ? window.location.href : url;
							var questionMark = '?';
							var ampresand = '&';
							var ampresandLastIndex = uerelka.lastIndexOf(ampresand);
							var questionMarkLastIndex = uerelka.lastIndexOf(questionMark);
							if (questionMarkLastIndex == -1) {
								uerelka = uerelka + questionMark + parameter;
							} else {
								if (ampresandLastIndex + 1 == url.length || questionMarkLastIndex + 1 == url.length) {
									ampresand = '';
								}
								uerelka = uerelka + ampresand + parameter;
							}
							return uerelka;
						}
					}
				}(),
				ui: function() {
					return {
						hideElement: function(element) {
							ondrej.util.getElement(element).style.display = 'none';
						},
						showElement: function(element) {
							ondrej.util.getElement(element).style.visibility = 'visible';
							ondrej.util.getElement(element).style.display = 'block';
						},
						setFocus: function(element) {
							ondrej.util.getElement(element).focus();
						},
						reload: function(windowElement, url) {
							if (null != url) {
								windowElement.location.href = url;
							} else {
								windowElement.location.href = windowElement.location.href;
							}
						}
					}
				}(),
				getElement: function(element) {
					if (typeof(element) == 'object') {
						return element;
					} else {
						return document.getElementById(element);
					}
				},
				captcha: function() {
					return {
						regenerate: function(imgElement) {
							var src = imgElement.src;
							var randomIndex = src.indexOf('random=');
							src = src.substring(0, randomIndex + 7);
							imgElement.src = src + Math.random();
						}
					}
				}(),
				checker: function() {
					return {
						maximumContentChecker: function(object, maximum) {
							var availableChars = maximum - object.value.length;
							if (availableChars <= 0) {
								object.value = object.value.substring(0, maximum);
								availableChars = 0;
							}
							return availableChars;
						}
					}
				}()
			}
		}(),
		popup: function() {
			return {
				openWindow: function(src) {
					var popup = ondrej.util.getElement('w_window');
					ondrej.util.ui.showElement('w_veil');
					ondrej.util.ui.showElement('ajax_loader');
					popup.src = src;
					// ondrej.ajax.sendRequest(src, popup);
				},
				closeWindow: function(refresh) {
					var fr = ondrej.util.getElement('w_window');
					fr.src = '';
					ondrej.util.ui.hideElement(fr);
					ondrej.util.ui.hideElement('w_veil');
					if (refresh) {
						if (parent.window && !parent.window.closed) {
							ondrej.util.ui.reload(parent.window);
						}
					}
				}
			}
		}(),
		ajax: function() {
			return {
				getHttpRequest: function() {
					var httpRequest;
					if (typeof window.ActiveXObject != 'undefined') {
						httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
					} else {
						httpRequest = new XMLHttpRequest();
					}
					return httpRequest;
				},
				sendRequest: function(url, target, method) {
					// ondrej.util.ui.showElement('ajax_loader');
					if (target != null) {
						if (typeof(target) != 'function') {
							target.innerHTML = '<img src="/client_light/redesign/images/common/ajax-loader-small.gif" alt="loading">';
						}
					}
					var sendMethod = 'GET';
					var httpRequest = ondrej.ajax.getHttpRequest();
					if (null != method) {
						sendMethod = method;
					}
					if (null != httpRequest) {
						httpRequest.open(sendMethod, url, true);
						httpRequest.onreadystatechange = function () {
							ondrej.ajax.processRequest(httpRequest, target);
						};
						httpRequest.send(null);
					} else {
						throw 'HttpRequest is null for ajax calling...';
					}
				},
				processRequest: function(httpRequest, target) {
					if (httpRequest.readyState == 4) {
						if (( httpRequest.status >= 200 && httpRequest.status < 300 ) || httpRequest.status == 304) {
							if (target != null) {
								if (typeof(target) == 'function') {
									target(httpRequest.responseText);
								} else {
									var targetElement = ondrej.util.getElement(target);
									if (targetElement.tagName.toLowerCase() == 'iframe') {
										targetElement.contentWindow.document.write(httpRequest.responseText);
									} else {
										targetElement.innerHTML = httpRequest.responseText;
									}
									ondrej.util.ui.showElement(targetElement);
								}
							}
							// ondrej.util.ui.hideElement('ajax_loader');
						} else {
							if (target != null)
							{	
								target.innerHTML = '';
							}
							throw 'Error for loading page: status code = ' + httpRequest.status + ', status text: ' + httpRequest.statusText;
						}
					}
				},
				sendRequestImage: function(url, target, method) {
					// ondrej.util.ui.showElement('ajax_loader');
					if (target != null) {
						if (typeof(target) != 'function') {
							target.innerHTML = '<img src="/client_light/redesign/images/common/ajax-loader-small.gif" alt="loading">';
						}
					}
					var sendMethod = 'GET';
					var httpRequest = ondrej.ajax.getHttpRequest();
					if (null != method) {
						sendMethod = method;
					}
					if (null != httpRequest) {
						httpRequest.open(sendMethod, url, true);
						httpRequest.onreadystatechange = function () {
							ondrej.ajax.processRequestImage(httpRequest, target);
						};
						httpRequest.send(null);
					} else {
						throw 'HttpRequest is null for ajax calling...';
					}
				},
				processRequestImage: function(httpRequest, target) {
					if (httpRequest.readyState == 4) {
						if (( httpRequest.status >= 200 && httpRequest.status < 300 ) || httpRequest.status == 304) {
							if (target != null) {
								if (typeof(target) == 'function') {
									target(httpRequest.responseText);
								} else {
									var targetElement = ondrej.util.getElement(target);
									if (targetElement.tagName.toLowerCase() == 'iframe') {
										targetElement.contentWindow.document.write(httpRequest.responseText);
									} else {
										targetElement.innerHTML = httpRequest.responseText;
									}
									ondrej.util.ui.showElement(targetElement);
								}
							}
						} else {
							if (target != null)
							{	
								target.innerHTML = '<img src="/client_light/redesign/images/common/blank.gif" alt="loading">';
							}
							throw 'Error for loading page: status code = ' + httpRequest.status + ', status text: ' + httpRequest.statusText;
						}
					}
				}
			}
		}()
	}
}();

function getLogoImage(width, height, id, imageName)
{
	if (document.getElementById(id) != null)
	{	
		ondrej.ajax.sendRequestImage('../ImageLoadingServlet?width='+width+'&height='+height+'&imageURL='+imageName, document.getElementById(id));
	}
}

/**
 * Function sets position about page browser window. Only if is not set global variable  goToStartPage = true;
 * @param pageNumberIncrement
 * @return
 */
function incrementPageNumber(pageNumberIncrement)
{
	if(pageNumberIncrement == 0)//If only one time occured, then I go to start page and I not do any increment of next or previous page. 
	{
		goToStartPage = true;
		document.getElementById('pageNumberIncrement').value = 0;
		document.getElementById('recordCount').value = 0; //Set record count = 0 , then I know on business layer, that I need run counted select. 
	}
	
	if(!goToStartPage)
	{
		document.getElementById('pageNumberIncrement').value = pageNumberIncrement;
	}	
}

/**
 * 
 * @param decisionObject 
 * @param objectToDissable
 * @param emptyDissabletObject
 * @return
 */
function setOtherByValueDecisionObject(decisionObject, objectNameToDissable, eraseValueDissabledObject)
{
	var objectToDissable = document.getElementById(objectNameToDissable);
	
	if(decisionObject.value == '')
	{
		if(eraseValueDissabledObject)
		{
			objectToDissable.value = '';
		}	
		objectToDissable.disabled=true;
	}
	else
	{
		objectToDissable.disabled=false;
	}	
}


/** **** Ajax functions   ****/

/**
 * Retrun Ajax object
 */
function GetXmlHttpObject()
{
	if (window.XMLHttpRequest)
  	{
  		// code for IE7+, Firefox, Chrome, Opera, Safari
  		return new XMLHttpRequest();
  	}
  	
	if (window.ActiveXObject)
  	{
  		// code for IE6, IE5
  		return new ActiveXObject("Microsoft.XMLHTTP");
  	}

  	alert ("Your browser does not support XMLHTTP!");

	return null;
}

/**
 * Main method for AJAX Call
 * @param url
 * @param objectToSend
 * @param objectToReplace
 * @return
 */
function ajaxFunction(url, objectToSend, objectToReplace)
{
	var xmlhttp=GetXmlHttpObject();
	
	document.body.style.cursor = "wait"; //Sand-glass 
	
	xmlhttp.onreadystatechange=stateChanged;

	url=url+"?"+objectToSend.name+"="+objectToSend.value;
	
	xmlhttp.open("GET",url,true);
	xmlhttp.send(null);
	
	function stateChanged()
	{
	if (xmlhttp.readyState==4)
	  {
		//alert(xmlhttp.responseText);
		objectToReplace.innerHTML=xmlhttp.responseText;
		document.body.style.cursor = "default"; //Off sand-glass
	  }
	}
}

/** Global variable for save div_content */
var divContentOld=new Array();

/**
 * Function create frame in  div with id = 'div_content' and save child elements in 'div_content' to global variable divContentOld
 * @param url
 * @return
 */
function createGWTFrame(url) 
{
	var divContent = document.getElementById('div_content');

	if(!divContent)//Pretoze redesign. Po redesigne sa zmaze vsetko ohladom 'div_content' lebo je to zastarale. Nahradil ho 'main_content'
	{
		divContent = document.getElementById('main_content');
	}	


	divContentOld=new Array(); //create new object, or erase old values
	
	var i=0;
	//Save and remove child nodes
	while (divContent.hasChildNodes()) 
	{
		divContentOld[i] = divContent.firstChild;
		i++;
		divContent.removeChild(divContent.firstChild);
    }
	
	var ifrm = createGWTIframe(url);	
	divContent.appendChild(ifrm); //Add IFRAME to 'div_content'
}

/**
 * 
 */
function createHelpWindow(helpCode)
{
	var url = "../../help/objednajma.htm#" + ((helpCode == null || helpCode) == "" ? "" : helpCode + ".htm");
	var newWindow = window.open(url, "help", "status=1, toolbar=0, location=0, menubar=0, directories=0, width=800,height=600");
	if (window.focus)
	{
		newWindow.focus();
	}
	return false;
}

/**
 * Function create frame in  div with id = 'div_content' and save child elemnts in 'div_content' to global variable divContentOld
 * @param url
 * @return
 */
function createGWTFrameWithAdvertisement(url) 
{
   	var divMain = document.getElementById('div_main');
    if(divMain == null)//Only if I go from another GWT window to GWT window. Fakt blbost.
    {
       closeGWTFrame();//I close momentary showed GWT and return paint before page. 
       divMain = document.getElementById('div_main');//get before page div id=div_main
    }

	var divContent = document.getElementById('div_content');
	divContentOld=new Array(); //create new object, or erase old values

	var thisChild = divContent.firstChild;

	var i=0;
	divContentOld[i] = thisChild.cloneNode(true);//CLONE
	i++;

	while (thisChild != divContent.lastChild )
	{
		thisChild = thisChild.nextSibling;
		divContentOld[i] = thisChild.cloneNode(true);//CLONE
		i++;
	}

	//Remove child nodes
	while (divMain.hasChildNodes())
	{
		divMain.removeChild(divMain.firstChild);
	}
	
	var ifrm = createGWTIframe(url); 

	divMain.appendChild(ifrm); //Add IFRAME to 'div_content'
}


function createGWTIframe(url)
{
	var ifrm = document.createElement("IFRAME");
	ifrm.setAttribute("src", url + "&gwt.codesvr=localhost:9997"); //Iba ak chces debugovat na lightovom klientovi
	// ifrm.setAttribute("src", url);
	ifrm.style.width = 980+"px";
	ifrm.style.height = 800+"px";
	ifrm.frameBorder="0";
	ifrm.style.border="0px";
	ifrm.scrolling="no";	
	ifrm.marginHeight="0";
	ifrm.marginWidth="0";
	
	return ifrm;
}

/**
 * Function after close GWT window, take browser to previous values 
 * @return
 */
function closeGWTFrame(reloadLightPage) 
{
	if(reloadLightPage)//If reload it is not necessary solve child-s elements.
	{
		divContentOld=new Array(); //erase;
		window.location.reload(false);	
	}
	else
	{
		//alert('closeGWTFrame');
		var divContent = document.getElementById('div_content');
		
		if(!divContent)//Pretoze redesign. Po redesigne sa zmaze vsetko ohladom 'div_content' lebo je to zastarale. Nahradil ho 'main_content'
		{
			divContent = document.getElementById('main_content');
		}
		
		//Remove child nodes
		while (divContent.hasChildNodes()) 
		{
			divContent.removeChild(divContent.firstChild);
	    }
		
		for(j=0;j<divContentOld.length;j++)
		{
			divContent.appendChild(divContentOld[j]);
		}	

		divContentOld=new Array(); //erase;

		menuSelectItem(menuSelectItemOld); //Set previous menu item. 
	}	

} 

/**
 * Hide advertisement if is not null div with advertisement
 */
function hideAdvertisement() 
{
	//alert('hideAdvertisement');
   	var div = document.getElementById('div_right_advertisement');
    if(div != null)//Only if I go from another GWT window to GWT window. Fakt blbost.
    {
    	div.style.visibility = 'hidden';
    }
	
} 

/**
 * Show advertisement if is not null div with advertisement
 */
function showAdvertisement() 
{
	//alert('showAdvertisement');
   	var div = document.getElementById('div_right_advertisement');
    if(div != null)//Only if I go from another GWT window to GWT window. Fakt blbost.
    {
    	div.style.visibility = 'visible';
    }

} 

/** Global variable for old selected item */
var menuSelectItemOld;
/**
 * If I click on light menu for GWT window, I need to select menu item, because in this case there is not 
 * request to server for refresh menu and set the selected menu after reload page. 
 * @param clickedObj Object for selected in menu
 * @return
 */
function menuSelectItem(clickedObj)
{
	if(clickedObj == null)
	{
		return; // No solve
	}	
	
	var li=document.getElementsByTagName("li");

	for(var i=0;i<li.length;i++)
	{	
		if(li[i].className == "selected")
		{
			menuSelectItemOld = li[i];
			li[i].className = "";
			break;
		}	
	}
	clickedObj.className = "selected";
}

