//alert("This is a first load");

var
	isFirst = true,
	is404 = false,
	isRedirect = false,
	urlClear = "",
	urlPrevious = "",
	urlVariables = "",
	titleName = "Excel Connect Ltd",
	titleHomepage = document.getElementsByTagName("title")[0].innerHTML;


function setHyperlink() {
	var
		hyperlink = document.getElementsByTagName("a"),
		hyperlinkEvent;
	for (var i = 0; i < hyperlink.length; i++) {
		var
			hyperlinkCurrent = hyperlink[i].href;
		
		hyperlinkCurrent = hyperlinkCurrent.toString();
		
		if (hyperlink[i].href && hyperlink[i].getAttribute("hyperlink") != "true") {
			if (
				//(hyperlinkCurrent.match(/\.(gif|jpg|jpeg|png|txt)($|\?.*|#.*)/) == null)
				(hyperlinkCurrent.match(/(\.html|\/)($|\?.*|#.*)/) != null)
			) {
				if (!hyperlink[i].onclick) {
					hyperlink[i].setAttribute("hyperlink", "false");
					hyperlink[i].onclick = function() {
						//alert("setHyperlink => setContent");
						setContent(this.href);
						return false;
					};
				} else {
					if (hyperlink[i].getAttribute("hyperlink") == null || hyperlink[i].getAttribute("hyperlink") == "true") {
						hyperlinkEvent = hyperlink[i].onclick;
						hyperlink[i].onclick = function() {
							//alert("setHyperlink => setContent");
							setContent(this.href);
							hyperlinkEvent();
							return false;
						};
					}
				}
			} else {
				hyperlink[i].setAttribute("target", "_blank");
			}
		}
	}
	
	var
		area = document.getElementsByTagName("area"),
		areaEvent;
	for (var i = 0; i < area.length; i++) {
		if (area[i].href) {
			if (!area[i].onclick) {
				area[i].setAttribute("hyperlink", "false");
				area[i].onclick = function() {
					setContent(this.href);
					return false;
				};
			} else {
				if (area[i].getAttribute("hyperlink") == null || area[i].getAttribute("hyperlink") == "true") {
					areaEvent = area[i].onclick;
					area[i].onclick = function() {
						setContent(this.href);
            	        areaEvent();
						return false;
					};
				}
			}
		}
	}
}


function getXMLHttp() {
	var xmlhttp;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			xmlhttp = false;
		}
	}
	if (!xmlhttp && typeof XMLHttpRequest != "undefined") {
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}


var
	replaceTimer = false,
	replaceInterval = 1,
	replaceOpacity = 0;

function replaceBefore() {
	if (replaceOpacity == 100) {
		getElement("pageFade").style.opacity = "1.00";
		window.clearInterval(replaceTimer);
		
		getElement("pageBody").className = "block";
		getElement("pageReplace").className = "none";
		
		coordinatesBody = getCoordinates("pageBody");
		getElement("pageFade").style.width = coordinatesBody.width + "px";
		getElement("pageFade").style.height = coordinatesBody.height + "px";
		replaceTimer = window.setInterval("replaceAfter()", replaceInterval);
	} else {
		replaceOpacity = replaceOpacity + 10;
		if (document.all) {
			getElement("pageFade").filters[0].opacity = replaceOpacity/100;
		} else {
			getElement("pageFade").style.opacity = replaceOpacity/100;
		}
	}
}

function replaceAfter() {
	if (replaceOpacity == 0) {
		window.clearInterval(replaceTimer);
		replaceTimer = false;
		getElement("pageReplace").innerHTML = getElement("pageBody").innerHTML;
		getElement("pageFade").style.zIndex = "999";
	} else {
		replaceOpacity = replaceOpacity - 10;
		if (document.all) {
			getElement("pageFade").filters[0].opacity = replaceOpacity/100;
		} else {
			getElement("pageFade").style.opacity = replaceOpacity/100;
		}
	}
}


var
	setContent_key = false,
	homepage = false,
	homepagePrevious = false,
	menuItemNow,
	menuItemPrevious = 0,
	menuItemNowClass,
	menuItemPreviousClass;

function setContent(url) {
	//alert("setContent\nIncoming URL\n\t" + url);
	if (setContent_key == true) {
		return false;
	}
	setContent_key = true;
	
	var url = url.toString();

	url = url.replace(/#+/ig, "#");
	
	if (url.indexOf("?") != -1) {
		urlVariables = url.replace(/.*\?/i, "");
		url = url.replace(/\?.*$/i, "");
	} else {
		urlVariables = "";
	}
	
	if (
		url == ""
		||
		url == "/"
		||
		url == "#"
		||
		url == "/#"
		||
		url == "index"
		||
		url == "#index"
		||
		url == "/#index"
		||
		url == "index.html"
		||
		url == "/index.html"
		||
		url == "/#index.html"
		||
		url == "http://www.recruitment.com/"
		||
		url == "http://www.recruitment.com/#"
		||
		url == "http://www.recruitment.com/#index"
		||
		url == "http://www.recruitment.com/index.html"
		||
		url == "http://www.recruitment.com/#index.html"
		||
		url == "#?"
		||
		url == "/#?"
		||
		url == "http://www.recruitment.com/#?"
	) {
		homepage = true;
		url = "/index.html";
		//alert("This is a homepage.");
	} else {
		homepage = false;
		if (url.indexOf("#") != -1) {
			url = "/" + url.substring(url.indexOf("#") + 1, url.length);
			if (url.substring(url.indexOf(".html")) == url) {
				url += ".html";
			}
			urlClear = url.replace(/^\/|\.html.*$/ig, "");
		} else {
			//alert("!#");
			if (
				(url.charAt(0) != "/")
				&&
				(url.indexOf("http://") != 0)
				&&
				(url.indexOf(".html") == -1)
			) {
				//alert('This is URL without "/" and ".html"');
				urlClear = url;
				url = "/" + url + ".html";
			} else {
				url = url.replace(/^http:\/\/[^\/]+\//i, "\/");
				urlClear = url.replace(/^\/|\.html.*$/ig, "");
			}
		}
		
		//url = url.replace(/\.html.*$/i, ".html");
		url = url.replace(/#+/ig, "");
	}
	
	if (urlVariables != "") {
		url += "?" + urlVariables;
	}
	//alert("urlVariables\n\t" + urlVariables);
	
	//alert("Outgoing URL\n\t" + url + "\nPrevious URL\n\t" + urlPrevious);
	
	//if (url.substring(url.indexOf(urlPrevious)) != url) {
	if (url != urlPrevious) {
		//alert("XML is loading…");
		getBody().className = "loading";
		window.document.title = "Loading… / " + titleName;
		var xmlhttp = getXMLHttp();
		
		//alert("url\n\t" + url);

		xmlhttp.open("GET", url + (urlVariables != "" ? "&" : "?") + "ajax=true&nocache=" + Math.random(), true);
		//xmlhttp.open("GET", url + "?ajax=true&nocache=" + Math.random(), true);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4) {
				if (xmlhttp.status == 200) {
					
					/*
						!Firefox
							= object (ok, error...) ??
						else
							= null
						
						alert("typeof(xmlhttp.responseXML)\n\t" + typeof(xmlhttp.responseXML));
					*/
					if (xmlhttp.responseXML == null) {
						//alert("404 Not Found\n(!) xmlhttp.status == 200");
						window.document.title = "404 Not Found / " + titleName;
						is404 = true;
						setContent_key = false;
						setContent("/site-map.html");
						return;
					}
					
					if (homepage == true) {
						getBody().setAttribute("id", "homepage");
						//alert("isFirst\n\t" + isFirst);
						/*if (isFirst == false || is404 == true) {
							if (is404 == true) {
								is404 = false;
							}
							window.location.href = "#index";
						}*/
						window.location.href = "#" + (document.all ? "" : "index") + (urlVariables != "" ? "?" + urlVariables : "");
					} else {
						getBody().removeAttribute("id");
						
						var locationCurrent = xmlhttp.responseXML.getElementsByTagName("location")[0].firstChild.data;
						//alert("urlClear:\n\t" + urlClear + "\nlocationCurrent:\n\t" + locationCurrent);
						
						if (urlClear != locationCurrent) {
							isRedirect = true;
							//getContent(locationCurrent + (urlVariables != "" ? "?" + urlVariables : ""));
							getContent(locationCurrent);
						} else {
							window.location.href = "#" + locationCurrent + (urlVariables != "" ? "?" + urlVariables : "");
						}
					}
					
					var titleDescription = (titleName != false && homepage == false) ? " / " + titleName : "";
					
					if (homepage == true) {
						window.document.title = titleHomepage;
					} else {
						window.document.title = xmlhttp.responseXML.getElementsByTagName("pagetitle")[0].firstChild.data + titleDescription;
					}
					
					//alert("isRedirect\n\t" + isRedirect);
					
					if (isRedirect != true) {
						getElement("register").innerHTML = xmlhttp.responseXML.getElementsByTagName("register")[0].firstChild.data;
						getElement("basket").innerHTML = xmlhttp.responseXML.getElementsByTagName("basket")[0].firstChild.data;
						if (homepage == true) {
							getElement("pageList").innerHTML = "";
						} else {
							//alert(xmlhttp.responseXML.getElementsByTagName("pagelist")[0].firstChild);
							if (xmlhttp.responseXML.getElementsByTagName("pagelist")[0].firstChild != null) {
								getElement("pageList").innerHTML = xmlhttp.responseXML.getElementsByTagName("pagelist")[0].firstChild.data;
							} else {
								getElement("pageList").innerHTML = "&nbsp;";
							}
						}
					}
					
					if (isRedirect != true) {
						var
							spacer = '<div class="spacer clear">&nbsp;</div>';

						//alert("homepagePrevious\n\t" + homepagePrevious);
						
						if (homepage == true && homepagePrevious == true) {
						} else {// 404 fix if redirect to index.html
							if (homepage == true) {
								getElement("pageHome").className = "block";
								getElement("pageBody").innerHTML = "";
								getElement("pageHome").innerHTML = getElement("pageOther").innerHTML;
								getElement("pageOther").innerHTML = "";
								getElement("pageOther").className = "none";
								homepagePrevious = true;
							} else {
								if (homepagePrevious == true) {
									getElement("pageOther").className = "block";
									getElement("pageBody").innerHTML = "";
									getElement("pageOther").innerHTML = getElement("pageHome").innerHTML;
									getElement("pageHome").innerHTML = "";
									getElement("pageHome").className = "none";
									homepagePrevious = false;
								}
							}
						}
						
						getElement("pageReplace").innerHTML = getElement("pageBody").innerHTML;

						//getCSS(xmlhttp.responseXML.getElementsByTagName("pagebody")[0].firstChild.data);

						getElement("pageBody").innerHTML = xmlhttp.responseXML.getElementsByTagName("pagebody")[0].firstChild.data + spacer;
						

						var
							js = getElement("pageBody").getElementsByTagName("embedscript");
						
						if (typeof(js[0]) != "undefined") {
							for (var i = 0; i < js.length; i++) {
								if (document.all) {
									var jsContent = document.createTextNode(js[i].innerHTML);
									var jsTag = '<em style="display: none !important;">&nbsp;</em><script type="text/javascript" defer>';
									jsTag += jsContent;
									jsTag += "</script" + ">";
									alert(jsTag);
								} else {
									var jsContent = document.createTextNode(js[i].innerHTML);
									var jsTag = document.createElement("script");
									jsTag.type = "text/javascript";
									jsTag.appendChild(jsContent);
								}
								//alert(js[i]);
								js[i].innerHTML = "";
								js[i].appendChild(jsTag);
							}
						}
						
						getElement("pageFade").style.zIndex = "1001";
						getElement("pageReplace").className = "block";
						getElement("pageBody").className = "none";
						
						coordinatesBody = getCoordinates("pageReplace");
						getElement("pageFade").style.width = coordinatesBody.width + "px";
						getElement("pageFade").style.height = coordinatesBody.height + "px";
						if (replaceTimer != false) {
							window.clearInterval(replaceTimer);
						}
						replaceTimer = window.setInterval("replaceBefore()", replaceInterval);
					}
					
					if (isRedirect == true) {
						isRedirect = false;
					}
					
					menuItemNow = xmlhttp.responseXML.getElementsByTagName("menuitem")[0].firstChild.data;
					if (menuItemNow != -1) {
						menuItemNowClass = getElement("menuItem_" + menuItemNow).className.toString();
					}
					menuItemPreviousClass = getElement("menuItem_" + menuItemPrevious).className.toString();
					
					if (menuItemNow != -1) {
						if (menuItemNow != menuItemPrevious) {
							if (menuItemNowClass.substring(menuItemNowClass.indexOf("menuItemNow")) == menuItemNowClass) {
								menuItemNowClass += " menuItemNow";
								menuItemPreviousClass = menuItemPreviousClass.replace(/ menuItemNow/i, "");
							} else {
								menuItemNowClass = menuItemNowClass.replace(/ menuItemNow/i, "");
							}
							getElement("menuItem_" + menuItemNow).className = menuItemNowClass;
							getElement("menuItem_" + menuItemPrevious).className = menuItemPreviousClass;
							menuItemPrevious = menuItemNow;
						}
					} else {
						menuItemPreviousClass = menuItemPreviousClass.replace(/ menuItemNow/i, "");
						getElement("menuItem_" + menuItemPrevious).className = menuItemPreviousClass;
					}
					
					isFirst = false;
					//alert("XML is loaded.");
					setHyperlink();
					getBody().className = "";
				} else {
					if (xmlhttp.status == 404) {
						//alert("404 Not Found");
						window.document.title = "404 Not Found / " + titleName;
						is404 = true;
						//setContent("/index.html");
						setContent_key = false;
						setContent("/site-map.html");
					} else {
						alert(xmlhttp.statusText);
						//window.document.title = titleName;
						window.document.title = xmlhttp.statusText + " / " + titleName;
						setContent_key = false;
						setContent(url);
					}
				}
			} else {
				//alert("xmlhttp.readyState != 4");
			}
		}
		xmlhttp.send(null);
		urlPrevious = url;
	} else {
		//alert("XML is not loaded.");
	}
	setContent_key = false;
}


function getContent(url) {
	setContent(url);
	setHyperlink();
}

