var iActiveSearchEditCategory = 1;

var LocalDate = {
    days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
    daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
    daysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
    months: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
    monthsShort: ["Jan", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
    weekMin: 'w'
};

var Validator = {

    parseKilometerInput: function(obj) {
        var regex = /[^0-9]+/g;
        var val = obj.value.replace(regex, "");
        if (val.length <= 3) {
            obj.value = val;
            return;
        }
        var newVal = "";
        for (var i = 0; i < val.length; i++) {
            if (i != 0 && (val.length % 3 == i || (i - val.length % 3) % 3 == 0)) newVal += ".";
            newVal += val.charAt(i);
        }
        obj.value = newVal;
    },

    parseYearInput: function(obj) {
        var regex = /[^0-9]+/g;
        var val = obj.value.replace(regex, "");
        var year = String(new Date().getFullYear());
        if (val.length == 1) {
            if (parseInt(val) < 1 || parseInt(val) > parseInt(year.substr(0, 1))) val = "";
        }
        else if (val.length == 2) {
            if (parseInt(val) < 19 || parseInt(val) > parseInt(year.substr(0, 2))) val = val.substr(0, 1);
        }
        else if (val.length == 3) {
            if (parseInt(val) < 190 || parseInt(val) > parseInt(year.substr(0, 3))) val = val.substr(0, 2);
        }
        else if (val.length == 4) {
            if (parseInt(val) < 1900 || parseInt(val) > parseInt(year.substr(0, 4))) val = val.substr(0, 3);
        }
        else {
            val = val.substr(0, 4);
        }
        obj.value = val;
    },

    parseVorwahl: function(obj) {
        var regex = /[^0-9]+/g;
        var val = obj.value.replace(regex, "");
        if (val.charAt(0) != "0") {
            val = "0" + val;
        }
        obj.value = val;
    },
    
    parseTelefon: function(obj) {
        var regex = /[^0-9\-]+/g;
        var val = obj.value.replace(regex, "");
        obj.value = val;
    }



};

var Filter = {
    toggle: function(controlId, open)
    {
        if (open)
        {
            var canvas = $("#" + controlId);
            var innerDiv = $("#" + controlId + ">div");
            var canvasHeight = innerDiv.height() + parseInt(innerDiv.css("padding-top")) + parseInt(innerDiv.css("padding-bottom"));
            canvas.animate({ height: canvasHeight }, "fast");
        }
    }
};


document.ignoreSelect = true;
document.activeSelect = null;
document.onmouseup = function() {
    if (this.activeSelect && !this.ignoreSelect) {
        this.activeSelect.hide();
        this.activeSelect = null;
    }
    else this.ignoreSelect = false;
}

document.onkeypress = function(event)
{
    oEvent = event ? event : window.event;

    if (oEvent.keyCode == 13)
    {
        // bei return muss explizit gesagt werden was passieren soll -> EnterKeypress(poEvent)
        return false;
    }
}

/**
 * Global Initialisierung fuer alle Seiten
 */
function do_init()
{
    //do_setup_autocomplete();

    // modales fenster mit scroller initialisieren
    $('#div_modal_search_edit').jqm({ onShow: do_show_search_edit });
    $('#div_modal_Interessentenanmeldung').jqm({});
    
    // ggf. seitenspezifische initialisierung aufrufen
    if (typeof(do_init_extra) != 'undefined') do_init_extra();
}

/**
 * Initialisiert die jquery-autocomplete funktionalitaet
 */
function do_setup_autocomplete()
{
    var cities = [
	"Aberdeen <img src='images/icon_round_advice.gif'>", "Ada", "Adamsville", "Addyston", "Adelphi", "Adena", "Adrian", "Akron",
	"Albany", "Alexandria", "Alger", "Alledonia", "Alliance", "Alpha", "Alvada",
	"Alvordton", "Amanda", "Amelia", "Amesville", "Amherst", "Amlin", "Amsden"
    ];

    //$("#fld_search").autocomplete(cities);
    $("input[id$=fld_search]").autocomplete(cities);
}

/**
 * image button over/out, wird bei onload aufgerufen
 * @param - object - image-object
 */
function do_button_hover(poImg)
{
    if (!poImg.bSetup)
    {
        var oImgOver = new Image(); oImgOver.src = poImg.src.replace('_out', '_over');
        var oImgOut  = new Image(); oImgOut.src  = poImg.src;
        
        poImg.bSetup       = true;
        poImg.sOverSrc     = oImgOver.src;
        poImg.sOutSrc      = oImgOut.src;
        poImg.bIgnoreHover = false;
        
        poImg.onmouseover = function()
        {
            if (!this.bIgnoreHover) this.src = this.sOverSrc;
            return true;
        }

        poImg.onmouseout = function()
        {
            if (!this.bIgnoreHover) this.src = this.sOutSrc;
            return true;
        }
    }
}

function checkValue(psType, poField)
{
    if (psType == 'money')
    {
        //^[0-9]+([.,]{1}[0-9]{1,2})?$
        poField.value = poField.value.replace(/[^0-9,.]/g, ''); // replace alles was keine Zahl oder punkt/komma
        poField.value = poField.value.replace(/\./g, ','); // Punkt durch Komma ersetzen

        aKomma = poField.value.split(",");

        if (aKomma.length > 1)
        {
            sVorErstenPunkt = poField.value.substring(0, poField.value.indexOf(',') + 1);
            sNachErstenPunkt = poField.value.substring(poField.value.indexOf(',') + 1, poField.value.length);
            poField.value = sVorErstenPunkt + sNachErstenPunkt.replace(/\,/g, '').substr(0, 2); // alle Kommas weg und nur 2 Stellen nach Komma
        }
    }
    if (psType == '%')
    {
        //TbxRabatt.Attributes.Add("onkeyup", "checkValue('%', this);");
        poField.value = poField.value.replace(/[^0-9]/g, '');

        if (parseInt(poField.value) > 100)
        {
            poField.value = '100';
        }
    }
    if (psType == 'int')
    {
        poField.value = poField.value.replace(/[^0-9]/g, '');
    }
    if (psType == 'fonfax')
    {
        poField.value = poField.value.replace(/[^0-9\+\-]/g, '');
    }
    if (psType == 'time')
    {
        //poField.value = poField.value.replace(/[^0-9:]/g, '');
        //poField.value = poField.value.replace(/(([01][0-9]|2[0-3]):[0-5][0-9])/, '');
        if (poField.value.indexOf(':') == -1)
        {
            tmpValue = '';
            tmpValue2 = isNaN(poField.value.substr(2, 1)) ? '0' : poField.value.substr(2, 1);
            tmpValue3 = isNaN(poField.value.substr(3, 1)) ? '0' : poField.value.substr(3, 1);
            tmpValue += poField.value.substr(0, 1) + poField.value.substr(1, 1) + ':' + tmpValue2 + tmpValue3;
//            for (i = 0; i < poField.value.length; i++)
//            {
//                tmpValue += poField.value[i];
//                if (i == 1) tmpValue += ':';
//            }
            poField.value = tmpValue;
        }

        poField.value = poField.value.substr(0, 5);
        poField.value = poField.value.replace(/[^0-9:]/g, '');
        
        if (!/(([01][0-9]|2[0-3]):[0-5][0-9])/.test(poField.value))
        {
            //poField.value = '10:00';
        }

        //poField.value = poField.value.replace(/(([01][0-9]|2[0-3]):[0-5][0-9])/, '');
//        sVorErstenDoppelpunkt = poField.value.substring(0, poField.value.indexOf(':') + 1);
//        sNachErstenDoppelpunkt = poField.value.substring(poField.value.indexOf(':') + 1, poField.value.length);
//        alert(sVorErstenDoppelpunkt + '-' + sNachErstenDoppelpunkt)
//        if (parseInt(sVorErstenDoppelpunkt) > 24) sVorErstenDoppelpunkt = '00';
//        if (parseInt(sNachErstenDoppelpunkt) > 60) sNachErstenDoppelpunkt = '00';
//        
//        poField.value = sVorErstenDoppelpunkt + ':' + sNachErstenDoppelpunkt;
    }
    if (psType == 'email')
    {
        if (poField.value.indexOf('@') == -1) poField.value = '@'
    }
}

/* checked ein einzelnes Form-Field */
function checkRequiredField(poField, pbOverwriteResult)
{
    var bOverwriteResult = typeof (pbOverwriteResult) != 'undefined';
    var bMarkAsError = bOverwriteResult && pbOverwriteResult == false;
    var bMarkAsNoError = bOverwriteResult && pbOverwriteResult == true;
    var bIsError = false;

    var bIsFieldRequired = false;
    if (poField.type == 'checkbox')
    {
        bIsFieldRequired = poField.parentNode.className.indexOf('required') != -1; // moin, asp.net packt bei checkbox ein span drumrum und legt da den classname drauf!
    }
    else
    {
        bIsFieldRequired = poField.className.indexOf('required') != -1;
    }

    if (bIsFieldRequired)
    {
        //alert(poField.id + ' = ' + poField.className)
        var oBorderObj = $.browser.msie && poField.type == 'select-one' ? poField.parentNode : poField;

        oBorderObj.className = oBorderObj.className.replace(' borderIsError', '');
        oBorderObj.className = oBorderObj.className.replace(' borderNoError', '');

        if (poField.type == 'text' || poField.type == 'textarea')
        {
            if (poField.className.indexOf('email') != -1)
            {
                bIsError = !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$/.test(poField.value));

            }
            else if (poField.value == '')
            {
                bIsError = true;
            }
        }
        else if (poField.type == 'select-one')
        {
            if (poField.selectedIndex == -1 || poField.options[poField.selectedIndex].value == '')
            {
                bIsError = true;
            }
        }
        else if (poField.type == 'checkbox')
        {
            if (poField.checked == false)
            {
                poField.parentNode.style.display = 'block';
                poField.parentNode.style.border = '1px solid #D00018';
                bIsError = true;
            }
            else
            {
                poField.parentNode.style.display = 'block';
                poField.parentNode.style.border = '0px';
            }
        }
        if (bOverwriteResult == true)
        {
            bIsError = bMarkAsError == true ? true : false;
        }
        oBorderObj.className += bIsError ? ' borderIsError' : ' borderNoError';
    }

    return bIsError;
}

