/**
 * @author M. Jansen <jansen@terrestris.de>
 */
 
var doZoomEvent = function(scaleThreshold,myLayer,Visible) {
    var currentScale = NABU.MAP.getScale();
      if(currentScale < scaleThreshold) {
         setAutoLayer(myLayer, Visible);
      }
}

var doZoomBaseEvent = function(scaleThreshold,myLayer) {
    var currentScale = NABU.MAP.getScale();
      if(currentScale < scaleThreshold) {
         //alert("jaja");
         //setBase(myLayer);
	 window.setTimeout(function() {
	  setBase(myLayer);
	 },1000);
	 doHideOtherBase();
	 //jQuery('#base_layer_google_hybr').attr("checked", true);
       } else {
         doShowOtherBase();     
      }
};


var doHideOtherBase = function() {
 jQuery("#google_str").hide();
 jQuery("#google_phys").hide();
 jQuery("#google_hybr").hide();
};

var doShowOtherBase = function() {
 jQuery("#google_str").show();
 jQuery("#google_phys").show();
 jQuery("#google_hybr").show();
};


/**
 * @author M. Jansen <jansen@terrestris.de>
 */
    
function winopen(url, name, opt)
{
    var win = window.open(url, name, opt);
    if (win) 
    {
        win.focus();
    }
    else 
    {
        alert('Bitte deaktivieren Sie Popup-Blocker');
    }
    return win;
}

/**
 * wrapper for console.log
 */
function log(m)
{
    if (typeof console != 'undefined' && typeof console.log != 'undefined') 
    {
        console.log(m);
    }
}

/**
 * wrapper for console.info
 */
function info(m)
{
    if (typeof console != 'undefined' && typeof console.info != 'undefined') 
    {
        console.info(m);
    }
}

/**
 * wrapper for console.info
 */
function warn(m)
{
    if (typeof console != 'undefined' && typeof console.warn != 'undefined') 
    {
        console.warn(m);
    }
}

function sayIt()
{
    var a = jQuery('#whichLayer').val();
    alert(a);
}

function OL_addMarkerToMarkerLayer(obj_MarkerLayer, dbl_MarkerLon, dbl_MarkerLat)
{
    if (obj_MarkerLayer.addMarker) 
    {
        var size = new OpenLayers.Size(15, 15);
        var offset = new OpenLayers.Pixel(-(size.w / 2), -size.h);
        var icon = new OpenLayers.Icon(obj_MarkerLayer.defaultIconSrc, size, offset);
        obj_MarkerLayer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(dbl_MarkerLon, dbl_MarkerLat), icon));
        obj_MarkerLayer.display(true);
    }
    else 
    {
        return false;
    }
}


function OL_removeAllMarkersFromMarkerLayer(obj_MarkerLayer)
{
    if (obj_MarkerLayer.clearMarkers) 
    {
        obj_MarkerLayer.clearMarkers();
    }
    else 
    {
        return false;
    }
}
//        'gaz_text': encodeURIComponent(jQuery('#sel_text').val())

function sendSuchenRequest()
{
    var postparams = {
        'gaz_type': encodeURIComponent(jQuery('#sel_gaz').val()),
        'gaz_area': encodeURIComponent(jQuery('#sel_area').val()),
        'gaz_text': jQuery('#sel_text').val()
    };
    postparams['my_ext'] = NABU.MAP.getExtent().toBBOX();
    jQuery.post('includes/ajax_handlers/gaz_data.php', postparams, function(response)
    {
        jQuery('#gaz_result').html(response);
    });
}

function sendVaSuchenRequest()
{
    var postparams = {
        'year': encodeURIComponent(jQuery('#year').val()),
        'month': encodeURIComponent(jQuery('#month').val()),
        'dauer': encodeURIComponent(jQuery('#dauer').val()),
        'gaz_text': encodeURIComponent(jQuery('#selva_text').val())
    };
    postparams['my_ext'] = NABU.MAP.getExtent().toBBOX();
    jQuery.post('includes/ajax_handlers/va_data.php', postparams, function(response)
    {
        jQuery('#va_result').html(response);
    });
}


function sendFeatureInformationRequest(id, table)
{
    var postparams = {
        'id': encodeURIComponent(id),
        'table': encodeURIComponent(table)
    };
    postparams['my_ext'] = NABU.MAP.getExtent().toBBOX();
    jQuery.post('includes/ajax_handlers/show_info.php', postparams, function(response)
    {
        jQuery('#info_result').html(response);
        jQuery('#feature-info-container').dialog('open');
    });
}


