/**
  * ajaxova odpoved je OK
  */
var AJAX_OK_STATUS_NUM = 200;

/**
  * data byla nactena
  */
var AJAX_STATE_LOADED = 4;

/**
  * names of all categories
  */
var categoriesNames = new Array("catalog", "articles", "auction", "services", "informations", "actions", "service", "longevity-system");

/**
  * elementy from submenu to rewrite
  */
var rewritableSubmeuLinks = new Array("parent-category-link", "child-category-link");

// musi se nastavit pred zavedenim tohoto souboru
//var webPreffix = "";
//webPreffix = "/mobilpohotovost";

/**
  * vraci posledni index vyskytu cze, je to index pismena za cze 
  */
function getLastIndexOfCze(linkString) {
	return linkString.lastIndexOf("cze") + 4;
}

/**
  * hude category submenu
  */
function hideCategorySubmenu() {
  var categoryContainer = document.getElementById("category-submenu");
  categoryContainer.style.display = "none";
  categoryContainer.innerHTML = "";
  // show comboboxes if exists because of ie6
  var frontPageCat = document.getElementById("front-page-category");
  if(frontPageCat != null)
  	frontPageCat.style.display = "block";
}

/**
  * scroll to position of categoies pop-up windows
  */
function ScrollToCategory() {
  window.scrollTo(0,320);
}


function rewriteSubemenuCloseButton() {
    // rewrite close-button link
    var closeButton = document.getElementById("close-categoty-button");
	if(closeButton != null) {
		closeButton.href = "javascript:hideCategorySubmenu();";
	}
}
/**
  * rewrites all submenu links witch points to subcategory
  */
function rewriteSubmenuLinks(rewriteFunction) {
	// rewrite sublenu links witch are for rewrite
	var links = document.links;
	for(i=0; i < links.length; i++) {
	  	var link = links[i];
	  	var linkClass = link.className;
	   	if(rewritableSubmeuLinks[0] == linkClass ||
	   		rewritableSubmeuLinks[1] == linkClass) {
	   		rewriteFunction(link);
	   	}
	}
}

/**
  * prepise vsechny linky na subkategorie na normalni strance
  */
function rewriteSubcategoriesLinks() {
	// rewrite sublenu links witch are for rewrite
	var links = document.links;
	for(i=0; i < links.length; i++) {
	  	var link = links[i];
	  	var linkClass = link.className;
	   	if("normal-page-parent-category-link" == linkClass) {
	   		rewriteNormalPageLink(link);
	   	}
	}
}

/**
  * zobrazi submenu pro nahravani
  */
function writeLoadingSubmenu() {
	 var tagToReplace = document.getElementById("category-submenu");
    tagToReplace.innerHTML = "<div id=\"category-container\"><div id=\"category\"><div id=\"category-head\">"+
        "<!-- <div id=\"close-categoty-button-shadow\"><a href=\"javascript:hideCategorySubmenu();\" id=\"close-categoty-button\">ZAVRIT</a></div> -->"+
        "<h2></h2></div><!-- category-head -->"+
        "<!-- podkategorie  --><div id=\"category-subcategories\">"+
        "</div><div id=\"category-body\" style=\"text-align:center\">"+
        "<img src=\""+ webPreffix +"/images/loading.gif\" alt=\"nacitani\" width=\"126\" height=\"22\" style=\"margin:80px auto\" />"+
        "</div><!-- category-body --></div></div><!-- category-container -->";
}

function processFrontpageSublmenuChange() {
	if (req.readyState == 1) { // opens connection
		writeLoadingSubmenu();
	} else if (req.readyState == AJAX_STATE_LOADED) { // Complete
    if (req.status == AJAX_OK_STATUS_NUM) { // OK response
        // finds where to place response
        var tagToReplace = document.getElementById("category-submenu");
    	tagToReplace.innerHTML = req.responseText;
    	tagToReplace.style.display = 'block';
    	rewriteSubemenuCloseButton();
    	// hide comboboxes because of ie6
    	var frontPageCat = document.getElementById("front-page-category");
    	frontPageCat.style.display = "none";
    	// rewrites all submenu links
 		rewriteSubmenuLinks(rewriteFrontPageLink);
    } else {
      alert("Problem with server response:\n " 
        + req.statusText);
    }
  }
}

function processNormalPageSublmenuChange() {
	if (req.readyState == 1) { // opens connection
		writeLoadingSubmenu();
		// zobrazi okno
		var tagToReplace = document.getElementById("category-submenu");
		tagToReplace.style.display = 'block';
		tagToReplace.style.height = (document.getElementById("page-container").offsetHeight + 100) + "px";
	} else if (req.readyState == AJAX_STATE_LOADED) { // Complete
    	if (req.status == AJAX_OK_STATUS_NUM) { // OK response
        	// finds where to place response
        	var tagToReplace = document.getElementById("category-submenu");
    		tagToReplace.innerHTML = req.responseText;
    		tagToReplace.style.display = 'block';
    		// rewrites all submenu links
    		tagToReplace.style.height = (document.getElementById("page-container").offsetHeight + 100) + "px";
//    	alert(document.getElementById("page-container").offsetHeight + "px");
    		rewriteSubemenuCloseButton();
 			rewriteSubmenuLinks(rewriteNormalPageLink);
 			// resize category-submenu to fill whole page
    	} else {
      		alert("Problem with server response:\n " 
        	+ req.statusText);
    	}
	}
}