/* checked jedes Feld einer Form-Field Area */
function checkFormAreaCompletenessBase(poFormAreaContainer, pbOverwriteResult)
{
    if (poFormAreaContainer == false) return;
    
    var bOverwriteResult = typeof (pbOverwriteResult) != 'undefined';
    var bIsComplete = true;
    
    $('*', poFormAreaContainer).each(function()
    {
        if (this.type == 'text' || this.type == 'select-one' || this.type == 'textarea' || this.type == 'checkbox')
        {
            if (pbOverwriteResult)
            {
                bIsErrorTmp = checkRequiredField(this, bOverwriteResult);
            }
            else
            {
                bIsErrorTmp = checkRequiredField(this);
            }

            if (bIsErrorTmp && bIsComplete)
            {
                bIsComplete = false;
            }
        }
    });

    return bIsComplete;
}

/*--------------------------------------------------------------------------------
* Search Popup Funktionen
*--------------------------------------------------------------------------------*/

/**
* Oeffnen des Search-Layers und anzeige content 1
*/
function do_show_search_edit()
{
    $('#div_modal_search_edit').show();
    //get_search_edit_content(document.getElementById('link_search_edit_content1'), 1);
}

function do_hide_search_edit()
{
    do_reinitialiseScrollPane();
    $('#div_modal_search_edit').jqmHide();
    //$('#div_modal_search_edit').hide();
    //get_search_edit_content(document.getElementById('link_search_edit_content1'), 1);
}

