function getE(htmlElementName) {
 return document.getElementById(htmlElementName);
}

function getCallbackFunction(req, processData) {
 return function () {
   if (req.readyState == 4) {
     if (req.status == 200) {
       processData(req.responseXML);
     } else {
//       alert("HTTP error: "+req.status);
     }
   }
 }
}

function disableEnterKey(e) {
 var key = e ? e.keyCode : window.event.keyCode;
 if (key == 13) return false;
 else return true;
}


function ctrlInput(e, inputType) {
 var key;
 var keychar;
 var characters;

 switch (inputType) {
	case 'email':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZ0123456789.@-_'
	 	break
	case 'emailpromo':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZ0123456789.@-_;, '
	 	break
	case 'phone':
		characters = '0123456789()-+ /'
	 	break
	case 'pwd':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZ0123456789'
	 	break
	case 'general':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZöüóőúéáűíÖÜÓŐÚÉÁŰÍ0123456789 \'"+!%/=()<>#&@,.-?:_;*$€äÄß'
	 	break
	case 'city':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZöüóőúéáűíÖÜÓŐÚÉÁŰÍ0123456789,- äÄß'
	 	break
	case 'address':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZöüóőúéáűíÖÜÓŐÚÉÁŰÍ0123456789./,- äÄß'
	 	break
	case 'fulladdress':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZöüóőúéáűíÖÜÓŐÚÉÁŰÍ./,- äÄß'
	 	break
	case 'url':
		characters = 'abcdefghijklmnopqrstuxyvwz0123456789.-'
	 	break
	case 'num':
		characters = '0123456789'
	 	break
	case 'decimal':
		characters = '0123456789.'
	 	break
	case 'code':
		characters = '23456789bcdfghjkmnpqrstvwxyz'
	 	break
	case 'firmname':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZöüóőúéáűíÖÜÓŐÚÉÁŰÍ0123456789 \'+!.-'
	 	break
	case 'keyword':
		characters = 'abcdefghijklmnopqrstuxyvwzABCDEFGHIJKLMNOPQRSTUXYVWZöüóőúéáűíÖÜÓŐÚÉÁŰÍ0123456789 ,-äÄß'
	 	break
	default:
		characters = 'abcdefghijklmnopqrstuxyvwz0123456789'
		break
 }
	 
 if (window.event) key = window.event.keyCode;
 else if (e) key = e.which;
 else return true;
 
 keychar = String.fromCharCode(key);
 
// Values:
//  8: [Backspace]
//  9: [Tab]
// 13: [Enter]
// 27: [Esc]
// 36: [Home]
// 37: [LeftArrow]
// 39: [RightArrow]

if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) ) return true;
 else if (characters.indexOf(keychar) > -1) return true;
 else return false;
}


function textCounter(field, countfield, maxlimit) {
 if (field.value.length > maxlimit)
  field.value = field.value.substring(0, maxlimit);
 else
  countfield.value = maxlimit - field.value.length;
}


function CheckKey(e) {
 var key = e ? e.keyCode : window.event.keyCode;
 var obj = document.getElementById('fullAddress')

 if (key==13 && obj.value != '') {
   if (cityList.length > 1) fillIn(cityListPos)
 }

// Down Arrow button
 if (key==40) {
   if (cityListPos != cityList.length-1) {
     unSelectLine(document.getElementById('tr'+cityListPos))
     cityListPos++
     selectLine(document.getElementById('tr'+cityListPos))
   }
 }

// Up Arrow button
 if (key==38) {
   if (cityListPos != 0) {
     unSelectLine(document.getElementById('tr'+cityListPos))
     cityListPos--
     selectLine(document.getElementById('tr'+cityListPos))
   }
 }
}


function setLoupeImg(zoomLevel) {
 document.getElementById('loupeLevel').innerHTML = zoomLevel
}


