// E-mail címet <a href="mailto:info#kukac#jox#pont#hu" onClick="defendSpam(this);">info@jox.hu</a> -ba tehetjük
function defendSpam(x) {
	x.href=x.href.replace("#kukac#", "@");
	x.href=x.href.replace("#pont#", ".");
	return true;
}

//
// szám konvertálása más számrendszerbe
//
Number.prototype.toBase = function(b, c){
    var s = "", n = this;
    if(b > (c = (c || "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz").split("")).length || b < 2) return "";
    while(n)
        s = c[n % b] + s, n = Math.floor(n / b);
    return s;
};
//
// a string-ként megadott hexadecimális jegyekből 
// álló sorozatot ascii text-é alakítja
//
function hex2text(hex)
{
	var text = '';
	for(var i=0 ; i<hex.length ; i+=2) {
		text = text + String.fromCharCode(  parseInt(hex.charAt(i),16)*16 + parseInt(hex.charAt(i+1),16) );
	}
	return text;
}

//
// a string-ként megadott ascii text-t 
// hexadecimális számjegyekké alakítja
//
function text2hex(text)
{
	var hex = '';
	for(var i=0; i<text.length; i++) {
		var chr = text.charCodeAt(i).toBase(16);
		hex = hex + chr;
	}
	return hex.toLowerCase();
}

//
// Az updateList() függvény által kért és a szerveroldali fájl által szolgáltatott
// XML fájlt elemzi
// Mindig a függőségi fában legmagasabban elhelyezkedő, még feltöltetlen <select> -t update-eli
// Egyelőre még csak <select> van támogatva
// TO DO : <input> <textarea>, stb. támogatása
//

function handleHttpResponse( response ) 
{
	if (response.readyState == 4 && response.status == 200) {
		var xmlList = response.responseXML.getElementsByTagName(nowUpdateing);
		var Object = $(nowUpdateing);
		Object.disabled = false;

		// Betöltés... kiszedése
		Object.removeChild(Object.childNodes[0]);
		var option = null;
		// A <xmlresult> -ba egy h="0|1" attributum jelzi, hogy megjelenhet-e a hozzaadas gomb
		var xmlHeader = response.responseXML.getElementsByTagName('xmlresult');
		hozzaadas = xmlHeader[0].getAttribute("h");
		for (var j=0; j<xmlList.length; j++) {
			option = document.createElement("option");
			// Az orszag/regio/telepules/varosresz adatbazisbeli azonositoja
			option.setAttribute('value', xmlList[j].getAttribute("kod") );
			option.appendChild(document.createTextNode(xmlList[j].firstChild.nodeValue));
			$(nowUpdateing).appendChild(option);
		}
	
		// Megnézzük, kérvényeztük-e az új hozzáadásának engedélyezését
		for(var key in addlist) {
			if(nowUpdateing == key && hozzaadas == 1) {
				// ha nem üres a lista
				if(($(nowUpdateing).options.length > 1)) {
					$(addlist[nowUpdateing]['toggle']).value = addlist[nowUpdateing]['toggleOn'];
					Element.show(addlist[nowUpdateing]['toggle']);
				} else {
					Element.hide(addlist[nowUpdateing]['select']);
					Element.show(addlist[nowUpdateing]['input']);
					$(addlist[nowUpdateing]['input']).value = '';
				}
			}
		}
	}
}

