
var V3 = {};
V3.Geocoder = {};
 
V3.currentScrollValue = 0;

V3.pointExtent = 0;

V3.init = function() {
    langue = dojazd.lang_code.toLowerCase();
    V3.setForceCloseResultPanel(false);
    V3.resExtent = new OpenLayers.Bounds(dojazd.left, dojazd.bottom, dojazd.right, dojazd.top);

};

V3.setMapContainer = function(id) {
    V3.map_container = id;
};

V3.setFindInput = function(id) {
    V3.find_input = id;
};			       

V3.setButtonCalcRoute = function(id) {
    V3.button_calc = id;
};			       

V3.setDivForResultRoute = function(id) {
    V3.tabRoute = id;
};			       

V3.setForceCloseResultPanel = function(force) {
    V3.forceCloseResultPanel = force;
};

V3.setCitySelect = function(id) {
    V3.city_select = id;
};

V3.afterSearch = function() {
    log("afterSearch...");
}

V3.draw = function(mapId) {
    log("render maps");


    //limite scale 
    //    Site.map.setCenter(new OpenLayers.LonLat(Site.map.mStop.lon, Site.map.mStop.lat), 8);
    Site.map.render(mapId);
    V3.numZoom = Site.map.getZoomForExtent(V3.resExtent);
    V3.createScroll();
    
    Site.map.isValidZoomLevel = function(zoomLevel) {
	V3.slider.set((12-zoomLevel)*100);
	removeMessage();
	var box = Math.round(Math.abs(Site.map.getExtent().left)) +","+ Math.round(Math.abs(Site.map.getExtent().top)) +","+ Math.round(Math.abs(Site.map.getExtent().right)) +","+ Math.round(Math.abs(Site.map.getExtent().bottom));
	var link = "http://services.mapnet.pl/geocode/show_rect_d.php?inst=silversoft&map=Polska&box="+box+"&rect=697,445";
	//	log(link);
	return ( (zoomLevel != null) &&
		 (zoomLevel >= Site.map.getZoomForExtent(V3.resExtent) ) && // set min level here, could read from property
		 (zoomLevel < Site.map.getNumZoomLevels()) );
    };
    if(dojazd.cx) {
	Site.map.setCenter(new OpenLayers.LonLat(dojazd.cx, -dojazd.cy), parseInt(dojazd.scale));
    }
    else {
	Site.map.setCenter(new OpenLayers.LonLat(Site.map.mStop.lon, Site.map.mStop.lat), parseInt(dojazd.scale));
    }

};

V3.render = function() {
    V3._render_map();
    V3._format_search_block();
    V3._render_find_input();
    V3.afterInit();
};

V3._render_map = function() {
    showMessage("Ładowanie mapy... Proszę czekać!", {image: "http://dojazd.pl/designs/v3/imgs/preloader_black.gif"});
    Site.map_init(V3.map_container);
};

V3._format_search_block = function() {
	var input = $('SearchBlock').getChildren('input')[0];
        var SB = full_dim($('SearchBlock'));
	var SumW = SB.totalWidth;// - SB["padding-left"] - SB["padding-right"];
	var inputW = full_dim(input).totalWidthEx;
	//	var SzukajW = full_dim($('szukaj')).totalWidthEx;
	//	var WyznaczW = full_dim($('wyznacz')).totalWidthEx;
	//	input.setStyle('width', (SumW - SzukajW - WyznaczW) +'px');
};