/**
  * handles change of frontpage and if neaded call to server
  */
function processFastMenuManufacturerSelectChange(manufacturerCombobox) {
	var modelCombobox = document.getElementById("model-select-combobox");
	modelCombobox.disabled = true;
	if(manufacturerCombobox.value != 0) {
		var optionsArrayUrl = "/akce/pole-options-zbozi-kategorie?id="+manufacturerCombobox.value;
		openAjaxConnection(optionsArrayUrl, processFastMenuSearchSelectCall );
	}
}

/**
  * handles change of frontPage fast select sombobox and if neaded call to server
  */
function processFastMenuModelSelectChange(modelCombobox) {
	if(modelCombobox.value != 0) {
		var manufacturerCombobox = document.getElementById("manufacturer-select-combobox");
		if(modelCombobox.value == "all") { // show all stuff
			if( manufacturerCombobox.value == "1100" ) { // new operators mobiles
				document.location = webPreffix +"/cze/akce/nove-operatorske-telefony";
			} else if( manufacturerCombobox.value == "1101" ) { // used operators mobiles
				document.location = webPreffix +"/cze/akce/mirne-pouzite-operatorske-telefony";
			} else { // normal category
				document.location = webPreffix +"/cze/katalog-zbozi/velky-seznam-zbozi?id=" + manufacturerCombobox.value;
			}
		} else { // show only selected stuff
			document.location = webPreffix +"/cze/katalog-zbozi/zbozi?categoryId=" + manufacturerCombobox.value +"&code="+ modelCombobox.value;
		}
	}
}

/**
  * handles change of frontpage fast search menu
  */
function processFastMenuSearchSelectCall() {
	if (req.readyState == AJAX_STATE_LOADED) { // Complete
    	if (req.status == AJAX_OK_STATUS_NUM) { // OK response
    		// evals incoming optionsArray
        	eval("var optonnsArray = "+ req.responseText );
			var modelCombobox = document.getElementById("model-select-combobox");
			// clears select
			for (var i = modelCombobox.options.length-1; i > 0; i--) {
				modelCombobox.options[i] = null;
			}
			for(var i=0; i < optonnsArray.length; i++) {
				var option = optonnsArray[i];
				if( option.value == "all" ) { // for option "all" show bold
					option.style.fontWeight = "bold";
				}
				modelCombobox.options[i+1] = option;
			}
			modelCombobox.disabled = false;
    	} else {
      		alert("Problem with server response:\n " 
        	+ req.statusText);
    	}
	}
}

/**
  * otevre spojeni na server zajistujici ajax spojeni
  */
function openAjaxConnection(url, processFunction) {    
  //convert the url to a string
  url= webPreffix +"/cze/ajax/" + url;
  //Do the AJAX call
  if (window.XMLHttpRequest) { 
    // Non-IE browsers
    req = new XMLHttpRequest();
    req.onreadystatechange = processFunction;
    try {
          req.open("GET", url, true); 
    } catch (e) {
      alert("Server Communication Problem\n"+e);
    }
    req.send(null);
  } else if (window.ActiveXObject) {
    // IE
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = processFunction;
      req.open("GET", url, true);
      req.send();
    }
  }
}

/**
  * prepise, i odkaz na uvodni strance
  */
function rewriteFrontPageLink(link) {
	var ajaxLinkStartIndex = getLastIndexOfCze( link.href );
	var linkContent = link.href.slice(ajaxLinkStartIndex);
//    	alert(linkContent);
    link.href = "javascript:openAjaxConnection(\""+ linkContent +"\", processFrontpageSublmenuChange);";
}

/**
  * prepise odkazy na normalni strance
  */
function rewriteNormalPageLink(link) {
	// prepise odkazy v menu
	var ajaxLinkStartIndex = getLastIndexOfCze( link.href );
	var linkContent = link.href.slice(ajaxLinkStartIndex);
//    	alert(linkContent);
    link.href = "javascript:openAjaxConnection(\""+ linkContent +"\", processNormalPageSublmenuChange);";
}

/**
  * rewrates all menu links for javaScript category showing and hidding
  */
function rewriteMenuLinks(rewriteLinkFunction) {
    // rewrite logo link to javascript
//	document.getElementById("logo").href = "javascript:hideCategorySubmenu();";
	// rewrite menu links
    for(i=0; i < categoriesNames.length; i++) {
    	var categoryLink = document.getElementById(categoriesNames[i] + "-button");
    	rewriteLinkFunction(categoryLink);
    }
    // rewrite close button
    rewriteSubemenuCloseButton();
}

/**
  * prepise odkaz do menu v pravem sloupci nahore na uvodni strance
  */
function rewriteRightMenuLink() {
	var rightMenuLink = document.getElementById("first-header-link");
	var ajaxLinkStartIndex = getLastIndexOfCze( rightMenuLink.href );
	var linkContent = rightMenuLink.href.slice( ajaxLinkStartIndex );
//	alert(linkContent);
    rightMenuLink.href = "javascript:openAjaxConnection(\""+ linkContent +"\", processNormalPageSublmenuChange);";
}