//
// Egy dropdownlist elemeit tölti fel XML-es kommunikációval
// A kiváltó <select> alatt elhelyezkedő <select> -t frissíti
// - az adott <select> onchange eventjéhez kell hozzáadni onchange=updateList(this.id); formában
// 
// Szükséges változók : xmlhandler, selectlist, addlist
// var selectlist = new Array('orszag','regio','telepules','varosresz'); formában (függőségi fa)
// var xmlhandler = 'ajax_update.php'; formájában.
function updateList(id,kereso_mod,help_felirat) 
{
	if (!isWorking) {
		if (help_felirat == 'Új település felvétele') {
			kereso_mod = false;
		}
		isWorking = true;
		// A hívó select indexét megkeressük
		var i;
		for(i=0; i<selectlist.length; i++) {
			if( id == selectlist[i] ) {
				break;
			}
		}
		// Ha üresre állították a hívó select-t, töröljük az alatta lévőek tartalmát
		if( !kereso_mod && ($(id).selectedIndex == 0 && id != 'orszag')) {
			for(var j=i+1; j<selectlist.length; j++) {
				clearList(selectlist[j]);
				disableList(selectlist[j]);
				if(addlist[selectlist[j]]) {
					selectInputAddHide(addlist[selectlist[j]]);
					Element.hide(addlist[selectlist[j]]['toggle']);
				}
			}
			isWorking = false;
			return;
		}
		// A módosítandó select indexét megkeressük
		i++;
		
		nowUpdateing = selectlist[i];
		// Az alatta lévő select-k törlése
		
		for(var j=i+1;j<selectlist.length; j++){
			clearList(selectlist[j]);
			if(!kereso_mod) {
				// ha nem keresés van, akkor disable
				disableList(selectlist[j]);
			} else {
				// ha keresés van, akkor a mindegy -t visszatesszük, és nincs disabled
				option = document.createElement("option");
				option.appendChild(document.createTextNode(STR_MINDEGY));
				option.setAttribute('value', 0);
				$(selectlist[j]).appendChild(option);
			}
			if(addlist[selectlist[j]]) {
				selectInputAddHide(addlist[selectlist[j]]);
				Element.hide(addlist[selectlist[j]]['toggle']);
			}
		}
		
		clearList(nowUpdateing);

		var option = document.createElement("option");
		option.appendChild(document.createTextNode(STR_BETOLTES+'...'));
		option.setAttribute('value', 0);
		$(nowUpdateing).appendChild(option);
		
		if(addlist[nowUpdateing]) {
			selectInputAddHide(addlist[nowUpdateing]);
			Element.hide(addlist[nowUpdateing]['toggle']);
		}
		
		// A POST adatok beállítása
		var query = '';
		if(kereso_mod) {
			query = "mode=1&update=" + escape(nowUpdateing);
		}
		else {
			query = query + "update=" + escape(nowUpdateing);
		}
		for(var j=i-1;j>=0; j--) {
			query = query + "&" + escape(selectlist[j]) + "=" + escape($F(selectlist[j]));
		}
		query = query + "&request_uri=" + escape(window.location.href);
		// Ajax.Request options beállítása
		var options = {
			method: 'get',
			asynchronous: true,
			onSuccess: handleHttpResponse,
			onFailure: function(t) {
				alert('Az oldal frissítése közben hiba történt. Kérjük próbálja meg újra!');
			}
		}
		new Ajax.Request(xmlhandler + ((xmlhandler.indexOf("?") > 0) ? "&" : "?") + query, options);

		isWorking = false;
	}
}

//
// Egy dropdownlist elemeit kitörli
// @param : a dropdownlist id mezője
//
function clearList(list) 
{
	var listObject = $(list);
	while(listObject.childNodes.length > 0) {
		listObject.removeChild(listObject.childNodes[0]);
	}
}

function disableList(list)
{
	var listObject = $(list);
	var option = null;
	option = document.createElement("option");
	option.appendChild(document.createTextNode(STR_VALASSZON_FENTEBB));
	listObject.appendChild(option);
	listObject.disabled = true;
}
var nowUpdateing = "";
var isWorking = false;

//
// Egy adatbázisból feltöltött <select> -hez új elem felvételének támogatása <input> al.
// @param : array, asszociatív tömb:
//
// var parameter_array = {
//		depend: 'telepules',
//		select: 'varosresz',
//		input: 'varosresz_add',
//		toggle: 'varosresz_toggle',
//		emptyDepend: 'Válassza ki a települést!',
//		toggleOn: 'Új településrész felvétele',
//		toggleOff: 'Vissza'
//	};
// Leírás:
// depend: a <select> -ünk melyik select-től függ
// select: a <select> -ünk id-je
// input: az <input> mezőnk neve (eredetileg rejtett)
// submit: az input elküldéséhez használt submit-gomb(eredetileg rejtett)
// toggle: az új megadása/selectből kiválasztás kapcsológomb (eredetileg látható)
// emptyInput: ha az input mezőt üresen küldené el
// emptyDepend: ha még a függőséget sem választotta ki
// toggleOn, toggleOff: gomb-feliratok
//
// Szükséges változók : xmlhandler, selectlist, array
//
//
function selectInputAddToggle(array)
{
	if(Element.visible(array['select'])) {
		selectInputAddShow(array);
	}
	else {
		selectInputAddHide(array);
	}
}

function selectInputAddShow(array)
{
	Element.hide(array['select']);
	Element.show(array['input']);
	$(array['input']).value = '';
	$(array['toggle']).value = array['toggleOff'];
}
function selectInputAddHide(array)
{
	Element.show(array['select']);
	Element.hide(array['input']);
	$(array['toggle']).value = array['toggleOn'];
}

