var selType = null;
var selView = null;
var defaultSort = 'price';
var maskExtrasBox = false;

function getParams() {
	var searchParams = location.search.substr(1);
	if(!searchParams.match(/(searchstring|chiffre|dkey)=/)) {
		if(market) searchParams = 'b64=1&' + market.b64decode(searchParams);
	}
	return searchParams;
}

function newWindow(url) {
	if(market) market.newWindow(url, 750, 550, 0, 0, true, true, false, true);
}

function toggleBox(id) {
	var obj = document.getElementById(id);
	var headObj = document.getElementById(id + '_head');

	if(obj) {
		if(obj.style.display == 'none') {
			obj.style.display = 'block';
			if(headObj) headObj.style.marginBottom = '0px';
		}
		else {
			obj.style.display = 'none';
			if(headObj) headObj.style.marginBottom = '5px';
		}
	}
}

function toggleImage(obj, name1, name2) {
	if(obj) {
		if(obj.src.indexOf(name1) != -1) {
			obj.src = obj.src.replace(name1, name2);
		}
		else obj.src = obj.src.replace(name2, name1);
	}
}

function submitSearchMask(section) {
	if(!market) return;

	if(!section) section = 'result';
	var param = market.createParamList(section);
	if(!param) param = 'sort=' + defaultSort;

	switch (location.search)
	{
		case '?suche=m': param += "&ctype=5"; break;
		case '?suche=w': param += "&ctype=4"; break;
		case '?suche=n': param += "&ctype=3||6||7"; break;
		default: param += "&ctype=" + market.carType;
	}

	param = market.b64encode(param);
	if (typeof iFrameMod == "undefined")
	{
		location.href = '/go.to/modix/2/fahrzeugsuche.html?' + param;
	}
	else
	{
		parent.location.href = '/go.to/modix/2/fahrzeugsuche.html?' + param;
	}
}

function chiffreSearch(frmName) {
	if(!market) return;
	var f = document.getElementById(frmName);

	if(f && f.chiffreSearch) {
		var val = f.chiffreSearch.value;

		if(val && !val.match(/^z\.B\./)) {
			if(val.match(/^MDX-/i)) var param = 'chiffre=' + escape(val);
			else var param = 'chiffre=MDX-' + escape(val);
			param = market.b64encode(param);

			if (typeof iFrameMod == "undefined")
			{
				location.href = '/go.to/modix/3/fahrzeugsuche.html?' + param;
			}
			else
			{
				parent.location.href = '/go.to/modix/3/fahrzeugsuche.html?' + param;
			}
		}
	}
}

function intnameSearch(frmName) {
	if(!market) return;
	var f = document.getElementById(frmName);

	if(f && f.intnameSearch) {
		var val = f.intnameSearch.value;

		if(val && !val.match(/^z\.B\./)) {
			var param = 'intname=20080000' + escape(val);
			param = market.b64encode(param);
			location.href = '/go.to/modix/2/fahrzeugsuche.html?' + param;
		}
	}
}

function freeTextSearch(frmName) {
	if(!market) return;
	var f = document.getElementById(frmName);

	if(f && f.searchstring) {
		var val = f.searchstring.value;

		if(val && !val.match(/^z\.B\./)) {
			var param = 'searchstring=' + escape(val);
			param = market.b64encode(param);
			if (typeof iFrameMod == "undefined")
			{
				location.href = '/go.to/modix/2/fahrzeugsuche.html?' + param;
			}
			else
			{
				parent.location.href = '/go.to/modix/2/fahrzeugsuche.html?' + param;
			}
		}
	}
}

function setActive(obj) {
	if(obj && selType != obj) {
		obj.src = obj.src.replace(/\.([a-z0-9]+)$/, '_on.$1')
	}
}

function setInactive(obj) {
	if(obj && selType != obj) {
		obj.src = obj.src.replace(/_on\.([a-z0-9]+)$/, '.$1')
	}
}

function clearType() {
	if(selType) {
		var tmp = selType;
		selType = null;
		setInactive(tmp);
	}
}

function setType(obj, type) {
	if(obj) {
		if(selType == obj) type = '';
		if(selType) clearType();
		if(type) {
			setActive(obj);
			selType = obj;
		}
		selectType(type);
	}
}

