var selType = null;
var selView = null;

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 submitSearchMask(section) {
	if(!market) return;
	if(!section) section = 'result';
	var param = market.createParamList(section);
	if(!param) param = 'sort=price';
	param = market.b64encode(param);
	location.href = '/go.to/modix/2/pkw.html?' + param;
}

function freeTextSearch(frmName) {
	if(!market) return;
	var f = document.getElementById(frmName);

	if(f && f.searchstring && f.searchstring.value) {
		var param = 'chiffre=' + escape(f.searchstring.value);
		param = market.b64encode(param);
		location.href = '/go.to/modix/3/pkw.html?' + param;
	}
}

function setActive(obj) {
	if(obj && selType != obj) {
		if(obj.src.lastIndexOf('_on.') == -1) {
			var point = obj.src.lastIndexOf('.');
			var ext = obj.src.substr(point);
			var name = obj.src.substr(0, point);
			obj.src = name + '_on' + ext;
		}
	}
}

function setInactive(obj) {
	if(obj && selType != obj) {
		var suffix = obj.src.lastIndexOf('_');

		if(suffix != -1) {
			var point = obj.src.lastIndexOf('.');
			var ext = obj.src.substr(point);
			var name = obj.src.substr(0, suffix);
			obj.src = name + ext;
		}
	}
}

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 = document.getElementById('tabs');

	if(obj) {
		var img = 'url(' + modixDatadir + '/images/tabs_' + type + '.jpg)';
		obj.style.backgroundImage = img;
	}
	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=price';
	if(!selView) selView = 'list';
	var xsl = modixDatadir + '/xsl/result_' + selView + '.xsl';
	market.pageCnt = 5;
	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 switchResultList(type) {
	if(!market) return;
	var xsl = modixDatadir + '/xsl/result_' + type + '.xsl';
	market.switchListView(xsl);
	setTab(type);
}

function sortResultList(field) {
	if(!market) return;
	market.sortResultList(field, true);
	market.createPageNumbers();
}

function viewDetails(id, section) {
	if(!market) return;
	var link = param = '';

	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/pkw.html?' + param;
	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=price';
	}
	goToPage('/go.to/modix/2/pkw.html', param)
}

function goToSearchForm(param) {
	goToPage('/go.to/modix/now/pkw.html', param);
}

function loadForm() {
	if(!market) return;
	var param = getParams();
	param = param.replace(/&?page=[^&]*/, '');
	market.loadForm(param);
}

function viewPinboard() {
	location.href = '/go.to/modix/now/mein_parkplatz.html';
}

function addVehicle(vkey) {
	if(!market) return;
	market.addVehicle(vkey);
	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 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 = '';
		var param = market.cache.result.param;
		if(!param) param = getParams();
		if(param.match(/sort=([^&]+)/)) sort = RegExp.$1;

		if(sort) {
			if(f1.sort) market.setField(f1.sort, sort);
			if(f2.sort) market.setField(f2.sort, sort);
		}
	}
	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 viewTypes() {
	if(!market) return;
	market.loadSection('carbuild');
}

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;
	}
}