function FillupOtherField(receive,send) {
	document.getElementById(send).value = document.getElementById(receive).value;
}

function FillupField(field,text) {
	document.getElementById(field).value = text;
}

function ShowFields (showit,layers,testvalue) {
	Array.prototype.count = function() {
		return this.length;
	};
	var layer_array = layers.split(",");
	var anz = layer_array.count();
	for (x=0; x<anz; x++) {
		if ((document.getElementById(showit).type == "radio" && document.getElementById(showit).checked == true) || (document.getElementById(showit).type == "checkbox" && document.getElementById(showit).checked == true) || (document.getElementById(showit).type == "select-one" && document.getElementById(showit).value == testvalue)) {
			document.getElementById(layer_array[x]).style.display = "table-row";
		}else{
			document.getElementById(layer_array[x]).style.display = "none";
//			document.getElementById(layer_array[x]).value = "";
			var y = layer_array[x] + "_input";
			if (document.getElementById(y).type == "text") {
				document.getElementById(y).value = "";
			}
			if (document.getElementById(y).type == "checkbox") {
				document.getElementById(y).checked = false;
			}
			if (document.getElementById(y).type == "select-one") {
				document.getElementById(y).selectedIndex = 0;
			}
		}
	}
}

function ShowFieldsNeg (showit,layers) {
	Array.prototype.count = function() {
		return this.length;
	};
	var layer_array = layers.split(",");
	var anz = layer_array.count();
	for (x=0; x<anz; x++) {
		if (document.getElementById(showit).checked == false) {
			document.getElementById(layer_array[x]).style.display = "inline";
		}else{
			document.getElementById(layer_array[x]).style.display = "none";
//			document.getElementById(layer_array[x]).value = "";
			var y = layer_array[x] + "_input";
			if (document.getElementById(y).type == "text") {
				document.getElementById(y).value = "";
			}
			if (document.getElementById(y).type == "checkbox") {
				document.getElementById(y).checked = false;
			}
			if (document.getElementById(y).type == "select-one") {
				document.getElementById(y).selectedIndex = 0;
			}
		}
	}
}

//Gets the browser specific XmlHttpRequest Object
function getXmlHttpRequestObject() {
	if (window.XMLHttpRequest) {
		return new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		/*document.getElementById('p_status').innerHTML = 
		'Status: Cound not create XmlHttpRequest Object.' +
		'Consider upgrading your browser.';*/
	}
}

var searchReq = getXmlHttpRequestObject();
var suggestSelected = 0;
//Called from keyup on the search textbox.
//Starts the AJAX request.
function SearchDisplay(field,req_fields,minlength) {
	if (searchReq.readyState == 4 || searchReq.readyState == 0) {
		var str = escape(document.getElementById(field).value);
		var req_f = req_fields.split(",");
		var err = 0;
		var extra_data = '';
		if (req_fields!='') {
			for(i=0; i < req_f.length; i++) {
				var tmpreqf = req_f[i];
				var tmpreqfv = document.getElementById(tmpreqf).value;
//				alert(tmpreqf+' : '+tmpreqfv);
				if (tmpreqfv!="") {
					extra_data += '&'+tmpreqf+'='+tmpreqfv;
				}else{
					err++;
				}
			}
		}
		if (str.length >= minlength && err == 0) {
			searchReq.open("GET", '/searchsuggest.php?SID='+SID+'&field='+field+''+extra_data+'&search=' + str, true);
//			searchReq.open("GET", '/searchsuggest.php?field='+field+''+extra_data+'&search=' + str, true);
			searchReq.onreadystatechange = function handleSearchSuggest() {
				if (searchReq.readyState == 4) {
					document.getElementById('search_suggest_'+field).innerHTML = '';
					var str = searchReq.responseText.split("\n");
					for(i=0; i < str.length - 1; i++) {
						document.getElementById('search_suggest_'+field).innerHTML += '<div onmouseover="javascript:suggestOver(this);" onmouseout="javascript:suggestOut(this);SearchHide(\''+field+'\',5);" onclick="javascript:setSearch(this.innerHTML,\''+field+'\');" class="suggest_link">' + str[i] + '</div>';	
					}
					if (i==0) { 
						document.getElementById('search_suggest_'+field).style.border='0px';
					}else{
						document.getElementById('search_suggest_'+field).style.border='1px solid #000000';
					}
				}
			}; 
			searchReq.send(null);
			var obj = document.getElementById(field);
//			var left_pos = FindObjectLeft(obj);
			if (obj.offsetLeft) {
				var left_pos = obj.offsetLeft;
			}else if (obj.x) {
				var left_pos = obj.x;
			}
			var top_pos = FindObjectTop(obj);
			var field_height = obj.offsetHeight;
			var field_width = obj.offsetWidth;
			document.getElementById('search_suggest_'+field).style.left=left_pos+'px'; //(left_pos-field_width)+'px';
			document.getElementById('search_suggest_'+field).style.top=(top_pos+field_height)+'px';
			document.getElementById('search_suggest_'+field).style.display='block';
			SearchHide(field,10);
		}
//		setTimeout("SearchHide('"+field+"');",3000);
	}		
}
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}
function SearchDown(e,field) {
	if(e.keyCode == 38) {
		//Up key
		var str = '';
		for(i=0; i < document.getElementById('search_suggest_'+field).childNodes.length; i++) {
			//Check to see if nodeName == "DIV";
			str += document.getElementById('search_suggest_'+field).childNodes[i].nodeName + "\n";
		}
		e.cancel = true;
	} else if(e.keyCode == 40) {
		//Down key
	}
}
function setSearch(value,field) {
	document.getElementById(field).value = value;
	document.getElementById('search_suggest_'+field).innerHTML = '';
	document.getElementById('search_suggest_'+field).style.display='none';
	document.getElementById('searchform').submit();
}