function selectType(id) {
	if(!market) return;
	var f = document.frmSearch;
	if(f && f.build) {
		f.build.value = id;
		market.updateForm(f.build);
	}
}

function setTab(type) {
	var obj = null;

	if(selView) {
		obj = document.getElementById('mdx' + selView);
		if(obj) obj.className = 'mdxTab';
	}
	obj = document.getElementById('mdx' + type);
	if(obj) obj.className = 'mdxTabSelected';
	selView = type;
}

function viewResultList() {
	if(!market) return;
	var page = 1;
	var param = getParams();
	if(param.match(/^(searchstring|dkey|chiffre)=/)) return;

	if(param.match(/_entries=(\d+)/)) {
		entriesPerPage = RegExp.$1;
		param = param.replace(/_entries=\d+&?/, '');
	}
	if(param.match(/_view=(\w+)/)) {
		setTab(RegExp.$1);
		param = param.replace(/_view=\w+&?/, '');
	}
	if(param.match(/page=(\d+)/)) {
		page = RegExp.$1;
		param = param.replace(/page=\d+&?/, '');
	}
	param = param.replace(/&$/, '');
	if(!param) param = 'sort=' + defaultSort;
	if(!selView) selView = 'list';
	var xsl = modixDatadir + '/xsl/result_' + selView + '.xsl';
	market.pageCnt = 10;
	market.viewResultList(param, page, xsl);
}

function reloadResultList(frmName) {
	if(!market) return;
	var f = document.forms[frmName];
	if(f && f.entries) entriesPerPage = f.entries.value;
	market.clearCache('result', 'body');
	market.cache.result.page = 1;
	market.loadContent('result', 'body');
	market.createPageNumbers();
}

function reloadResultList2() {
	document.forms["fResult"].entries.selectedIndex = document.forms["fResult2"].entries2.selectedIndex;
	reloadResultList("fResult") 
}

function switchResultList(type) {
	if(!market) return;
	var xsl = modixDatadir + '/xsl/result_' + type + '.xsl';
	market.switchListView(xsl);
	setTab(type);
}

function sortResultList(field, order) {
	if(!market) return;
	market.sortResultList(field, true, false, order);
	market.createPageNumbers();
}

function viewDetails(id, section, trackVal) {
	if(!market) return;
	var link = param = '';

	if(trackVal) {
		market.pageTracker(trackVal, 'Detailansicht');
	}

	if(section == 'details_pinboard') {
		param = 'pb_chiffre=' + id;
	}
	else {
		var sp = market.cache.result.param;
		var page = market.cache.result.page;
		param = 'chiffre=' + id;
		if(page) param += '&page=' + page;
		if(selView) param += '&_view=' + selView;
		if(entriesPerPage) param += '&_entries=' + entriesPerPage;
		if(sp) param += '&' + sp;
	}
	param = market.b64encode(param);
	link = '/go.to/modix/3/fahrzeugsuche.html?' + param;

	if (typeof iFrameMod == "undefined")
	{
		location.href = link;
	}
	else
	{
		parent.location.href = link;
	}
}

function goToPage(url, param) {
	if(!market) return;
	if(!param) param = getParams();
	param = param.replace(/chiffre=[^&]*&?/, '');
	if(param) url += '?' + market.b64encode(param);
	location.href = url;
}

function goToResultList(param) {
	if(param && param.indexOf('sort=') == -1) {
		param += (param ? '&' : '') + 'sort=' + defaultSort;
	}
	goToPage('/go.to/modix/2/fahrzeugsuche.html', param)
}

function goToSearchForm(param) {
	if(!market) return;
	if(!param) param = getParams();
	param = param.replace(/chiffre=[^&]*&?/, '');
	param = param.replace(/dkey=[^&]*&?/, '');
	goToPage('/go.to/modix/now/fahrzeugsuche.html', param);
}

