var map = null;
var geocoder = null;

function run_initmap() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("mapcontainer"));
    geocoder = new GClientGeocoder();
	
    var maptypes = [G_NORMAL_MAP, G_SATELLITE_MAP, G_AERIAL_MAP, G_HYBRID_MAP, G_AERIAL_HYBRID_MAP, G_PHYSICAL_MAP];
    if (map_center!='' && map_zoom!='') {
    	var coords = map_center.split(',');
    	var center = new GLatLng(coords[0], coords[1]);
    	map.setCenter(center, parseInt(map_zoom));
    	if (map_type!='') map.setMapType(maptypes[map_type]);
    } else if ($.cookie('map_center') && $.cookie('map_zoom')) {
    	var coords = $.cookie('map_center');
    	coords = coords.substr(1,coords.length-2).split(', ');
    	var center = new GLatLng(coords[0], coords[1]);
    	var zoom = $.cookie('map_zoom');
    	map.setCenter(center, parseInt(zoom));
    	if ($.cookie('map_type')) map.setMapType(maptypes[$.cookie('map_type')]);
    } else {
        showHungary();
    }
    map.setUIToDefault();   
    
    // Add ContextMenuControl to the map
    contextMenu = new ContextMenuControl({dirsFrom: false, dirsTo: false});
    map.addControl(contextMenu);
  }
}

$(window).unload(function() {
    if (map) {
	    var map_center = map.getCenter();
	    var map_zoom = map.getZoom();
	    var map_type = getMapType();
	    var cookie_options = { path: '/' }
	    $.cookie('map_center', map_center.toString(), cookie_options);
	    $.cookie('map_zoom', map_zoom, cookie_options);
	    $.cookie('map_type', map_type, cookie_options);
	    GUnload();
    }
});

function showHungary(callback) {
    geocoder.getLatLng(
        'Hungary',
        function(point) {
          if (!point) {
            point = new GLatLng(0,0);
          }
          
          map.setCenter(point, 7);
          
          if (callback) callback();
        }
    );
}

function getMapType() {
	var t = map.getCurrentMapType();
	var types = [G_NORMAL_MAP, G_SATELLITE_MAP, G_AERIAL_MAP, G_HYBRID_MAP, G_AERIAL_HYBRID_MAP];
	
	if (t == G_NORMAL_MAP) return 0;
	if (t == G_SATELLITE_MAP) return 1;
	if (t == G_AERIAL_MAP) return 2;
	if (t == G_HYBRID_MAP) return 3;
	if (t == G_AERIAL_HYBRID_MAP) return 4;
	if (t == G_PHYSICAL_MAP) return 5;
	return 0;
}

function toggleInputField( that ) {
    var toggleInputField = this;
    this.field = that;
    this.emptyFieldVal = $(that).val();
    
    $(that)
        .focus( function() {
            if ($(toggleInputField.field).hasClass('empty')) {
                $(toggleInputField.field).removeClass('empty').val('');
            }
        })
        .blur( function() {
            if ($(toggleInputField.field).val()=='') {
                $(toggleInputField.field).addClass('empty').val(toggleInputField.emptyFieldVal);
            }
        });
} 

function run_inputfield(that) {
    new toggleInputField(that);
}

/***********************/

/* Nano Templates (Tomasz Mazur, Jacek Becela)
 * http://github.com/trix/nano
 */
(function($){
  $.nano = function(template, data){
    return template.replace(/\{([\w\.]*)}/g, function(str, key){
      var keys = key.split("."), value = data[keys.shift()]
      $.each(keys, function(){ value = value[this] })
      return value
    })
  }
})(jQuery);

function open_doc(cime,szelesseg,magassag,ablak){
    if (!szelesseg) szelesseg=500;
    if (!magassag) magassag=535;
    if (typeof usrwindow != 'undefined'){
    if (!usrwindow.closed){usrwindow.close();}}
        usrwindow=window.open(cime, ablak, 'top=0,left=0,resizable=no,hotkeys=yes,width='+szelesseg+',height='+magassag);
}

function open_doc_scroll(cime,szelesseg,magassag,ablak){
    if (!szelesseg) szelesseg=516;
    if (!magassag) magassag=535;
    if (typeof usrwindow != 'undefined'){
    if (!usrwindow.closed){usrwindow.close();}}
        usrwindow=window.open(cime, ablak, 'toolbar=no,scrollbars=yes,menubar=no,top=0,left=0,resizable=yes,hotkeys=yes,width='+szelesseg+',height='+magassag);
}

function getUrlParam( name ) {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if( results == null )
      return "";
    else
      return results[1];
}

function run( runjs_tag ) {
    runjs_each($('.runjs.'+runjs_tag));
}

function executeRunjs( startElement ) {
    runjs_each($(startElement+' .runjs')); 
}

function runjs_each( objlist ) {
    jQuery.each(objlist, function() {
        var className = $(this).attr('class');
        var currObj = this;
        if (/\brunning\b/.test(className)==false) {
            var classes = className.split(' ');
            var thisobj = $(this);
            jQuery.each(classes, function() {
                if (this.substring(0,4)=='run_') {
                    $(currObj).addClass('running');
                    if (jQuery.isFunction( window[this] )) {
                        window[this](thisobj);
                    }
                }
            });
        }
     });
}

$(document).ready( function() {
    executeRunjs( 'body' );
});