var ofm_loaded = false;
var ofm_interval = 0;
var ofm_shape = "landscape";
var ofm_resolutions = new Array();
var ofm_default_resolution = '';
var ofm_layers = new Array();
var ofm_map_layer = '';
var ofm_prices;
var ofm_first_search = false;
var view_name_suggest = '';
var view_name_timeout = 0;
var frame_loaded = false;
var resolutions_loaded = false;
var ofm_load_interval = 0;
var intervalTransparency = false;
//ofm
//timeout
function checkOfmTimeOut()
{
    if (document.ofm.getClientState() == 'timeout') location.href = 'index.php';
}



this.publicInterfaceLoaded = function()
{
    //alert('publicInterfaceLoaded');
	//resizeFlash();
	var ofm = document.getElementById("ofm");
    ofm.setKeepAlive(800); // session timeout default is 900 seconds
    ofm.addEventListener("loadedNewView", "newViewHandler");
    ofm.addEventListener("activeModeChanged", "newModeHandler");
    this.newViewHandler = function() {
		ofmSetZoomBar();
        ofmShape(ofm_shape);
		//alert('new view');
    };
    this.newModeHandler = function(mode) {
		ofmSetModeButtons(mode);
	};
	ofm_layers = ofm.getLayers();
	
    ofm_loaded = true;
	
}

function ofmStatus()
{
    //alert('ofmstatus');
	ofm_interval = setInterval('ofmLoaded()', 100);
}

function ofmLoaded()
{
    //alert('ofmLoaded1');
	//alert('ofm_loaded'+ofm_loaded+' '+resolutions_loaded);
	if (ofm_loaded && resolutions_loaded) {
		//alert('ofmLoaded2');
        clearInterval(ofm_interval);
		
		setInterval('checkOfmTimeOut()', 60000);
        ofmFadeIn();
        if (get_query['step'] == 'search') {
			ofmSearch(get_query);
			ofm_first_search = true;
	    }
        else if (get_query['step'] == 'view') ofmLoadView(get_query['vid'], get_query['name']);
		else document.ofm.loadNewView();
    }
}

this.resolutionsLoaded = function()
{
    resolutions_loaded = true;
}

function ofmFadeIn()
{
    fadeIn("ofm_viewing_options");
    if (dojo.byId("ofm_tabs")) fadeIn("ofm_tabs");
    fadeIn("ofm_output_container");
    dojo.query("a", "ofm_pan").forEach(
        function (pan_link) {if (pan_link.id) fadeIn(pan_link.id);}
    );
}

//mode buttons

function ofmMode(mode)
{
    document.ofm.setActiveMode(mode);
}

function ofmSetModeButtons(mode)
{
	var buttons = new Array("pan", "zoomin", "zoomout");
	dojo.forEach(buttons, function(button) {
		var style = "default";
		if (button == mode) style = "active";
		dojo.byId("ofm_mode_" + button).className = style;
	});
}

//zoom functions

function ofmZoom(scale)
{
	var button_total = 11;
    if (scale == 'in' || scale == 'out') {
        var scale_pos = Math.round(document.ofm.getScaleRangePosition() * button_total);
        scale = (scale == 'in') ? scale_pos - 1 : scale_pos + 1;
    }
	var iScaleValue = scale / button_total;
	//alert(scale+' '+button_total+' '+scale_pos);
    document.ofm.setScaleRangePosition(iScaleValue);
}

function ofmSetZoomBar()
{
    var button_total = 11;
	var scale = document.ofm.getScaleRangePosition();
    var scale_pos = Math.round(scale * button_total);
    dojo.query(".slider", "ofm_zoom_slider").forEach(
       
		function (node) { node.className = (node.getAttribute('title') == scale_pos) ? "slider active" : "slider default";}
    );
}
function ofmLoadZoom(){
	ofm_load_interval = setInterval('ofmStartZoom()', 100);
}
function ofmLoadZoomEdam(){
	ofm_load_interval = setInterval('ofmStartZoomEdam()', 100);
}
function ofmLoadZoomHoogeveen(){
	ofm_load_interval = setInterval('ofmStartZoomHoogeveen()', 100);
}