function delete_default_from_input( field, defval )
{
    if ( field.value == defval ) {
        field.value='';
        field.style.color='#333';
    } else if ( field.value == '' ) {
        field.value=defval;
        field.style.color='#bbb';
    }
}

function formatInt( field, e )
{
	if ( window.jQuery && jQuery.fn.caret ) {
		$field = $('#'+field);
		oldval = $field.attr('data-oldval');
		pos = $field.caret().start;

		// ha semmi nem változott
		if ( oldval == $field.val() ) return;

		// ha csak space törlődött
		if ( oldval && oldval.replace(/[^0-9]/g, '').length == $field.val().replace(/[^0-9]/g, '').length && oldval.length > $field.val().length ) {
			code = (typeof e != 'undefined') ? (e.keyCode ? e.keyCode : e.which) : 0;
			if ( code == 8 && oldval.substr(pos, 1) == ' ' ) { //backspace
				$field.val( $field.val().substr(0,pos-1) + $field.val().substr(pos) );
				--pos;
			} else if (code == 46 && oldval.substr(pos, 1) == ' ' ) { //del
				$field.val( $field.val().substr(0,pos) + $field.val().substr(pos+1) );
			}
		}
		utana = $field.val().substr(pos).replace(/[^0-9]/g, '').length;
	}

	document.getElementById(field).style.color='#333';

    if ( document.getElementById(field).value.length < 1 ) {
        return;
    }
    var object = document.getElementById(field);
    var str = object.value;
	str = str.replace(/\./g, ',');			// . => ,
	str = str.replace(/( |[^0-9,])/g, '');	// szűrés: szóköz, nem szám

	str = str.replace(',', '.');			// első vessző pontra
	str = str.replace(/,/g, '');			// vesszők törlése
	str_parted = str.split('.');			// egész és tizedestört
	str = str_parted[0];					// str-be az egész elhelyezése

	// eredeti egész formázó kezdete
	str = str.replace(/(\s){2,}/g, ' ');
	str = str.replace(/(\d)(\ )+(\d)/g, '$1$3');
	str = str.replace(/(\d)([a-zA-Z])/g, '$1 $2');
	str = str.replace(/([a-zA-Z])(\d)/g, '$1 $2');

	var str_arr = str.split(' ');

	for (i=0; i<str_arr.length; i++) {
		if ( str_arr[i].match(/\d/) > 0 ) {
			str_arr[i] = str_arr[i].replace(/(?=(\d\d\d)+$)/g, ' ');
			str_arr[i] = str_arr[i].replace(/^\s/, '');
		}
	}
	// eredeti egész formázó vége

	str_formatted = str_arr.join(' ');
	tizedes = 0;
	if (str_parted.length>1) {
		tizedes = str_parted[1].length;
		str_formatted += ','+str_parted[1];	
	}

	object.value = str_formatted;

	if ( window.jQuery && jQuery.fn.caret ) {
		spacek = (utana > tizedes) ? parseInt((utana - tizedes - 1) / 3) : 0;
		vesszo = (tizedes && (tizedes < utana)) ? 1 : 0;
		pos = $field.val().length - (utana + spacek + vesszo);
		$field.attr('data-oldval', $field.val()).caret(pos, pos);
	}
}

function submitFormatInt( field )
{
		var object = document.getElementById(field);
		var str    = object.value;
		str = str.replace(/\./g, ',');			// . => ,
		str = str.replace(/( |[^0-9,])/g, '');	// szűrés: szóköz, nem szám

		str = str.replace(',', '.');			// első vessző pontra
		str = str.replace(/,/g, '');			// vesszők törlése
		str = str.replace('.', ',');
		object.value = str;
}

function filterSubmit()
{
	var fields = new Array(
		'ar_min', 'ar_max', 'epulet_min', 'epulet_max', 'ev_min', 'ev_max', 'telek_min', 'telek_max', 'ar',
		'epulet', 'ev', 'telek', 'hitelosszeg', 'rezsi'
	);
	for (i in fields) {
		try {
			if (document.getElementById(fields[i]).value) {
				submitFormatInt(fields[i]);
			}
		} catch(err) {}
	}
}