/**
* Holt den Content des Search-Layrs
* @param - object - link auf den geklickt wurde
* @param - integer - Nummer des Contents der angezeigt werden soll
*/
function get_search_edit_content(poLink, piContentNr)
{
    if (typeof (oActiveSearchLink) != 'undefined') oActiveSearchLink.className = 'link_block_search_edit';
    if (typeof (oActiveSearchContent) != 'undefined') oActiveSearchContent.style.display = 'none';
    
    poLink.className = 'link_block_search_edit_active';
    //$('#div_modal_search_edit_content_main_scrollarea').load('contents/content.search_edit' + piContentNr + '.aspx', '', do_reinitialiseScrollPane);
    document.getElementById('div_search_edit_step' + piContentNr).style.display = 'block';
    do_reinitialiseScrollPane();
    
    oActiveSearchContent = document.getElementById('div_search_edit_step' + piContentNr);
    oActiveSearchLink = poLink;

    document.forms[0].fld_search_edit_step.value = piContentNr;
}

/**
* Reinitialisiert das SearchEdit Fenster nach einem Ajax Request
*/
var iLastSearchEditScrollPosition = 0;
function do_search_edit_ajax_callback()
{
    do_reinitialiseScrollPane();

    //scrollposition wiederherstellen (muss zeitverzoegert sein, macht ie sonst nicht mit)
    iLastSearchEditScrollPosition = (iLastSearchEditScrollPosition * -1);
    if (typeof ($('#div_modal_search_edit_content_main_scrollarea')[0].scrollTo) == 'function')
        setTimeout("$('#div_modal_search_edit_content_main_scrollarea')[0].scrollTo(iLastSearchEditScrollPosition);", 10);
    //$('#div_modal_search_edit_content_main_scrollarea')[0].scrollTo(iLastSearchEditScrollPosition)
}