function loadForm() {
	if(!market) return;
	var param = getParams();

	if (param.indexOf("ctype=1") != -1)
	{
		setSearchTab("p")
	}
	else if (param.indexOf("ctype=5") != -1)
	{
		setSearchTab("m")
	}
	else if (param.indexOf("ctype=4") != -1)
	{
		setSearchTab("w")
	}
	else if (param.indexOf("ctype=3||6||7") != -1)
	{
		setSearchTab("n")
	}

	param = param.replace(/&?page=[^&]*/, '');
	market.loadForm(param);
}

function loadSmallForm() {
	if(!market) return;
	var param = getParams();

	if (param.indexOf("ctype=1") != -1)
	{
		setSearchTab("p")
	}
	else if (param.indexOf("ctype=5") != -1)
	{
		setSearchTab("m")
	}
	else if (param.indexOf("ctype=4") != -1)
	{
		setSearchTab("w")
	}
	else if (param.indexOf("ctype=3||6||7") != -1)
	{
		setSearchTab("n")
	}

	param = param.replace(/&?page=[^&]*/, '');
	market.loadForm(param, 'searchmask_small');
}

function viewPinboard() {
	location.href = '/go.to/modix/now/merkliste.html';
}

function addVehicle(vkey, trackVal) {
	if(!market) return;
	market.addVehicle(vkey, trackVal);
	viewPinboardCounter2();
}

function compareVehicles() {
	if(!market) return;
	market.compareVehicles('frmCompare');
}

function selectAll(switchField, frmName) {
	var f = document.forms[frmName];

	if(f) {
		var field = null;

		for(var i = 0; i < f.elements.length; i++) {
			field = f.elements[i];

			if(field.type == 'checkbox' && !field.disabled) {
				field.checked = switchField.checked;
			}
		}
	}
}


function selectAll2(frmName) {
	var f = document.forms[frmName];

	if(f) {
		var field = null;

		for(var i = 0; i < f.elements.length; i++) {
			field = f.elements[i];

			if(field.type == 'checkbox' && !field.disabled) {
				field.checked = true;
			}
		}
	}
}

function removeSelected(frmName) {
	if(!market) return;
	if(!frmName) frmName = 'frmCompare';
	var f = document.forms[frmName];

	if(f) {
		var p = [];
		for(var i = 0; i < f.elements.length; i++) {
			if(f.elements[i].checked) {
				p.push(f.elements[i].value);
			}
		}
		if(p[0]) market.removeVehicle(p.join('||'));
		else market.viewMessageBox(cmMsg['selectVehicle'], 'Error', 2);
	}
}

function removeEvent(obj, type, fn) {
	if(obj) {
		if(obj.removeEventListener) {
			obj.removeEventListener(type, fn, false);
		}
		else if(obj.detachEvent) {
			obj.detachEvent('on' + type, fn);
		}
		else obj['on' + type] = null;
		if(market) market.addDebugInfo('event ' + type + ' removed<br/>');
	}
}

function addEvent(obj, type, fn) {
	if(obj) {
		if(obj.addEventListener) {
			obj.addEventListener(type, fn, false);
		}
		else if(obj.attachEvent) {
			obj.attachEvent('on' + type, fn);
		}
		else obj['on' + type] = fn;
		if(market) market.addDebugInfo('event ' + type + ' added<br/>');
	}
}

/* Callback-Funktionen *******************************************************************/

function viewTotalCars() {
	if(!market) return;
	var elem = document.getElementById('totalcars');
	if(elem) market.loadSection('total_cars');
}

function viewSearchString() {
	if(!market) return;
	var elem = document.getElementById('searchstring');
	if(elem) {
		var param = getParams();
		param = param.replace(/&?_entries=[^&]*/, '');
		param = param.replace(/&?_view=[^&]*/, '');
		param = param.replace(/&?page=[^&]*/, '');
		param = param.replace(/&?sort=[^&]*/, '');
		param = param.replace(/&?order=[^&]*/, '');
		if(param) market.loadSection('searchstring_pic');
		else elem.innerHTML = 'alle Fahrzeuge';
	}
	else setTimeout(viewSearchString, 500);
}

function viewPinboardCounter() {
	if(!market) return;
	var elem = document.getElementById('pinboardcounter');
	if(elem) market.viewPinboardCounter();
}

function viewPinboardCounter2() {
	if(!market) return;
	var elem = document.getElementById('pinboardcounter2');
	if(elem) market.loadSection('pinboard_counter2');
	else setTimeout(viewPinboardCounter2, 200);
}