function DoSearchHide (field) {
	document.getElementById('search_suggest_'+field).innerHTML = '';
	document.getElementById('search_suggest_'+field).style.display='none';
}

function SearchHide(field,seconds) {
	duration = seconds * 2000;
	window.setTimeout("DoSearchHide('"+field+"')", duration);
}

function FindObjectLeft(obj){
	var lPos = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			lPos += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}else if (obj.x) {
		lPos += obj.x;
	}
	return lPos;
}

function FindObjectTop(obj){
	var oPos = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			oPos += obj.offsetTop
			obj = obj.offsetParent;
		}
	}else if (obj.y) {
		oPos += obj.y;
	}
	return oPos;
}

var wv = { 
	review: {
		rate: function(value,field){
			var _form = document.getElementById("rating");
			if ( _form !== null) {
				if (document.getElementById(field)) {
					document.getElementById(field).value = value;
				}
				var current_field = 'current_rate_'+field;
				document.getElementById(current_field).style.width = (value * 20) + '%';
			}
		}
	}
};

function GetFormData(form, asArray) {
	var ret;
	var add = function(n, v) {
		if(asArray) {
			if(ret == null) ret = new Array();
			ret[n] = escape(v);
		} else {
			ret = (ret == null ? '' : ret+'&') + n +'='+ escape(v);
		}
	};
 
	for(var i=0; i<form.elements.length; i++) {
		var el = form.elements[i];
		var type = (el.type || '');
 
		if(type.match(/^(text|hidden|textarea)$/i) || (type.match(/^(radio|checkbox)$/i) && el.checked)) {
			add(el.name, el.value);
		} else if(el.nodeName.match(/^select$/i)) {
			for(var j=0; j<el.options.length; j++) {
				if(el.options[j].selected) {
					add(el.name, el.options[j].value);
				}
			}
		} else if(el.nodeName.match(/^textarea$/i)) {
			add(el.name, el.value);
		}
	}
	return ret != null ? ret : (asArray ? new Array() : '');
}

function SendFormPost(url, postData, callback, sourceform) {
	var req;
	var response;
 	try {
		req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); 
	} catch (e) {
		// browser does not have ajax support
	}
	req.onreadystatechange = typeof callback == 'function' ? callback : function() {
		if (req.readyState == 4 && req.status == 200) {
			if(typeof callback == 'string') callback = document.getElementById(callback);
			response = req.responseText;
			if(callback) callback.innerHTML = response;
			if(sourceform && typeof sourceform == 'string') {
				document.getElementById(sourceform).style.display = 'none';
			}
			callback.style.display = 'block';
		}
		if (req.readyState == 4 && req.status == 202) {
			if(typeof callback == 'string') callback = document.getElementById(callback);
			response = req.responseText;
			if(callback) callback.innerHTML = response;
			callback.style.display = 'block';
		}
	};
	req.open('POST', url, true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send(postData);
	return false;
}

