window.onload = runOnLoad;
var lastClickTime = 0;

function runOnLoad() {
	prepareDoubleClickPrevention();
	setTelType();
	setFocus();
};

function prepareDoubleClickPrevention() {
	for ( var i = 0; i < document.forms.length; i++) {
		document.forms[i].onsubmit = preventDoubleClick;
	}
}

function setTelType() {
	var inputElements, i;
	inputElements = document.getElementsByTagName("input");
	for (i in inputElements) {
		if (inputElements[i].className
				&& inputElements[i].className.indexOf("ergebnis") != -1) {
			inputElements[i].type = "tel";
		}
	}
}

function setFocus() {
	var i, j, className;

	for (i = 0; i < document.forms.length; i++) {
		for (j = 0; j < document.forms[i].elements.length; j++) {
			className = document.forms[i].elements[j].className;
			if (className.match(/\bfocusOnLoad\b/)) {
				document.forms[i].elements[j].focus();
				return;
			}
			if (className.match(/\bselectOnLoad\b/)) {
				document.forms[i].elements[j].focus();
				document.forms[i].elements[j].select();
				return;
			}
		}
	}
}

function preventDoubleClick() {
	var clickDate, actualClickTime;
	clickDate = new Date();
	if (lastClickTime === 0) {
		lastClickTime = clickDate.valueOf();
		return true;
	} else {
		actualClickTime = clickDate.valueOf();
		if ((actualClickTime - lastClickTime) > 3000) {
			lastClickTime = 0;
			return true;
		}
		return false;
	}
	return true;
}

var tipprunde          = "blog-g";
var modul              = "";
var sessionCookieName  = "KT_JSESSIONID";
var languageCookieName = "KT_LANGUAGE";
var defaultBridgeHost  = 'javascript.kicktipp.de';
var defaultCssHost     = 'info.kicktipp.de';
var cssUrl             = "http://" + getCssHost() + "/css/kicktipp.css";
var delim              = "&";

if (!isStylesheetVorhanden(cssUrl)) {
  addStylesheet(cssUrl);
}

if ( modul == '') {
  writeScriptTag(buildUrl("navigation"));
  writeScriptTag(buildUrl("inhalt"));
} else {
  writeScriptTag(buildUrl(modul));
}

function writeScriptTag(url) {
  var scriptAttr = 'type="text/javascript" charset="UTF-8"';
  var scriptSrc = ' src="' + url+ '"';
  var scriptTag = '<scr' + 'ipt ' + scriptAttr + scriptSrc + '> ' + '</sc' + 'ript>';
  document.writeln(scriptTag);
}

function buildUrl(modul) {
  var urlQMSplit = document.URL.split("?");
  var requestUrl = "http://" + getBridgeHost() + "/index.php?";
  requestUrl += "br_tr=" + tipprunde + delim;
  requestUrl += getUrlParameter(modul, urlQMSplit[1]) + delim;
  requestUrl += getCookieParam() + delim;
  requestUrl += "br_returnTo=" + urlQMSplit[0];
  if (typeof remoteHost != "undefined" && remoteHost != null)
  	requestUrl += delim + "br_remoteHost=" + remoteHost;
  return requestUrl;
}

function getUrlParameter (modul, querystring) {
    
    if ( modul == "inhalt") {
      return querystring;
    } 

	newquery = "kt_page=" + modul + getJSessionIdParam() + delim;
	newquery += "kt_pageId=" + getCurrentPage();

    if ( querystring == null){
      return newquery;
    }

	params = querystring.split(delim);
	for (i = 0; i < params.length; i++) {
	   paramKeyAndValue = params[i].split("=");
	   if (paramKeyAndValue[0] != "kt_page" && paramKeyAndValue[0] != "br_p") {
  	     newquery += delim + params[i];  
	   }
	}
	return newquery;
}

function getJSessionIdParam() {
  sessionId = getJSessionId();
  if (sessionId) {
    return ";jsessionid=" + sessionId;
  }
  return "";
}

function getJSessionId() {
  var urlQMSplit = document.URL.split("?");
  sessionId = "";

  if(urlQMSplit.length == 2) {
    if (decodeURIComponent(urlQMSplit[1]).match(/jsessionid=([\w\.]+)/)) {
      sessionId = RegExp.$1;
    }
  }
  return sessionId;
}

function getCookieParam() {
  var sessionCookie = readCookie(sessionCookieName);
  var languageCookie = readCookie(languageCookieName);
  cookieString = "br_c=";
  if(sessionCookie != null) {
    cookieString += sessionCookie + ";Path=/;";
  }
  if (languageCookie != null) {
    cookieString += languageCookie + ";Path=/;";
  }
  return cookieString;
}

function getCurrentPage() {
  var urlQMSplit = document.URL.split("?");
  currentPage = "";
  if(urlQMSplit.length == 2){
	  params = urlQMSplit[1].split(delim);
	  for(i = 0; i < params.length; i++){
		if(params[i].match(/kt_page/)){
			paramKeyAndValue = params[i].split("=");
			currentPage = paramKeyAndValue[1];
		}
		if(params[i].match(/br_p/)){
			paramKeyAndValue = params[i].split("=");
			paramValueFragments = paramKeyAndValue[1].split("/");
			if (paramValueFragments.length >= 2 && paramValueFragments[2].match(/;/)) {
			    sessionIdFragments = paramValueFragments[2].split(";");
			    currentPage = sessionIdFragments[0];
			} else {
			    currentPage = paramValueFragments[2];
			}
		}
	  }
  }
  return currentPage;
}

function isStylesheetVorhanden (cssUrl) {
  var head = document.getElementsByTagName("head")[0];
  var links = head.getElementsByTagName("link");
  if (links.length > 1) {
  	var href = links[0].getAttribute("href");
  	if (href == cssUrl) {
  	  return true;
  	}
  }
  return false;
}

function addStylesheet (cssUrl) {
  var head = document.getElementsByTagName("head")[0];
  if ( head ) {
    var link = document.createElement("link");
    link.setAttribute("rel", "stylesheet");
    link.setAttribute("type", "text/css");
    link.setAttribute("href", cssUrl);      
    if ( head.hasChildNodes() ) {
       head.insertBefore(link, head.firstChild);
    } else {
   	   head.appendChild(link);
    }
  }
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0; ca.length > i;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c;
	}
	return null;
}

function getBridgeHost(){
  if(typeof bridgeHost != "undefined" && bridgeHost != null){
	  return bridgeHost;
  }
  return defaultBridgeHost;
}

function getCssHost(){
  if(typeof cssHost != "undefined" && cssHost != null){
	  return cssHost;
  }
  return defaultCssHost;
}