function setEntriesPerPage() {
	if(!market) return;
	var f1 = document.forms.fResult;
	var f2 = document.forms.fResult2;

	if(f1 && f2) {
		if(f1.entries) market.setField(f1.entries, entriesPerPage);
		if(f2.entries) market.setField(f2.entries, entriesPerPage);
	}
	else setTimeout(setEntriesPerPage, 200);
}

function setSort() {
	if(!market) return;
	var f1 = document.forms.fResult;
	var f2 = document.forms.fResult2;

	if(f1 && f2) {
		var sort = order = '';
		var param = market.cache.result.param;
		if(!param) param = getParams();
		if(param.match(/sort=([^&]+)/)) sort = RegExp.$1;
		if(param.match(/order=([^&]+)/)) order = RegExp.$1;

		if(sort) {
			if(f1.sort) market.setField(f1.sort, sort);
			if(f1.order) market.setField(f1.order, order);
			if(f2.sort2) market.setField(f2.sort2, sort);
			if(f2.order2) market.setField(f2.order2, order);
		}
	}
	else setTimeout(setSort, 200);
}

function copyPageNumbers() {
	var elem1 = document.getElementById('resultPages');
	var elem2 = document.getElementById('resultPages2');

	if(elem1 && elem2) {
		if(elem1.innerHTML) {
			elem2.innerHTML = elem1.innerHTML;
		}
		else setTimeout(copyPageNumbers, 200);
	}
	else setTimeout(copyPageNumbers, 200);
}

function resizeResultList() {
	if(!market) return;
	var cont = document.getElementById('resultbody');
	var head = document.getElementById('resultheader');

	if(cont && head) {
		var vp = market.getViewport();
		var max = head.offsetHeight + 250;

		if(vp['height'] > max) {
			var height = vp['height'] - max;
			cont.style.height = height + 'px';
			var list = document.getElementById('resultbody2');

			if(list) {
				cont.style.overflow = 'hidden';
				list.style.height = (height - 20) + 'px';
			}
			else cont.style.overflow = 'auto';
		}
	}
}

function resizePinboard() {
	if(!market) return;
	var cont = document.getElementById('pinboardbody');
	if(cont) {
		var vp = market.getViewport();
		cont.style.height = (vp['height'] - 350) + 'px';
	}
}

function initType() {
	if(!market) return;
	var param = market.cache.searchmask.param;
	if(!param) param = getParams();

	if(param.match(/build=(\d+)/)) {
		var build = RegExp.$1;
		var img = document.getElementById('build_' + build);
		setActive(img);
		selType = img;
	}
}

function expandExtras()
{
	var elemContent = document.getElementById('extrasBox');
	var elemButtonC = document.getElementById('extrasButtonC');
	var elemButtonE = document.getElementById('extrasButtonE');

	if (elemContent.style.display == "none")
	{
		elemContent.style.display = "block";
		elemButtonE.style.display = "none";
		elemButtonC.style.display = "block";
		maskExtrasBox = true;
	}
	else
	{
		elemContent.style.display = "none";
		elemButtonE.style.display = "block";
		elemButtonC.style.display = "none";
		maskExtrasBox = false;
	}
}

function setSearchTab(tab)
{
	document.getElementById("mdxMenuP").style.display = (tab == "p" ? "block" : "none");
	document.getElementById("mdxMenuM").style.display = (tab == "m" ? "block" : "none");
	document.getElementById("mdxMenuW").style.display = (tab == "w" ? "block" : "none");
	document.getElementById("mdxMenuN").style.display = (tab == "n" ? "block" : "none");
/*
	document.getElementById("mdxTabP").className = (tab == "p" ? "mdxActiveTab" : "mdxInactiveTab");
	document.getElementById("mdxTabM").className = (tab == "m" ? "mdxActiveTab" : "mdxInactiveTab");
	document.getElementById("mdxTabW").className = (tab == "w" ? "mdxActiveTab" : "mdxInactiveTab");
	document.getElementById("mdxTabN").className = (tab == "n" ? "mdxActiveTab" : "mdxInactiveTab");
*/
	switch (tab)
	{
		case "p":
			market.carType = 1;
			break;
		case "m":
			market.carType = 5;
			break;
		case "w":
			market.carType = 4;
			break;
		case "n":
			market.carType = "3||6||7";
			break;
	}
}

