
var QLIKUTILS = {
	getDocumentHeight : function() {
		var b = $$("body")[0];
		var d = document, de = d.documentElement;
		var ih = ((self.innerHeight && !isNaN(self.innerHeight)) ? self.innerHeight : 0);
		if (d.documentElement && (!d.compatMode || d.compatMode=="CSS1Compat")) { return Math.max(b.offsetHeight, b.scrollHeight, de.clientHeight, de.scrollHeight, ih); }
		return Math.max(b.scrollHeight, b.clientHeight, ih);
	}
	, centerVertical : function(el) {
		var dim = document.viewport.getDimensions();
		var so = document.viewport.getScrollOffsets();
		var yPos = (dim.height / 2) - (el.getHeight() / 2);
		var elHeight = el.getHeight();
		var docHeight = QLIKUTILS.getDocumentHeight();
		var topPos = (so.top + (yPos < 20 ? 20 : yPos));
		if ((elHeight + topPos) > (docHeight - 20)) { topPos = docHeight - elHeight - 20; }
		if (topPos < 20) { topPos = 20; }
		el.setStyle({ top: topPos  + "px" });
	}
};

var QLIKOVERLAY = { 
	isInitialized : false, displayCount : 0
	, init : function() {
		if (QLIKOVERLAY.isInitialized !== true) {
			var b = $$("body")[0];
			if (b) { b.insert('<div align="center" id="elQlikOverlayBackground" style="display:none;">&nbsp;</div>'); }
			QLIKOVERLAY.isInitialized = true;
		}
	}
	, show : function() { QLIKOVERLAY.displayCount++; QLIKOVERLAY.setHeight(); $('elQlikOverlayBackground').show(); return false; }
	, hide : function() { QLIKOVERLAY.displayCount--; if (QLIKOVERLAY.displayCount === 0) { $('elQlikOverlayBackground').hide(); } return false; }
	, setHeight : function() { 
		$('elQlikOverlayBackground').setStyle({ height : (QLIKUTILS.getDocumentHeight()) + "px" }); 
	}
};

var QLIKMSG = {
	isInitialized : false
	, init : function() {
		QLIKOVERLAY.init();
		QLIKOVERLAY.show();
		if (QLIKMSG.isInitialized !== true) { 
			var b = $$("body")[0];
			if (b) { b.insert('<div id="elQLIKMSG" style="display:none;"><div class="QLIKMSGContent"><div class="header"><h3 id="elQLIKMSGTitle">&nbsp;</h3></div><div id="elQLIKMSGContent"></div><div id="elQLIKMSGButtons"><input type="button" value="OK" style="width:80px;" id="lnkQLIKMSGHide" /></div></div></div>'); }
 			Event.observe($("lnkQLIKMSGHide"), "click", QLIKMSG.hide);
		}
	}
	, Alert : function(title, msg, showButtons) {
		if (($('elQLIKMSG')) && ($('elQLIKMSG').visible() === true)) { QLIKMSG.hide(); }
		QLIKMSG.init();
		if (showButtons === false) { QLIKMSG.hideButtons(); } else { QLIKMSG.showButtons(); }
		QLIKMSG.setTitle(title);
		QLIKMSG.setContent(msg);
		QLIKUTILS.centerVertical($('elQLIKMSG'));
		$('elQLIKMSG').show();
	}
	, Wait : function(msg, timeout) {
		msg = '<table width="100%"><tr><td width="100"valign="middle"><img src="/images/wait.gif" alt="" /></td><td valign="middle">' + (msg ? msg : 'Please wait ...') + '</td></tr></table>';
		QLIKMSG.Alert("&nbsp;", msg, false);
		if (timeout) { window.setTimeout('QLIKMSG.hide();', timeout); }
	}
	, showButtons : function() { $('elQLIKMSGButtons').show(); }
	, hideButtons : function() { $('elQLIKMSGButtons').hide(); }
	, hide : function(e) { if (e) { e.stop(); } QLIKOVERLAY.hide(); $('elQLIKMSG').hide(); return false; }
	, setTitle : function(title) { $('elQLIKMSGTitle').update(title.replace(/\n/, '<br />')); } 
	, setContent : function(content) { $('elQLIKMSGContent').update(content.replace(/\n/, '<br />')); }
};

/* OLD functions which should be included in the above code or in seperate "Objects"*/

function setl(selObj, backHome){
	qAUser.setValue('l', selObj[selObj.selectedIndex].value);
	if (backHome === true) {document.location.href = '/';} else {document.location.reload();}
}
function cnt(){}

function getDomainFromUrl() {
	var url = window.location.href;	
	var re = /http:\/\/([^\/]*)\/.*/gi;
	var m = re.exec(url);
	if (m) {
		var pos = m[1].indexOf(".");
		if (pos > 0) { return m[1].substring(pos + 1, m[1].length); }
		return m[1];
	}
	return "";
}

function clearSelectbox(el) { var o = el.options; if (o) { while ((o) && (o.length > 0)) { o[o.length - 1] = null; } } }
function selectRegion(e) {
	var value = this.options[this.options.selectedIndex].value;
	if (value !== "") { document.location.href = '/' + value + '.htm'; }
}
function prepareRegionDropDown(t) {
	var elDropDown = $("selRegions");
	var aRegions = t.responseJSON;
	if (elDropDown && aRegions) {
		clearSelectbox(elDropDown);
		for (var i = 0;i < aRegions.length; i++) {
			if (aRegions[i].positionCount > 0) { elDropDown.options[elDropDown.options.length] = new Option(aRegions[i].name, aRegions[i].url); }
		}
	}
	Event.observe(elDropDown, "change", selectRegion);
}