function ShowFeedbackForm(ID) {
	document.getElementById('feedback_overlay').style.display = 'block';
	document.getElementById('feedback_overlay').style.opacity = '0.5';
	document.getElementById('feedback_form').style.display = 'block';
	var form_html = '<div class="feedback_header">Hier k&ouml;nnen Sie uns einen fehlerhaften Eintrag melden.</div><div class="feedback_cancel"><a href="javascript:void(0)" onclick="HideFeedbackForm();" title="Abbrechen"><img id="feedback_close" src="/images/close.png" alt="Abbrechen" border="0" /></a></div>';
	form_html+= '<div id="feedback_formular"><form id="feedback" method="post" action="/send_feedback.php" onsubmit="return SendFormPost(\'/send_feedback.php\', GetFormData(this),\'feedback_submit\', \'feedback_formular\');">';
	form_html+= 'Wir sind stets daran interssiert, unsere Datenbank auf aktuellstem Stand zu halten. Dabei k&ouml;nnen aus Sie gern helfen und uns fehlerhafte Daten oder Angebote melden. Vielen Dank im Voraus!<br /><br />';
	form_html+= 'Art des Fehlers: <select name="feedback[error_type]" /><option value="">bitte w&auml;hlen</option><option value="Link falsch">Link falsch</option><option value="Preis falsch">Preis falsch</option><option value="Features falsch">Features falsch</option><option value="Kontaktdaten falsch">Kontaktdaten falsch</option><option value="Anbieterdaten falsch">Anbieterdaten falsch</option><option value="anderer Fehler">anderer Fehler</option></select><br />';
	form_html+= '<br>kurze Beschreibung des Fehlers:<br /><textarea name="feedback[message]" cols="40" rows="5"></textarea>';	
	
	form_html+= '<input type="hidden" name="feedback[eintrag]" value="'+ID+'" />';
	form_html+= '<input type="hidden" name="action" value="send"><input name="Speichern" type="submit" id="sendsubmit" value="SENDEN" />';
	form_html+= '</form></div><div id="feedback_submit"></div>';
	
	document.getElementById('feedback_form').innerHTML = form_html;
}

function HideFeedbackForm() {
	document.getElementById('feedback_overlay').style.display = 'none';
	document.getElementById('feedback_form').style.display = 'none';
	document.getElementById('feedback_form').innerHTML = '';
}

function ShowFacebookLike (ID,URL) {
	obj = document.getElementById(ID);
	if (obj) {
		obj.innerHTML = '<iframe src="https://www.facebook.com/plugins/like.php?href='+URL+'&amp;show_faces=false&amp;font=tahoma" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:313px; height:30px;"></iframe>';
	}
}

function ShowFacebookBox (ID) {
	obj = document.getElementById(ID);
	if (obj) {
		obj.innerHTML = '<iframe src="http://www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2FWebserver-Vergleichde%2F121392481224878&amp;width=160&amp;colorscheme=light&amp;show_faces=true&amp;stream=false&amp;header=false&amp;height=300" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:160px; height:300px;" allowTransparency="true"></iframe>';
	}
}

function InitMap (ID) {
	var imageID = ID+'img';
	var mapID = ID+'map';
	imgOBJ = document.getElementById(imageID);
	mapOBJ = document.getElementById(mapID);
	if (imgOBJ && mapOBJ) {
		imgOBJ.setAttribute("usemap","#"+mapID);
		mapOBJ.setAttribute("name", mapID);
	}
}

function UpdateAvail(id,user_id) {
	var obj = document.getElementById(id);
	var availreq = getXmlHttpRequestObject();
	availreq.open("GET", '/getavail.php?user_id='+user_id, true);
	availreq.onreadystatechange = function handle() {
		if (availreq.readyState == 4) {
			if (obj) obj.innerHTML = availreq.responseText;
		}
	}; 
	availreq.send(null);
}

/* tabs tabs tabs */
var Spry;
if (!Spry) Spry = {};
if (!Spry.Widget) Spry.Widget = {};