function btnchangeImg(butsrc, mybutton)
{
    var btnStat = document.getElementById(mybutton).src.search(/_on/);
    if (btnStat == -1) 
    {
        document.getElementById(mybutton).src = butsrc;
    }
}

function btnpressImg(btnid)
{
    var btntoChange = ['pan', 'zoom_rec', 'get_info','center','measure','measure_a'];
    for (var a = 0; a < btntoChange.length; a++) 
    {
        if (btntoChange[a] == btnid) 
        {
            document.getElementById(btntoChange[a]).src = "./images/mapping_icons/" + btnid + "_on.gif";
        }
        else 
        {
            document.getElementById(btntoChange[a]).src = "./images/mapping_icons/" + btntoChange[a] + ".gif";
        }
    }
    
}



function extendObj(obj1, obj2)
{
    jQuery.each(obj2, function(i, n)
    {
        obj1[i] = n;
    });
    return obj1;
}



function moveLayer(mylayer, dir)
{
    NABU.MAP.raiseLayer(mylayer, dir);
}



/**
 * (re-)converts an URL ready string to a javascript array.
 *
 * @param {string} URL-ready string like: allkar[]=nsg&allkar[]=airport&allkar[]=water&allkar[]=rivers
 * @return {array} an array of strings e.g. [ 'nsg', 'airport', 'water', 'rivers' ]
 * @see handleLayerSortingStart
 * @see handleLayerSortingStop
 * @author Marc Jansen <jansen@terrestris.de>
 */
function convertSerializedString2Array(str)
{
    var elems = str.split('&');
    var arr = [];
    for (var i = 0, len = elems.length; i < len; i++) 
    {
        var temp = elems[i].split('=');
        arr.push(temp[1] || '');
    }
    return arr;
}

/**
 * called when sorting of the layers is started, should store the original
 * ordering so we can compute differences afterwards.
 *
 * @param {object} the event object passed in by jQuery
 * @param {object} the helper-object passed in by jQuery
 * @see convertSerializedString2Array
 * @see handleLayerSortingStop
 * @author Marc Jansen <jansen@terrestris.de>
 */
function handleLayerSortingStart(e, ui)
{
    // getting current order
    var serialized = jQuery(this).sortable("serialize", {
        key: 'allkar',
        expression: /^list_element_for_(.*)/
    });
    // setting the order
    NABU.DRAGGING.ORDER_DRAG_START = convertSerializedString2Array(serialized);
    // saving the dragged layer
    NABU.DRAGGING.DRAGGED_LAYER = (ui.item[0].id).replace(/^list_element_for_/, '');
    // resetting temporary stop-var
    NABU.DRAGGING.ORDER_DRAG_END = [];
}

/**
 * called when sorting of the layers is stopped, computes differences
 * between differen layer-ordering-states and changes the z-index
 * of the layers in the visible map
 *
 * @param {object} the event object passed in by jQuery
 * @param {object} the helper-object passed in by jQuery
 * @see convertSerializedString2Array
 * @see handleLayerSortingStart
 * @author Marc Jansen <jansen@terrestris.de>
 */
function handleLayerSortingStop(e, ui)
{
    // getting current order
    var serialized = jQuery(this).sortable("serialize", {
        key: 'allkar',
        expression: /^list_element_for_(.*)/
    });
    // temporary storing
    NABU.DRAGGING.ORDER_DRAG_END = convertSerializedString2Array(serialized);
    var numberElements = NABU.DRAGGING.ORDER_DRAG_START.length;
    var idxOfMovedLayerBeforeSorting;
    var idxOfMovedLayerAfterSorting;
    var deltaSteps;
    // getting indeces of the moved layer
    for (var i = 0; i < numberElements; i++) 
    {
        if (NABU.DRAGGING.ORDER_DRAG_START[i] == NABU.DRAGGING.DRAGGED_LAYER) 
        {
            idxOfMovedLayerBeforeSorting = i;
        }
        if (NABU.DRAGGING.ORDER_DRAG_END[i] == NABU.DRAGGING.DRAGGED_LAYER) 
        {
            idxOfMovedLayerAfterSorting = i;
        }
    }
    // calculate change
    deltaSteps = (idxOfMovedLayerBeforeSorting - idxOfMovedLayerAfterSorting);
    NABU.MAP.raiseLayer(window[NABU.DRAGGING.DRAGGED_LAYER], deltaSteps);
    // resetting the temporary vars
    NABU.DRAGGING.DRAGGED_LAYER = '';
    NABU.DRAGGING.ORDER_DRAG_END = [];
    NABU.DRAGGING.ORDER_DRAG_START = [];
}