function ofmStartZoom() {
	//alert("start zoom f");
	if (ofm_loaded) {
		clearInterval(ofm_load_interval);
		//alert("start zoom");
		//alert(iScaleValue);
		document.ofm.zoomToLocation({x:155000, y:463000}, 1/3000);
		//document.ofm.setScaleRangePosition(0.8);
	}
}
function ofmStartZoomEdam() {
	//alert("start zoom f");
	if (ofm_loaded) {
		clearInterval(ofm_load_interval);
		//alert("start zoom");
		//alert(iScaleValue);
		document.ofm.zoomToLocation({x:133800, y:500800}, 1/3000);
		//document.ofm.setScaleRangePosition(0.8);
	}
}
function ofmStartZoomHoogeveen() {
	//alert("start zoom f");
	if (ofm_loaded) {
		clearInterval(ofm_load_interval);
		//alert("start zoom");
		//alert(iScaleValue);
		document.ofm.zoomToLocation({x:230000, y:526000}, 1/60000);
		//document.ofm.setScaleRangePosition(0.8);
	}
}
//transparency functions
/*
function loadMyNewView(response, result) {
	alert('loadMyNewView : '+response+' '+result);
	ofm.loadNewView();
};*/
function ofmTransparency(layerName, transparency)
{
	
	//if((layerName != '') && (transparency != "")){
		
		var iTransparency = (transparency/10);
		//var iTransparency = transparency;
		var sLayerName = layerName;
		
		//alert(iTransparency+' '+transparency);
		var operation = "\
		<Operations>\
			<SetModifierSet>\
				<Layer>"+sLayerName+"</Layer>\
				<ModifierSet>\
					<Modifier>\
						<Parameter>Image.Transparency</Parameter>\
						<ValueType>ABSOLUTE</ValueType>\
						<DefaultValue>"+iTransparency+"</DefaultValue>\
					</Modifier>\
				</ModifierSet>\
			</SetModifierSet>\
		</Operations>";
		
		this.loadMyNewView = function () {
			intervalTransparency = setInterval('loadMyNewViewTransparency()', 100);
			
		}

		//document.getElementById("textoutput").innerHTML = 'Transparency : '+iTransparency;
		//alert(operation);
		document.getElementById("ofm").runPlainIOSOperation(operation, loadMyNewView());
		
	//}

}
function loadMyNewViewTransparency()
{
	clearInterval(intervalTransparency);
	document.getElementById("ofm").loadNewView();
}
//tab functions

//shape functions

//resolution functions

//view functions

function ofmLoadView(id, name)
{
	view_name_suggest = name;
    var args = new Array();
    args['url'] = '?action=view_get&vid=' + id;
    args['handleAs'] = "json";
    args['timeout'] = 10000;
	
    args['load'] = function(response, ioArgs) {document.ofm.zoomToBoundingBox(response);};
    dojo.xhrGet(args);
}

//search functions

//search

function ofmSearch(searchObject)
{
   // alert('ofrsearch');
	document.ofm.GC_getLatLng("lookup", searchObject, "ofmSearchHandler");
}

/**
* Asynchronous handler for geocoding requests.
* @param id Identifier of the original request.
* @param statuscode The status code of the result.
* @param detail A detailed error message.
* @param coordinate The coordinate, if the lookup was succesful.
*/

function ofmSearchHandler(id, statuscode, detail, coordinate, searchObject)
{
	iScale = 1/700;
	if (id == "lookup") {
		//alert('statuscode id : '+statuscode+' '+id);
		if (document.ofm.GC_isFound(statuscode)) {
			//alert('statuscode: '+statuscode);
			if (searchObject['StreetName'] && (statuscode > 104 || statuscode < 102)) setSearchError();
			else {
				var message = '';
				if (searchObject['StreetName']) {
					message += searchObject['StreetName'];
					view_name_suggest = searchObject['StreetName'];
				}
				if (searchObject['HouseNumber'] && statuscode == 102) {message += " " + searchObject['HouseNumber'];}
				if (searchObject['StreetName'] || searchObject['HouseNumber']) message += " / "
				if (searchObject['PostalCode']) {
					message += searchObject['PostalCode'];
					view_name_suggest = searchObject['PostalCode'];
					//iScale = 1/2800;
				}
				if (searchObject['AreaName']) {
					message += searchObject['AreaName'];
					if (!searchObject['StreetName']) view_name_suggest = searchObject['AreaName'];
				}

				if (site_name == 'France') ofmCheckCoverage(coordinate.x, coordinate.y);
				else document.ofm.zoomToLocation({x:coordinate.x, y:coordinate.y}, iScale);
				//alert(coordinate.x+' '+coordinate.y);
			}
		}
		else setSearchError();
	}
}

function ofmCheckCoverage(x, y)
{
    var args = {};
    args['url'] = '?action=ofm_json_coverage&x=' + x + '&y=' + y;
    args['handleAs'] = "json";
    args['timeout'] = 10000;
    args['load'] = function(response, ioArgs) {
        if (response.valid == true) document.ofm.zoomToLocation({x:x, y:y}, 1/2800);
        else document.ofm.NOT_setMessage(ofm_flash_no_coverage);
    };
    //args['error'] = function(response, ioArgs) {flashBoxOpen(response);};
    dojo.xhrGet(args);
}

function setSearchError()
{
	if (ofm_first_search) {
	    ofm_first_search = false;
		document.ofm.loadNewView();
	}
	var html = "";
	document.ofm.NOT_setMessage(ofm_flash_no_result);
    searchError('search_error_no_result');
}

function ofmFullMap()
{
    if (site_name == 'France') document.ofm.zoomToBoundingBox({minX:49036,minY:1674832,maxX:1075001,maxY:2700797});
	else document.ofm.VF_zoomToExtent();
}

//cart functions

//dojo fx functions

function fadeIn(actNode)
{
    actNode = dojo.byId(actNode);
    dojo.fadeIn({
        node: actNode,
        duration: 2000,
        beforeBegin: function() {
            dojo.style(actNode, "opacity", 0);
            dojo.style(actNode, "display", "block");
        }
    }).play();
}


function switchLayer(iValue){
	document.ofm.toggleLayer(iValue, true);
}