Spry.Widget.TabbedPanels = function(element, opts) {
	this.element = this.getElement(element);
	this.defaultTab = 0;
	this.bindings = [];
	this.tabSelectedClass = "TabbedPanelsTabSelected";
	this.tabHoverClass = "TabbedPanelsTabHover";
	this.tabFocusedClass = "TabbedPanelsTabFocused";
	this.panelVisibleClass = "TabbedPanelsContentVisible";
	this.focusElement = null;
	this.hasFocus = false;
	this.currentTabIndex = 0;
	this.enableKeyboardNavigation = true;
	Spry.Widget.TabbedPanels.setOptions(this, opts);
	if (typeof (this.defaultTab) == "number") {
		if (this.defaultTab < 0) {
			this.defaultTab = 0;
		} else {
			var count = this.getTabbedPanelCount();
			if (this.defaultTab >= count) {
				this.defaultTab = (count > 1) ? (count - 1) : 0;
			}
		}
		this.defaultTab = this.getTabs()[this.defaultTab];
	}
	if (this.defaultTab) {
		this.defaultTab = this.getElement(this.defaultTab);
	}
	this.attachBehaviors();
};
Spry.Widget.TabbedPanels.prototype.getElement = function(ele) {
	if (ele && typeof ele == "string") {
		return document.getElementById(ele);
	}
	return ele;
}
Spry.Widget.TabbedPanels.prototype.getElementChildren = function(element) {
	var children = [];
	var child = element.firstChild;
	while (child) {
		if (child.nodeType == 1) {
			children.push(child);
		}
		child = child.nextSibling;
	}
	return children;
};
Spry.Widget.TabbedPanels.prototype.addClassName = function(ele, className) {
	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1)) {
		return;
	}
	ele.className += (ele.className ? " " : "") + className;
};
Spry.Widget.TabbedPanels.prototype.removeClassName = function(ele, className) {
	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)) {
		return;
	}
	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
};
Spry.Widget.TabbedPanels.setOptions = function(obj, optionsObj, ignoreUndefinedProps) {
	if (!optionsObj) {
		return;
	}
	for (var optionName in optionsObj) {
		if (ignoreUndefinedProps && optionsObj[optionName] == undefined) {
			continue;
		}
		obj[optionName] = optionsObj[optionName];
	}
};
Spry.Widget.TabbedPanels.prototype.getTabGroup = function() {
	if (this.element) {
		var children = this.getElementChildren(this.element);
		if (children.length) {
			return children[0];
		}
	}
	return null;
};
Spry.Widget.TabbedPanels.prototype.getTabs = function() {
	var tabs = [];
	var tg = this.getTabGroup();
	if (tg) {
		tabs = this.getElementChildren(tg);
	}
	return tabs;
};
Spry.Widget.TabbedPanels.prototype.getContentPanelGroup = function() {
	if (this.element) {
		var children = this.getElementChildren(this.element);
		if (children.length > 1) {
			return children[1];
		}
	}
	return null;
};
Spry.Widget.TabbedPanels.prototype.getContentPanels = function() {
	var panels = [];
	var pg = this.getContentPanelGroup();
	if (pg) {
		panels = this.getElementChildren(pg);
	}
	return panels;
};
Spry.Widget.TabbedPanels.prototype.getIndex = function(ele, arr) {
	ele = this.getElement(ele);
	if (ele && arr && arr.length) {
		for (var i = 0; i < arr.length; i++) {
			if (ele == arr[i]) {
				return i;
			}
		}
	}
	return -1;
};
Spry.Widget.TabbedPanels.prototype.getTabIndex = function(ele) {
	var i = this.getIndex(ele, this.getTabs());
	if (i < 0) {
		i = this.getIndex(ele, this.getContentPanels());
	}
	return i;
};
Spry.Widget.TabbedPanels.prototype.getCurrentTabIndex = function() {
	return this.currentTabIndex;
};