function imgScrollLeft(max)
{
	var which = document.getElementById("smallImgContainer");
	var curValue = parseInt(which.style.marginLeft);
	if (isNaN(curValue)) { curValue = 0; }
	if (curValue < 0)
	{
		which.style.marginLeft = (curValue + 64) + "px";
	}
}

function imgScrollRight(max)
{
	var which = document.getElementById("smallImgContainer");
	var curValue = parseInt(which.style.marginLeft);
	if (isNaN(curValue)) { curValue = 0; }

	if (curValue > -((max - 4) * 64))
	{
		which.style.marginLeft = (curValue - 64) + "px";
	}
}

function resultListPageSwitcher()
{
	if (document.getElementById("prevPageLink"))
	{
		document.getElementById("prevPageLink").style.visibility = (market.getPageNumber('result') == market.getPageNumber('result','-')) ? "hidden" : "visible";
	}
	if (document.getElementById("nextPageLink"))
	{
		document.getElementById("nextPageLink").style.visibility = (market.getPageNumber('result') == market.getPageNumber('result','+')) ? "hidden" : "visible";
	}
}

function detailSearch()
{
	if(!market) return;
	var param = market.createParamList('searchmask');

	switch (location.search)
	{
		case '?suche=m': param = market.b64encode(param + '&ctype=5'); break;
		case '?suche=w': param = market.b64encode(param + '&ctype=4'); break;
		case '?suche=n': param = market.b64encode(param + '&ctype=3||6||7'); break;
		default: param = market.b64encode(param + '&ctype=' + market.carType);
	}

	parent.location.href = '/go.to/modix/now/fahrzeugsuche.html?' + param;
}

function setNewBuild(value, which)
{
	if (/.+\s([-0-9a-zA-Z]+)/.exec(which.style.backgroundPosition)[1] == '-100px')
	{
		return;
	}

	market.searchByField('build=' + value);

	var build = document.forms["frmSearch"].elements["build"];
	build[build.selectedIndex].value = value;
/*
	market.updateForm(build, 'build');
*/

	updateBuildIcons();
}