function loadRegionList(options, fnCallBack) {
	var url = (options.placeSearchText && options.placeSearchText !== '' ? '/include/snippets/getRegionsByPlace.asp' : '/include/snippets/getRegions.asp');
	var req = new Ajax.Request(url, {
		method : 'get'
		, onSuccess : fnCallBack
		, mayorRegionName : (options.mayorRegionName ? options.mayorRegionName : '')
		, parameters : { 
			mr : (options.mayorRegionId > -1 ? options.mayorRegionId : -1)
			, br : (options.branchId > -1 ? options.branchId : -1)
			, lang : options.lang
			, pn : options.placeSearchText
		}
	});
}
/*
Requird Config-Object in page needed :
----------------------------------------
var pageConfig = { lang: 'de', country: 'DE', categoryId: -1, branchId : -1, regionId: -1, sterm : 'searchterm' };
*/
function updateElement(r) {
	var result = r.responseText;
	var req = r.request;
	var el = $(req.options.targetElement);
	var adType = req.options.adType;
	if (el) {
		if (result !== "") {
			// To disable caching change URL
			result = result.replace(/n=a57d7ca4/gi, "n=" + (new Date()).getTime());
			el.innerHTML = result;
			el.show();
			// Check for JS code and eval it
			evalScriptAfterAJAXRequest(result);
		}
		else {
			if (adType == 3) { el.hide(); }
			else { el.show(); }
		}
	}
}
function showSingleAdImage(el, type) {
	if (el) {
		var url = (((pageConfig.sterm) && (pageConfig.sterm !== '')) ? '/include/snippets/pad.asp?' : '/include/snippets/padRegBra.asp?');
		url += 'hl=' + pageConfig.lang;
		url += '&c=' + pageConfig.country;
		if (pageConfig.categoryId) { url += '&cat=' + pageConfig.categoryId; }
		if (pageConfig.branchId) { url += '&bra=' + pageConfig.branchId; } 
		if ((pageConfig.regionId) && (type == 3)) { url += '&r=' + pageConfig.regionId; }
		if ((pageConfig.mayorRegionId) && (type == 2)) { url += '&m=' + pageConfig.mayorRegionId; }
		if (pageConfig.sterm) { url += '&sterm=' + encodeURIComponent(pageConfig.sterm); }
		url += '&t=' + type;
		url += '&rd=' + (pageConfig.rnd ? pageConfig.rnd : "1");
		var req = new Ajax.Request(url, { method:'get', evalJS:'force', targetElement:el.id, adType: type, onSuccess:updateElement});
	}
}
function showAdImages() {
	if ((typeof pageConfig) == 'object') {
		if ($("elCountryAImage")) { $("elCountryAImage").hide(); showSingleAdImage($("elCountryAImage"), 1); }
		if ($("elMayorAImage")) { $("elMayorAImage").hide(); showSingleAdImage($("elMayorAImage"), 2); }
		if ($("elPosAImage")) { $("elPosAImage").hide(); showSingleAdImage($("elPosAImage"), 3); }
	}
}
function evalScriptAfterAJAXRequest(scripts) {	
	try {
		if(scripts != '') {	
			var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function() {
					if (scripts !== null) { script += arguments[1].replace(/\r/gi, '') + '\n'; }
					return '';
				}
			);
			if(script) { ((window.execScript) ? window.execScript(script) : window.setTimeout(script, 0)); }
		}
		return false;
	}
	catch(e){ }
}

/* search-form */
function searchGlobal(e) {
	var valKeyword = ($("sTermKeyword") ? $("sTermKeyword").value : ""); var valCompany = ($("sTermCompany") ? $("sTermCompany").value : "");
	var urlTemplate = (valKeyword.length >= 3 ? '/search/%KEYWORD%.htm' : (valCompany.length >= 3 ? '/searchcompany/%KEYWORD%.htm' : ''));
	var keyword = (valKeyword.length >= 3 ? valKeyword.trim() : (valCompany.length >= 3 ? valCompany.trim() : ''));
	if (keyword !== '') {
		if ($("elErrMsg")) { $("elErrMsg").hide(); }
		keyword = encodeURIComponent(keyword.replace(/\s/gi, '#PLUS#')).replace(/%23PLUS%23/gi, '+');
		document.location.href = urlTemplate.replace(/%KEYWORD%/g, keyword);

	}
	else { if ($("elErrMsg")) { $("elErrMsg").show(); } }
	e.stop();
}
function prepareSearchForm() {
	var frm = $('frmSearch');
	if (frm) {
		Event.observe(frm, 'submit', searchGlobal);
		var elRegionSelect = $("selRegions");
		if (elRegionSelect) { loadRegionList(pageConfig, prepareRegionDropDown); }
	}
}

/* ------------------------------------------- */
function gbl_OnPageLoad() {
	if ((typeof pageConfig) == 'object') {
		prepareSearchForm();
		showAdImages();
	}
}
Event.onDOMReady(gbl_OnPageLoad);