function twoChars(value) {
    if (value < 10) {
        value = "0" + value;
    }
    return value;
}

function contains(array, value) {
    if (array == undefined) return false;
    var i;
    for (i = 0; i < array.length; i++) {
        if (array[i] == value) return true;
    }
    return false;
}

function convertWaqssToJsDate(waqssDate) {
    var dateStr = createCalenderDateString(waqssDate);
    return new Date(dateStr);
}

function createCalenderDateString(waqssDate) {
    var year = waqssDate.substr(0, 4);
    var month = waqssDate.substr(4, 2);
    var day = waqssDate.substr(6, 2);
    return year + "/" + month + "/" + day;
}

function createGermanReadableDate(date) {
    var waqssDate;
    if (date.constructor == Date) {
        waqssDate = createWaqssDate(date);
    } else {
        waqssDate = date;
    }
    var year = waqssDate.substr(0, 4);
    var month = waqssDate.substr(4, 2);
    var day = waqssDate.substr(6, 2);
    return day + "." + month + "." + year;
}

function getParamsFor(waqssDate) {
    return paramsAtDay[waqssDate];
}

function getImageNameFor(waqssDate, paramId, sceneId) {
    var imageKey = waqssDate + "_" + paramId + "_" + sceneId;
    var imageName = imagesMap[imageKey];
    if (imageName == undefined) {
        return null;
    }
    return imageName;
}

function getQLImageNameFor(waqssDate, paramId, sceneId) {
    return getApendixImageNameFor(waqssDate, paramId, sceneId, '_ql');
}

function getTNImageNameFor(waqssDate, paramId, sceneId) {
    return getApendixImageNameFor(waqssDate, paramId, sceneId, '_tn');
}

function getApendixImageNameFor(waqssDate, paramId, sceneId, appendix) {
    var imageName = getImageNameFor(waqssDate, paramId, sceneId);
    if (imageName != null) {
        var dotIndex = imageName.lastIndexOf(".");
        var newImageName = imageName.substring(0, dotIndex);
        newImageName += appendix + imageName.substr(dotIndex);
        return newImageName;
    }
    return null;
}

function createWaqssDate(jsDate) {
    var year = jsDate.getFullYear();
    var month = jsDate.getMonth() + 1;
    var day = jsDate.getDate();
    var monthStr = twoChars(month);
    var dayStr = twoChars(day);
    return "" + year + monthStr + dayStr;
}

function createExpandedBoundsWithBorder(bounds, borderInDegree) {
    var newTop = bounds.top - borderInDegree;
    var newBottom = bounds.bottom + borderInDegree;
    var newLeft = bounds.left - borderInDegree;
    var newRight = bounds.right + borderInDegree;
    return new OpenLayers.Bounds(newLeft, newBottom, newRight, newTop);
}

function getElem(id) {
    return document.getElementById(id);
}

function getElementsByTagAndClassName(tagName, className) {
    var i = 0;
    var tagElems = document.getElementsByTagName(tagName);
    var classElems = new Array();
    for (i = 0; i < tagElems.length; i++) {
        var tagElem = tagElems[i];
        if (tagElem.className.match(className)) {
            classElems.push(tagElem);
        }
    }
    return classElems;
}

function createElem(name) {
    return document.createElement(name);
}

function createBoldText(text) {
    var b = document.createElement('b');
    b.innerHTML = text;
    return b;
}

function selectRadioButton(groupName, value) {
    var elems = document.getElementsByName(groupName);
    if (elems == null || elems == undefined) {
        return;
    }
    for (var i = 0; i < elems.length; i++) {
        var elem = elems[i];
        if (elem.value == value) {
            elem.checked = true;
        }
    }
}

function getRequestParameter() {

    var url = document.URL;
    var paramIndex = url.lastIndexOf("?");
    // Keine Parameter angegeben?
    if (paramIndex == -1) return new Array();
    // Parameter string
    var sub = url.substr(paramIndex + 1);
    var params = sub.split("&");
    for (var i = 0; i < params.length; i++) {
        params[i] = params[i].split("=");
    }
    return params;
}

function getPageName() {
    var url = document.URL;
    var nameIndex = url.lastIndexOf('/');
    var paramIndex = url.lastIndexOf('?');
    return url.substr(nameIndex, paramIndex);
}

function createOlBounds(boundsStr) {
    if (boundsStr == null) {
        return null;
    }
    var coords = boundsStr.split("_", 10);
    if (coords.length != 4) {
        return null;
    }
    var left = coords[0];
    var bottom = coords[1];
    var right = coords[2];
    var top = coords[3];
    return new OpenLayers.Bounds(left, bottom, right, top);
}

function getMonthDays(jsDate) {
    var monthDays = [31,28,31,30,31,30,31,31,30,31,30,31];
    var year = jsDate.getFullYear();
    var month = jsDate.getMonth();
    if (((0 == (year % 4)) && ( (0 != (year % 100)) || (0 == (year % 400)))) && month == 1) {
        return 29;
    } else {
        return monthDays[month];
    }
}

function trimStr(str) {
    return str.replace(/^\s*(.*?)\s*$/, "$1");
}

function removeEnsureJS() {
    var jsElem = document.getElementById('ensureJS');
    var parent = jsElem.parentNode;
    parent.removeChild(jsElem);
}