function do_reinitialiseScrollPane()
{
    $('#div_modal_search_edit_content_main_scrollarea').jScrollPane({
        scrollbarWidth: 26,
        showArrows: true,
        dragMinHeight: 13,
        dragMaxHeight: 14
    });
    //alert($('#div_modal_search_edit_content_main_scrollarea').position().top);
}

/**
* Auswahl eines Filterkriteriums
* @param - object - ausloesendes Objekt
* @param - bool - Status der visualisiert werden soll
*/
function do_filter_item(poObj, pbStatus)
{
    sCssValue = pbStatus ? 'bold' : 'normal';
    $(poObj).parent().next().css('font-weight', sCssValue);

    // versteck mich, wenn parentLink geschlossen und ich nicht gechecked
    if (!pbStatus && (poObj.parentLink && !poObj.parentLink.bStatus))
    {
        poObj.parentLink.bStatus = true;
        do_toggle_filter_options(poObj.parentLink);
    }
}

var sRouteFrom = '';
var aUserGeoCoords;// = { lat: 53.55494344, lng: 9.98970509 };
function do_before_show_route(psRouteTo)
{
    //sRouteFrom = ""; // liefert der c# scriptmanager
    sRouteTo = psRouteTo;
    document.forms['aspnetForm'].fld_route_from.value = sRouteFrom;
    document.forms['aspnetForm'].fld_route_to.value = sRouteTo;
    $('#div_modal_route').jqmShow();
}

function do_show_route()
{
    /**
    * Firefox-bug, googlemaps werden unvollstaendig angezeigt bei elementen mit display:block
    * deshalb: Element erst anzeigen, dann map laden
    */
    
    $('#div_modal_route').show();
    
    if (1 || typeof (oGoogleMapRoute) != 'object')
    {
        // map route
        oGoogleMapRoute = new clsGoogleMap();
        oGoogleMapRoute.init_map('map_canvas_route', aUserGeoCoords);
        oGoogleMapRoute.oDirectionsPanel.innerHTML = '';
        document.getElementById('Button_RouteBerechnen').click();
    }
}
/*--------------------------------------------------------------------------------
* /Search Popup Funktionen
*--------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
* Accordion Funktionen
*--------------------------------------------------------------------------------*/
function do_toggle_accordion_detail(poObj)
{
    poObj.bStatus = typeof (poObj.bStatus) == 'undefined' ? true : !poObj.bStatus;
    
    if (poObj.bStatus)
    {
        sCssValue = !$.browser.msie ? 'table-row' : 'inline';
        $(poObj).next().css('display', sCssValue);
        poObj.oImg.src = 'images/icon_round_arrow_down_over.gif';
    }
    else
    {
        $(poObj).next().css('display', 'none');
        poObj.oImg.src = 'images/icon_round_arrow_right_over.gif';
    }
}

function do_accordion_detail_hover(poObj, pbStatus)
{
    try
    {
        if (!poObj || poObj.bStatus) return; // kein object oder details sind bereits geoeffnet
        
        if (!poObj.oImg) poObj.oImg = $(poObj).children().find('.accordion_head_arrow')[0];
        
        if (pbStatus)
        {
            poObj.oImg.src = 'images/icon_round_arrow_right_over.gif';
            poObj.oImg.bIgnoreHover = true;
        }
        else
        {
            poObj.oImg.src = 'images/icon_round_arrow_right_out.gif';
            poObj.oImg.bIgnoreHover = false;
        }
    }
    catch (error)
    {

    }
}

/*--------------------------------------------------------------------------------
* /Accordion Funktionen
*--------------------------------------------------------------------------------*/


/*--------------------------------------------------------------------------------
* Allgemeine Funktionen
*--------------------------------------------------------------------------------*/
function openWindowHelp()
{
    var features = "width=1013,height=659,left=0,top=0,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no,dependent=yes";
    var url = "guidedtour/index.html";
    popup = window.open(url, "popup1", features);
    popup.focus();
}

function doPrint()
{
    window.print();
}

function EnterKeypress(poEvent)
{
    // Beispiel um einen asp-postback durchfuehren
    //javascript:__doPostBack('<%=ButtonTeaser.UniqueID %>','');
    return poEvent.keyCode == 13;
}
/*--------------------------------------------------------------------------------
* /Allgemeine Funktionen
*--------------------------------------------------------------------------------*/