// Map's Custom Control processing function
// dx, dy values:
//		-1: move to the left/up on the map
//		 0: no move in the given direction
//		 1: move to the right/down on the map
function ctrlPanDirection(dx, dy) {
 currentCenter = map.getCenter();
 // Calculate map's height and width pixels divided by 4 - this will be the movement scale
 deltaWidth = (parseFloat(map.getBounds().getNorthEast().lng()) - parseFloat(map.getBounds().getSouthWest().lng())) / 4;
 deltaHeight = (parseFloat(map.getBounds().getSouthWest().lat()) - parseFloat(map.getBounds().getNorthEast().lat())) / 4;
 var newLng;
 var newLat;
 var deltaX = 0
 var deltaY = 0;

 switch (dx)
 {
 	case -1:
		newLng = parseFloat(currentCenter.lng()) - deltaWidth;
		deltaX = -map.getSize().width / 4;
		break;
	case 0:
		newLng = parseFloat(currentCenter.lng());
		break;
	case 1:
		newLng = parseFloat(currentCenter.lng()) + deltaWidth;
		deltaX = map.getSize().width / 4;
	    break;
 }

 switch (dy) {
 	case -1:
		newLat = parseFloat(currentCenter.lat()) - deltaHeight;
		deltaY = -map.getSize().height / 4;
		break;
	case 0:
		newLat = parseFloat(currentCenter.lat());
		break;
	case 1:
		newLat = parseFloat(currentCenter.lat()) + deltaHeight;
		deltaY = map.getSize().height / 4;
	    break;
 }

 map.panTo(new GLatLng(newLat, newLng));
}


function getSubCategories(index) {
 function processSubCategories(xmlDoc) {
  subCategories = xmlDoc.documentElement.getElementsByTagName("sc");
  getE('selectSubCategory' + index).options.length = 0;
  getE('selectSubCategory' + index).options[0] = new Option('Válasszon alkategóriát!', '0');
  for (var i = 0; i < subCategories.length; i++) {
   getE('selectSubCategory' + index).options[i+1] = new Option(subCategories[i].getElementsByTagName("n")[0].firstChild.nodeValue, subCategories[i].getElementsByTagName("i")[0].firstChild.nodeValue);
  }
  getE('progressDiv2').style.display = 'none';
 }
		
 getE('progressDiv2').style.display = 'block';

 var request = GXmlHttp.create();
 request.open("POST", "/get_subcategories.php", true);
 request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
 request.onreadystatechange = getCallbackFunction(request, processSubCategories);
 request.send('catId='+getE("selectCategory" + index).value);
}


function getCities() {
 function processCities(xmlDoc) {
  cities = xmlDoc.documentElement.getElementsByTagName("c");
  getE('selectCity').options.length = 0;
  getE('selectCity').options[0] = new Option('Válasszon települést!', '0');
  for (var i = 0; i < cities.length; i++) {
   getE('selectCity').options[i+1] = new Option(cities[i].getElementsByTagName("n")[0].firstChild.nodeValue, cities[i].getElementsByTagName("i")[0].firstChild.nodeValue);
  }
  getE('progressDiv').style.display = 'none';
 }
		
 getE('progressDiv').style.display = 'block';

 var request = GXmlHttp.create();
 request.open("POST", "/get_cities.php", true);
 request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
 request.onreadystatechange = getCallbackFunction(request, processCities);
 request.send('coId='+getE("selectCounty").value);
}


function emailFormatCheck(str) {
 var at="@";
 var dot=".";
 var lat=str.indexOf(at);
 var lstr=str.length;
 var ldot=str.indexOf(dot);

 if (str.indexOf(at)==-1) return false;
 if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) return false;
 if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr || str.indexOf(dot)==lstr-1 || str.indexOf(dot)==lstr-2) return false;
 if (str.indexOf(at,(lat+1))!=-1) return false;
 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) return false;
 if (str.indexOf(dot,(lat+2))==-1) return false;
 if (str.indexOf(" ")!=-1) return false;

 return true;
}


function xmlObject () {
	if (typeof XMLHttpRequest == 'undefined') {
		objects = Array(
			'Microsoft.XmlHttp',
			'MSXML2.XmlHttp',
			'MSXML2.XmlHttp.3.0',
			'MSXML2.XmlHttp.4.0',
			'MSXML2.XmlHttp.5.0'
		);
		for (i = 0; i < objects.length; i++) {
			try {
				return new ActiveXObject(objects[i]);
			} catch (e) {}
		}
	} else {
		return new XMLHttpRequest();
	}
}

function storeOnlinedijVisit(page) {
 function processOnlinedijVisit(xmlDoc) {
  response = xmlDoc.documentElement.getElementsByTagName("m");
 }

 var odRequest = xmlObject();
 odRequest.open("POST", "/set_onlinedij_visit.php", true);
 odRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
 odRequest.onreadystatechange = getCallbackFunction(odRequest, processOnlinedijVisit);
 odRequest.send('page='+page.replace('&','%26'));
}
