function xml_get_node_value(obj,tag) {
	return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}
function xml_get_list(request,tag) {
	return request.responseXML.getElementsByTagName(tag);
}

function load_page_to_div(div, page, params) {
	var url = 'load_ajax.php';
	params = '_page='+page+'&'+params;

	var myAjax = new Ajax.Updater(
		div,
		url, {
			method: 'post',
			parameters: params,
			evalScripts: true,
			onFailure: reportError
		}
	);
	function reportError(request) {
		alert('Az oldal átmenetileg nem érhető el!');
	}
}

function send_form(form, page, params, report_page, report_div, report_params) {
	// hibaüzenetek elrejtése
	var elements = Form.getElements(form);
	for (var i=0; i<elements.length; i++) {
		if ( elements[i].name.length > 0 ) {
			$(elements[i].name+"_error").innerHTML = "";
		}
	}

	var url = 'pages/'+page+'.php';
	params = Form.serialize(form);
	var myAjax = new Ajax.Request(
		url, {
			method: 'post',
			parameters: params,
			onFailure: reportError,
			onComplete: showResponse
		}
	);
	
	function reportError(request) {
		alert('Az oldal átmenetileg nem érhető el!');
	}
	
	function showResponse(request) {
		//alert(request.responseText);
		var error_fields = Array();
		var errors = xml_get_list(request,"error");
		for (var i=0; i<errors.length; i++) {
			field = xml_get_node_value(errors[i], 'field');
			text  = xml_get_node_value(errors[i], 'text');
			$(field+"_error").innerHTML = text;
			error_fields[error_fields.length] = field;
		}
		// ha volt hiba, akkor villogtatjuk az inputokat, különben megyünk a report_page-re
		if ( error_fields.length > 0 ) {
			//blinking(error_fields);
		} else {
			if ( report_div.length > 0 ) {
				load_page_to_div(report_div, report_page, report_params);
			} else {
				document.location.href = report_page;
			}
		}
	}
	return false;
}

function blinking_element(element_name) {
	// config begin
	blink_color = '#ff0000';
	blink_speed = 80;
	blink_times = 3;
	// config end

	color = $(element_name).style.background;
	interval = 0;
	for ( times=0; times<blink_times; times++ ){
		interval += blink_speed;
		setTimeout("$('"+element_name+"').style.background='"+blink_color+"'",interval);
		interval += blink_speed;
		setTimeout("$('"+element_name+"').style.background='"+color+"'",interval);
	}
}

function blinking(elements) {
	for (var i=0; i<elements.length; i++) {
		blinking_element(elements[i]);
	}
}

function clear_div(div_id) {
	div = $(div_id);
	div.innerHTML = "";
	div.style.display = 'none';
}

function load_options(sel, page, params, first, selected) {
	var sel = $(sel);
	sel.disabled = true;

	var url = 'pages/'+page+'.php';

	var myAjax = new Ajax.Request(
		url, {
			method: 'post',
			parameters: params,
			onFailure: reportError,
			onComplete: showResponse
		}
	);

	function reportError(request) {
		alert('Az oldal átmenetileg nem érhető el!');
	}
	
	function showResponse(originalRequest) {
		sel.options.length = 0;
		if ( first.length > 0 ) {
			sel.options[sel.options.length] = new Option(first,0);
		}
		var list = xml_get_list(originalRequest,"opt");
		for (var i=0; i<list.length; i++) {
			value = xml_get_node_value(list[i], 'value');
			text  = xml_get_node_value(list[i], 'text');
			sel.options[sel.options.length] = new Option(text,value);
			if ( value == selected ) {
				sel.options[sel.options.length-1].selected = true;
			}
		}
		sel.disabled = false;
	}
}

/*******************************
		GMap functions
*******************************/

// Térkép létrehozása
function createMap(x, y, alt) {
	GUnload();

  if (GBrowserIsCompatible()) {
		map = new GMap2($("gmap"));
    map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.addControl(new GLargeMapControl());
		//map.addControl(new GMapTypeControl());
		//map.addControl(new GOverviewMapControl());
		center = new GLatLng(x,y);
    map.setCenter(center, alt);
    return map;
  } else {
  	alert('A böngésző nem támogtaja a térképet!');
  	return false;
  }
}

// bázis ikon definiálása
function createBaseIcon() {
	baseIcon = new GIcon();
	baseIcon.image = "images/gmap_default_icon.png";
	baseIcon.shadow = "images/gmap_default_shadow.png";
	baseIcon.iconSize = new GSize(12, 20);
	baseIcon.shadowSize = new GSize(22, 20);
	baseIcon.iconAnchor = new GPoint(6, 20);
	baseIcon.infoWindowAnchor = new GPoint(6, 10);

	return baseIcon;
}

// bejelölő készítése
function createPointer(func) {
	pointer_marker = new GMarker(center, {draggable: true});
	GEvent.addListener(pointer_marker, "dragend", function() {
		var point = pointer_marker.getPoint();
		map.zoomIn();
		map.panTo(point);
		func(point.x,point.y);
	});
	return pointer_marker;
}

// pont készítése
function createPoint(x, y, icon) {
	point = new GLatLng(x,y);
	marker = new GMarker(point, icon);
	return marker;
}

// Pont bejelölő térkép kíészítése (Magyarországhoz)
function createPointerMap() {
	var map = createMap(47.2, 19, 7);
	map.addOverlay(createPointer());
}

function createMapWithPoints(x, y, alt, points) {
	var map = createMap(x, y, alt);
	for (var i=0; i<points.length; i++) {
  	map.addOverlay(createPoint(points[i][0], points[i][1], createBaseIcon()));
	}
}

function spaces_count(str) {
	for (var i=0; i<str.length; i++) {
		if (str.charCodeAt(i) != 160) {
			return i;
		}
	}
	return 0;
}

function goto(hova) {
	var loc="";
	var new_loc="";
	loc+=window.location;
	var egyenlohelye=hova.indexOf("=");
	var hol=loc.indexOf("&"+hova.substring(0,egyenlohelye));
	new_loc=loc.substring(0,hol);
	new_loc+="&"+hova;
	var segedloc=loc.substring(hol+1,loc.length);
	var hol2=segedloc.indexOf("&");
	if (hol2>0) new_loc+=segedloc.substring(hol2,loc.length);
	
	if (hol>0) window.location=new_loc;
		else window.location+="&"+hova;
}