V3._render_find_input = function() {
    var edAddress = $(V3.find_input);
    var buttonCalcRoute = $(V3.button_calc);
    log(edAddress);
    log(buttonCalcRoute);
    edAddress.addEvent('focus', function(event) {
	    if(edAddress.value==edAddress.getAttribute('defvalue'))
		edAddress.value='';
	});
    edAddress.addEvent('blur', function(event) {
	    if(edAddress.value=='')
		edAddress.value=edAddress.getAttribute('defvalue');
	});
    
    edAddress.addEvent('keypress', function(event) {
	    if (event.key == 'enter')  {
		showMessage("Oblicznie trasy... Proszę czekać!", {image: "http://dojazd.pl/designs/v3/imgs/preloader_black.gif"});
		var addr = edAddress.get('value').trim();
		var addrReg = AddressAnalyzer.analyze(addr);
		console.log(addrReg);
		AddressStreet = addrReg[1];
		if(addrReg[2]) {
		    AddressNumber = addrReg[2];
		}
		else {
		    AddressNumber = 1;
		}
		console.log(AddressStreet);
		console.log(AddressNumber);

		var city;
		if (V3.city_select) { city = $(V3.city_select).value; }
		else { city = dojazd.city; }
		console.log("city_select: "+V3.city_select);

		console.log("City1: "+city);

		V3.Geocoder.request(function(data) {
		        var lonlat = new OpenLayers.LonLat(data[0].point[0], -data[0].point[1]);
                        log("lonlat", lonlat);
                        log("", Site);
		        Site.set_start_point(lonlat);
                        Site.draw_route(Site.map.mStart, Site.map.mStop, true);
	            }, city, AddressStreet, AddressNumber);
	    }
	});

    buttonCalcRoute.addEvent('click', function() {
				 showMessage("Oblicznie trasy... Proszę czekać!", {image: "http://dojazd.pl/designs/v3/imgs/preloader_black.gif"});
				 var addr = edAddress.get('value').trim();
				 if(addr == "" || addr == "Nazwa ulicy, numer domu") {
		    showMessage("Proszę wprowadzić nazwe ulicy oraz numer budynku");
		}
		else {
		    var addrReg = AddressAnalyzer.analyze(addr);
		    console.log(addrReg);
		    AddressStreet = addrReg[1];
		    AddressNumber = addrReg[2];
		    
		    var city;
		    if (V3.city_select) { city = $(V3.city_select).value; }
		    else { city = dojazd.city; }
		    console.log("City2: "+city);

		    V3.Geocoder.request(function(data) {

			    var lonlat = new OpenLayers.LonLat(data[0].point[0], -data[0].point[1]);
			    log("lonlat", lonlat);
			    log("", Site);
			    Site.set_start_point(lonlat);
			    Site.draw_route(Site.map.mStart, Site.map.mStop, true);
			}, city, AddressStreet, AddressNumber);
		}
		
	});

};



V3.Geocoder.request = function(callback, city, street, number) {
    var data = {
	'map': 'Polska',
	'province': '',
	'district': '',
	'city': city,
	'street': street,
	'number': number,
	'search': 'number',
	'inst': 'silversoft',
	'host': 'dione.mapnet.pl'
    }
    var taskurl =  "/geocode.php".toURI();
    taskurl.set('data', data);
    var url = taskurl.toString();
    var jsonRequest = new Request.JSON({'url': url, 'onComplete': callback});
    jsonRequest.get();
};

V3.togglePanel = function(el, forceShow) {
    if(forceShow==true) {
	$(document.getElementById('layMainMap')).removeClass('FullSize');
	$(document.getElementById('MyTabBlock')).removeClass('infoPanelNoDisplay');
	$('tabMap').addClass('normalSize');
	$('tabMap').removeClass('fullSize');
	$(el).addClass('right');
	$(el).removeClass('left');	
	$('tabButtonRoute').fireEvent('click');
	Site.map.updateSize();
    }
    else {
	$(document.getElementById('layMainMap')).toggleClass('FullSize');
	$(document.getElementById('MyTabBlock')).toggleClass('infoPanelNoDisplay');
	$('tabMap').toggleClass('normalSize');
	$('tabMap').toggleClass('fullSize');
	$(el).toggleClass('right');
	$(el).toggleClass('left');
	Site.map.updateSize();
	V3.setForceCloseResultPanel(true);
    }
};

V3.showStateRoute = function(point) {
    showMessage("Oblicznie trasy... Proszę czekać!", {image: "http://dojazd.pl/designs/v3/imgs/preloader_black.gif"});
    point = point.split("x");
    var lonlat = new OpenLayers.LonLat(point[0], -point[1]);
    log("lonlat", lonlat);
    Site.set_start_point(lonlat);
    Site.draw_route(Site.map.mStart, Site.map.mStop, true);
};

V3.flashToggleButton = function() {
    var z = new Fx.Morph($('toggleButton'), {duration: 250});
    var w = {'background-color':'#ff6868'};
    var b = {'background-color':'#FFF'};
    z.start(w);
    for (var i = 0; i<7;i++) {
	z.chain(function(){z.start(b);});
	z.chain(function(){z.start(w);});
	z.chain(function(){z.start(b);});
    };
    z.chain(function(){$('toggleButton').set('style', 'background-color: transparent')});

};
  
  
V3.createScroll  = function() {
    V3.slider = new Slider($('scrollArea'), $('scrollKnob'), {
	    steps: V3.numZoom*100,
	    mode: 'vertical',
	    onComplete: function(step) {
		step = step/100;
		if(V3.currentScrollValue!=step) {
		    V3.currentScrollValue = step;
		    Site.map.zoomTo(12-(step))
			}		
	    }
	});
  
    console.log("Zoom: "+V3.numZoom);
};


V3.afterInit = function() {
   console.log("Maps is ready.");
   
}


function loadcssfile(filename) {
    var fileref=document.createElement("link");
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", filename);
    if (typeof fileref!="undefined") {
	document.getElementsByTagName("head")[0].appendChild(fileref);
    };
};