Spry.Widget.TabbedPanels.prototype.getTabbedPanelCount = function(ele) {
	return Math.min(this.getTabs().length, this.getContentPanels().length);
};
Spry.Widget.TabbedPanels.addEventListener = function(element, eventType, handler, capture) {
	try {
		if (element.addEventListener) {
			element.addEventListener(eventType, handler, capture);
		} else if (element.attachEvent) {
			element.attachEvent("on" + eventType, handler);
		}
	} catch (e) { }
};
Spry.Widget.TabbedPanels.prototype.onTabClick = function(e, tab) {
	this.showPanel(tab);
};
Spry.Widget.TabbedPanels.prototype.onTabMouseOver = function(e, tab) {
	this.addClassName(tab, this.tabHoverClass);
};
Spry.Widget.TabbedPanels.prototype.onTabMouseOut = function(e, tab) {
	this.removeClassName(tab, this.tabHoverClass);
};
Spry.Widget.TabbedPanels.prototype.onTabFocus = function(e, tab) {
	this.hasFocus = true;
	this.addClassName(this.element, this.tabFocusedClass);
};
Spry.Widget.TabbedPanels.prototype.onTabBlur = function(e, tab) {
	this.hasFocus = false;
	this.removeClassName(this.element, this.tabFocusedClass);
};
Spry.Widget.TabbedPanels.ENTER_KEY = 13;
Spry.Widget.TabbedPanels.SPACE_KEY = 32;
Spry.Widget.TabbedPanels.prototype.onTabKeyDown = function(e, tab) {
	var key = e.keyCode;
	if (!this.hasFocus || (key != Spry.Widget.TabbedPanels.ENTER_KEY && key != Spry.Widget.TabbedPanels.SPACE_KEY)) {
		return true;
	}
	this.showPanel(tab);
	if (e.stopPropagation) {
		e.stopPropagation();
	}
	if (e.preventDefault) {
		e.preventDefault();
	}
	return false;
};
Spry.Widget.TabbedPanels.prototype.preorderTraversal = function(root, func) {
	var stopTraversal = false;
	if (root) {
		stopTraversal = func(root);
		if (root.hasChildNodes()) {
			var child = root.firstChild;
			while (!stopTraversal && child) {
				stopTraversal = this.preorderTraversal(child, func);
				try { child = child.nextSibling; } catch (e) { child = null; }
			}
		}
	}
	return stopTraversal;
};
Spry.Widget.TabbedPanels.prototype.addPanelEventListeners = function(tab, panel) {
	var self = this;
	Spry.Widget.TabbedPanels.addEventListener(tab, "click", function(e) { return self.onTabClick(e, tab); }, false);
	Spry.Widget.TabbedPanels.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e, tab); }, false);
	Spry.Widget.TabbedPanels.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e, tab); }, false);
	if (this.enableKeyboardNavigation) {
		var tabIndexEle = null;
		var tabAnchorEle = null;
		this.preorderTraversal(tab, function(node) {
			if (node.nodeType == 1)	{
				var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
				if (tabIndexAttr) {
					tabIndexEle = node;
					return true;
				}
				if (!tabAnchorEle && node.nodeName.toLowerCase() == "a") {
					tabAnchorEle = node;
				}
			}
			return false;
		});
		if (tabIndexEle) {
			this.focusElement = tabIndexEle;
		} else if (tabAnchorEle) {
			this.focusElement = tabAnchorEle;
		}
		if (this.focusElement) {
			Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "focus", function(e) { return self.onTabFocus(e, tab); }, false);
			Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "blur", function(e) { return self.onTabBlur(e, tab); }, false);
			Spry.Widget.TabbedPanels.addEventListener(this.focusElement, "keydown", function(e) { return self.onTabKeyDown(e, tab); }, false);
		}
	}
};
Spry.Widget.TabbedPanels.prototype.showPanel = function(elementOrIndex) {
	var tpIndex = -1;
	if (typeof elementOrIndex == "number") {
		tpIndex = elementOrIndex;
	} else  {
		tpIndex = this.getTabIndex(elementOrIndex);
	}
	if (!tpIndex < 0 || tpIndex >= this.getTabbedPanelCount()) {
		return;
	}
	var tabs = this.getTabs();
	var panels = this.getContentPanels();
	var numTabbedPanels = Math.max(tabs.length, panels.length);
	for (var i = 0; i < numTabbedPanels; i++) {
		if (i != tpIndex) {
			if (tabs[i]) {
				this.removeClassName(tabs[i], this.tabSelectedClass);
			}
			if (panels[i]) {
				this.removeClassName(panels[i], this.panelVisibleClass);
				panels[i].style.display = "none";
			}
		}
	}
	this.addClassName(tabs[tpIndex], this.tabSelectedClass);
	this.addClassName(panels[tpIndex], this.panelVisibleClass);
	panels[tpIndex].style.display = "block";
	this.currentTabIndex = tpIndex;
};
Spry.Widget.TabbedPanels.prototype.attachBehaviors = function(element) {
	var tabs = this.getTabs();
	var panels = this.getContentPanels();
	var panelCount = this.getTabbedPanelCount();
	for (var i = 0; i < panelCount; i++) {
		this.addPanelEventListeners(tabs[i], panels[i]);
	}
	this.showPanel(this.defaultTab);
};