function updateBuildIcons()
{
	if (!document.getElementById('buildIcon113')) { return; }

	var build = document.forms["frmSearch"].elements["build"];
	var buildValue = build[build.selectedIndex].value;

	var values = {};
	for (var i = 0; i < build.length; i++)
	{
		values[build[i].value] = i;
	}

	document.getElementById('buildIcon113').style.cursor = 'pointer';
	document.getElementById('buildIcon13').style.cursor = 'pointer';
	document.getElementById('buildIcon6').style.cursor = 'pointer';
	document.getElementById('buildIcon4').style.cursor = 'pointer';
	document.getElementById('buildIcon3').style.cursor = 'pointer';
	document.getElementById('buildIcon9').style.cursor = 'pointer';
	document.getElementById('buildIcon12').style.cursor = 'pointer';
	document.getElementById('buildIcon8').style.cursor = 'pointer';
	document.getElementById('buildIcon11').style.cursor = 'pointer';
	document.getElementById('buildIcon1').style.cursor = 'pointer';

	moBP113 = '0 ' + (buildValue == '113' ? '-50px' : '0');
	moBP13 = '-171px ' + (buildValue == '13' ? '-50px' : '0');
	moBP6 = '-342px ' + (buildValue == '6' ? '-50px' : '0');
	moBP4 = '-513px ' + (buildValue == '4' ? '-50px' : '0');
	moBP3 = '-684px ' + (buildValue == '3' ? '-50px' : '0');
	moBP9 = '-855px ' + (buildValue == '9' ? '-50px' : '0');
	moBP12 = '-1026px ' + (buildValue == '12' ? '-50px' : '0');
	moBP8 = '-1197px ' + (buildValue == '8' ? '-50px' : '0');
	moBP11 = '-1368px ' + (buildValue == '11' ? '-50px' : '0');
	moBP1 = '-1539px ' + (buildValue == '1' ? '-50px' : '0');

	document.getElementById('buildIcon113').style.backgroundPosition = moBP113;
	document.getElementById('buildIcon13').style.backgroundPosition = moBP13;
	document.getElementById('buildIcon6').style.backgroundPosition = moBP6;
	document.getElementById('buildIcon4').style.backgroundPosition = moBP4;
	document.getElementById('buildIcon3').style.backgroundPosition = moBP3;
	document.getElementById('buildIcon9').style.backgroundPosition = moBP9;
	document.getElementById('buildIcon12').style.backgroundPosition = moBP12;
	document.getElementById('buildIcon8').style.backgroundPosition = moBP8;
	document.getElementById('buildIcon11').style.backgroundPosition = moBP11;
	document.getElementById('buildIcon1').style.backgroundPosition = moBP1;

/*
	document.getElementById('buildIcon113').style.cursor = (values['113'] ? 'pointer' : 'default');
	document.getElementById('buildIcon13').style.cursor = (values['13'] ? 'pointer' : 'default');
	document.getElementById('buildIcon6').style.cursor = (values['6'] ? 'pointer' : 'default');
	document.getElementById('buildIcon4').style.cursor = (values['4'] ? 'pointer' : 'default');
	document.getElementById('buildIcon3').style.cursor = (values['3'] ? 'pointer' : 'default');
	document.getElementById('buildIcon9').style.cursor = (values['9'] ? 'pointer' : 'default');
	document.getElementById('buildIcon12').style.cursor = (values['12'] ? 'pointer' : 'default');
	document.getElementById('buildIcon8').style.cursor = (values['8'] ? 'pointer' : 'default');
	document.getElementById('buildIcon11').style.cursor = (values['11'] ? 'pointer' : 'default');
	document.getElementById('buildIcon1').style.cursor = (values['1'] ? 'pointer' : 'default');

	document.getElementById('buildIcon113').style.backgroundPosition = '0 ' + (buildValue == '113' ? '-50px' : (values['113'] ? '0' : '-100px'));
	document.getElementById('buildIcon13').style.backgroundPosition = '-171px ' + (buildValue == '13' ? '-50px' : (values['13'] ? '0' : '-100px'));
	document.getElementById('buildIcon6').style.backgroundPosition = '-342px ' + (buildValue == '6' ? '-50px' : (values['6'] ? '0' : '-100px'));
	document.getElementById('buildIcon4').style.backgroundPosition = '-513px ' + (buildValue == '4' ? '-50px' : (values['4'] ? '0' : '-100px'));
	document.getElementById('buildIcon3').style.backgroundPosition = '-684px ' + (buildValue == '3' ? '-50px' : (values['3'] ? '0' : '-100px'));
	document.getElementById('buildIcon9').style.backgroundPosition = '-855px ' + (buildValue == '9' ? '-50px' : (values['9'] ? '0' : '-100px'));
	document.getElementById('buildIcon12').style.backgroundPosition = '-1026px ' + (buildValue == '12' ? '-50px' : (values['12'] ? '0' : '-100px'));
	document.getElementById('buildIcon8').style.backgroundPosition = '-1197px ' + (buildValue == '8' ? '-50px' : (values['8'] ? '0' : '-100px'));
	document.getElementById('buildIcon11').style.backgroundPosition = '-1368px ' + (buildValue == '11' ? '-50px' : (values['11'] ? '0' : '-100px'));
	document.getElementById('buildIcon1').style.backgroundPosition = '-1539px ' + (buildValue == '1' ? '-50px' : (values['1'] ? '0' : '-100px'));
*/
}

function mdxBase64decode(input)
{
	var key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var output = '';

	if(input)
	{
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');

		while(i < input.length)
		{
			enc1 = key.indexOf(input.charAt(i++));
			enc2 = key.indexOf(input.charAt(i++));
			enc3 = key.indexOf(input.charAt(i++));
			enc4 = key.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output += String.fromCharCode(chr1);

			if (enc3 != 64)
			{
				output += String.fromCharCode(chr2);
			}
			if (enc4 != 64)
			{
				output += String.fromCharCode(chr3);
			}
		}
		
	}
	return output;
}