function evCheck( field )
{
        if ( field.value.match(/^\d{4}$/) || field.value.length == 0 ) {
                field.style.background = '#fff';
                return TRUE;
        } else {
                field.style.background = '#c00';
                return FALSE;
        }
}

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
//
// Base64 Decoding using the keyStr
//
function decode64( input ) 
{
	var output = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;
	
	input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
	
	do {
		enc1 = keyStr.indexOf(input.charAt(i++));
		enc2 = keyStr.indexOf(input.charAt(i++));
		enc3 = keyStr.indexOf(input.charAt(i++));
		enc4 = keyStr.indexOf(input.charAt(i++));

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

		output = output + String.fromCharCode(chr1);

		if ( enc3 != 64 ) {
			output = output + String.fromCharCode(chr2);
		}
		if ( enc4 != 64 ) {
			output = output + String.fromCharCode(chr3);
		}
	} while ( i < input.length );

	return output;
}
//
// Base64 Encoding using the keyStr
//
function encode64( input ) 
{
	var output = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;

	do {
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);

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

		if (isNaN(chr2)) {
			enc3 = enc4 = 64;
		} else if (isNaN(chr3)) {
			enc4 = 64;
		}

		output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
		keyStr.charAt(enc3) + keyStr.charAt(enc4);
	} while ( i < input.length );
   
	return output;
}

//
// a szuloablakban nyitja meg a 'kod' kodu ingatlan adatlapjat (popup eseten ervenyes)
//
function inparent( uri )
{
    if (window.opener && !window.opener.closed) {
        // a hivatkozo oldalban nyitjuk meg az ingatlan reszletes adatlapjat (a lista helyett)
        window.opener.location.href = uri;
        // atadjuk a fokuszt, de nem zarjuk be a kis ablakot a talalatokkal
        window.opener.focus();
    } else {
		window.parent.location.href = 'http://www.ingatlannet.hu' + uri;
	}
}

//
//
//
function newpopup ( popupurl, popupname, popupfeatures )
{
	newwindow = window.open(popupurl, popupname, popupfeatures);
	newwindow.focus();
	return false;
}

/**
 * A nyelvvalto panelt a kattintas helyen elohozza
 * 
 * @use scriptaculous framework
 *
 * @param hidden event object
 */
function lng_panel_show(e) {
	if (!$('lng_setup_panel')) {
		return;
	}

    if (!e) var e = window.event;
	$('lng_setup_panel').style.display = 'block';
	Event.observe(document.body, 'click', lng_panel_close);
	Event.stop(e);
}


/**
 * Nyelvvalto ablak bezarasa es a hozza tartozo esemenyfigyelo megszuntetese
 */
function lng_panel_close(e) {
    if (!e) var e = window.event;
	$('lng_setup_panel').style.display = 'none';
	Event.stopObserving(document.body, 'click', lng_panel_close);
	Event.stop(e);
}


/**
 * Cookie-ba elmenti a kivalasztott penznemet
 * 
 * @param reference->object obj a SELECT, amiben kivalasztottuk a 3 karakteres penznem kodot
 */
function save_currency(code)
{
	createCookie('currency', code, 31536000);
	document.location.reload();
}


/**
 * Cookie-t csinal
 *
 * @param string name a cookie valtozo neve
 * @param string value a cookie erteke
 * @param integer hours hany oraig legyen ervenyes
 */
function createCookie(name, value, hours) {
	if (hours) {
		var date = new Date();
		date.setTime(date.getTime()+(hours*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}


/**
 * Handle properties onclick event
 * Open anchor's locatoion in a new window, named by properties id
 * 
 * @param Object oAnchor
 * @return Boolean false not open link in original window
 */
function inet_popup_ingatlan(oAnchor) {
	var height = parseInt(screen.height) - 160;
	var width = 980;
	var regexp_only_id = /^.*\/([\d]*)-.*$/gi;
    var appChar = oAnchor.href.indexOf("?") > -1 ? "&" : "?";
	var popupname = 'ingatlan_' + oAnchor.href.replace(regexp_only_id, "$1");
	popupname = 'ingatlan_ek_popup';
	window.open(oAnchor.href + appChar + 'popup=true', popupname, 'width=' + width + ',height=' + height + ',scrollbars=yes,resizable=yes,toolbar=no,location=yes,directories=no,status=no,menubar=no');
	
	return false;
}


/*
 * Megmutatja az adott elemet
 */
function show_by_id(id) {
	document.getElementById(id).style.display = 'block';
}


/*
 * Elrejti az adott elemet
 */
function hide_by_id(id) {
	document.getElementById(id).style.display = 'none';
}

