var isIE = false;
var isNav = (navigator.appName.indexOf("Netscape") >= 0);
var isNav4 = false;
var isIE4 = false;
var is5up = false;
var isFF3 = false;
var isOpera8up = false;

var operaVersion = navigator.userAgent.indexOf("Opera");
if (operaVersion != -1) {
    var v = parseInt(navigator.userAgent.substring(operaVersion+6,operaVersion+7));
    if (v > 7) {
        isOpera8up = true;
    }
}

if (isNav) {
    if (parseFloat(navigator.appVersion) < 5) {
        isNav4 = true;
    } else {
        is5up = true;
    }
} else {
    isIE4 = true;
    isIE = true;
    if (navigator.appVersion.indexOf("MSIE 5") > 0) {
        isIE4 = false;
        is5up = true;
    }
}
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) {
    var ffversion = new Number(RegExp.$1);
    if (ffversion >= 3)
        isFF3 = true;
}
function createLayer(name, left, top, width, height, visible, content) {
    var layer;
    if (isNav4) {
        document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height + ' visibility=' + (visible ? '"show"' : '"hide"') + '>');
        document.writeln(content);
        document.writeln('</layer>');
        layer = getLayer(name);
        layer.width = width;
        layer.height = height;
    } else {
        document.writeln('<div id="' + name + '" style="position:absolute; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') + '">');
        document.writeln(content);
        document.writeln('</div>');
    }
}

function createEventLayer(name, left, top, width, height, visible, content, events) {
    var layer;
    if (isNav4) {
        document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height + ' visibility=' + (visible ? '"show"' : '"hide"') + '>');
        document.writeln(content);
        document.writeln('</layer>');
        layer = getLayer(name);
        layer.width = width;
        layer.height = height;
    } else {
        document.writeln('<div id="' + name + '" style="position:absolute; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') + '" ' + events + '>');
        document.writeln(content);
        document.writeln('</div>');
    }
}
function createLayerNoSize(name, left, top, visible, content) {
    if (isNav4) {
        document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' visibility=' + (visible ? '"show"' : '"hide"') + '>');
        document.writeln(content);
        document.writeln('</layer>');
    } else {
        document.writeln('<div id="' + name + '" style="position:absolute; left:' + left + 'px; top:' + top + 'px; visibility:' + (visible ? 'visible;' : 'hidden;') + '">');
        document.writeln(content);
        document.writeln('</div>');
    }
}

function showDistanceLayer(name, left, top, width, height, content) {
    var layer;
    layer = getLayer(name);
    layer.left = left;
    layer.top = top;
    layer.width = width;
    layer.height = height;
    document.getElementById(name).innerHTML = content;
    if (isNav4) {
        layer.visibility = "show";
    }
    else {
        layer.visibility = "visible";
    }
}

function createDistanceLayer(name, left, top, height, content) {
    var layer;
    if (isNav4) {
        layer = document.createElement("layer");
        layer.left = left;
        layer.top = top;
        layer.height = height;
        layer.position = "absolute";
        layer.visibility = "show";
        layer.name = name;
        layer.innerHTML = content;
    }
    else {
        layer = document.createElement("div");
        layer.style.left = left;
        layer.style.top = top;
        layer.style.height = height;
        layer.style.visibility = "visible";
        layer.style.position = "absolute";
        layer.id = name;
        layer.innerHTML = content;
        layer.style.zIndex = "20";
    }
    return layer;
}

function clearDistLayers(holder) {
    if (!isPageFrozen) {
        var i;
        var answer;
        if (j != null) {
            answer = confirm("Информацията за измерените разстояния ще бъде премахната!");
            if (answer) {
                for (i = 0; i < distLayerCounter; i++) {
                    document.getElementById("Cov").removeChild(document.getElementById(distLayersArray[i]));
                }
                distLayersArray.length = 0;
                distLayerCoords.length = 0;
                distLayerCounter = 0;
                j.clear();
                j = null;
                flag_distance = 0;
                distBackSum = 0;
                changeCursor(2);
                if (isFF3 || isOpera8up) holdClick = 2;
                else holdClick = 0;

                document.forms[1].distLayerCoords.value = "";
                document.forms[3].distLayerCoords.value = "";
                document.forms[4].distLayerCoords.value = "";
                document.forms[6].distLayerCoords.value = "";
                document.forms[2].distLayerCoords.value = "";
            }
            else {
                changeCursor(2);
                distHolder = holder;
                changebut("DistanceButOn");
                holdClick = 0;
            }
        }
    }
}

function changeCursor(value) {
    if (value == 1)
        document.getElementById("SlideCover").style.cursor = "pointer";
    else {
        if (isOpera8up) {
            document.getElementById("SlideCover").style.cursor = "default";
        } else {
            if (document.forms[2].action[2].checked) {
                document.getElementById("SlideCover").style.cursor = "url('images/zincrsr.CUR'), auto";
            }
            else if (document.forms[2].action[8].checked) {
                document.getElementById("SlideCover").style.cursor = "url('images/grab.CUR'), auto";
            }
            else {
                document.getElementById("SlideCover").style.cursor = "default";
            }
        }
    }

}


function getLayer(name) {
    if (isNav4)
        return(document.layers[name]);
    else if (isIE4) {
        if (eval('document.all.' + name) != null) {
            layer = eval('document.all.' + name + '.style');
            return(layer);
        } else
            return(null);
    } else if (is5up) {
        var theObj = document.getElementById(name);
        return theObj.style
    } else
        return(null);
}

function setLayerBgColor(name, color) {
    var layer = getLayer(name);
    if (layer != null) {
        if (isNav4)
            layer.bgColor = color;
        else
            layer.backgroundColor = color;
    }
}
function hideLayer(name) {
    var layer = getLayer(name);
    if (layer != null) {
        if (isNav4)
            layer.visibility = "hide";
        else
            layer.visibility = "hidden";
    }
}

function showLayer(name) {
    var layer = getLayer(name);
    if (layer != null) {
        if (isNav4)
            layer.visibility = "show";
        else
            layer.visibility = "visible";
    }
}

function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {
    var layer = getLayer(name);

    if (layer != null) {
        if (isNav4) {
            layer.clip.left = clipleft;
            layer.clip.top = cliptop;
            layer.clip.right = clipright;
            layer.clip.bottom = clipbottom;
        } else if (isIE) {
            layer.clip = 'rect(' + (cliptop) + ' ' + (clipright) + ' ' + (clipbottom) + ' ' + (clipleft) + ')';
        } else {
            layer.height = clipbottom - cliptop;
            layer.width = clipright - clipleft;
            layer.top = (cliptop) + "px";
            layer.left = (clipleft) + "px";
        }
    }
}

function setFieldToAllForms(fieldName, fieldValue) {
    var i;
    for (i = 0; i < document.forms.length; i++) {
        if (document.forms[i].elements[fieldName] != undefined) {
            document.forms[i].elements[fieldName].value = fieldValue;
        }
    }
}

function copyFormValues(form1, form2) {
    var i;
    if (form1 && form2) {
        for (i = 0; i < form1.elements.length; i++) {
            var name = form1.elements[i].name;
            var obj = form1.elements[name];
            if (form2.elements[name] != undefined) {
                if (obj.value != undefined) {
                    form2.elements[name].value = obj.value;
                } else {
                    for (var j = 0; j < obj.length; j++) {
                        form2.elements[name][j].value = obj[j].value;
                    }
                }
            }
        }
    }
}


function getParamsFromForm(form) {
    var res = '';
    if (form != undefined) {
//        var oo;
        for (var i = 0; i < form.elements.length; i++)
        {
            if (form.elements[i].name == "t") {
                form.elements[i].value = (new Date()).getTime();
            }
            if (form.elements[i].name != "action") {
                if (i != 0 && res != '') {
                    res += "&";
                }
                res += form.elements[i].name + "=" + form.elements[i].value;
            } else if (form.elements[i].type == "radio") {
                if (form.elements[i].checked) {
                    if (i != 0 && res != '') {
                        res += "&";
                    }
                    res += form.elements[i].name + "=" + form.elements[i].value;
                } else {
                }
            } else {
                if (i != 0 && res != '') {
                    res += "&";
                }
                res += form.elements[i].name + "=" + form.elements[i].value;
            }
//            oo += ' ' + form.elements[i].name;
        }
    }
    return res;
}
function getWindowWidth() {
    return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body.clientWidth;
}

function getWindowHeight() {
    return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body.clientHeight;
}
var t = 1;
function resizeApp(hasToSubmit) {
    t = t + 1;
    var offsetTop = 0;
    var offsetLeft = 0;
    var mapElem = document.getElementById("SlideCover");
    var POIWidth = 0;
    var findObjWidth = hspace;
    if (document.getElementById("findCaption") && document.getElementById("findCaption").style.visibility == "visible") {
        findObjWidth += document.getElementById("findCaption").offsetWidth;
    }

    if (document.getElementById("POI")) {
        POIWidth = document.getElementById("POI").offsetWidth;
    }
    for (var elem = mapElem; elem; elem = elem.offsetParent) {
        offsetTop += elem.offsetTop;
        offsetLeft += elem.offsetLeft;
    }
    var height = getWindowHeight() - offsetTop - 30;
    if ((offsetLeft + POIWidth + findObjWidth + document.getElementById("Map").offsetWidth > getWindowWidth()) && isIE) {
        height += 17;
    }
    var width = getWindowWidth() - offsetLeft - POIWidth - findObjWidth ;
    var minHeight = 435;
    var minWidth = 763;

    if (minHeight > height) {
        height = minHeight;
    }
    if (minWidth > width) {
        width = minWidth;
    }

    var findObjectsleft = offsetLeft + width + POIWidth + 4;
    if (document.getElementById("POI") && document.getElementById("POI").style.visibility == "hidden") {
        findObjectsleft = offsetLeft + width + 4;
    }
    imageWidth = width;
    imageHeight = height;
    mapWidth = imageWidth;
    mapHeight = imageHeight;
    mapElem.style.width = imageWidth;
    mapElem.style.height = imageHeight;


    document.getElementById("Map").style.width = imageWidth;
    document.getElementById("Map").style.height = imageHeight;

    document.getElementById("DistanceMap").style.width = imageWidth;
    document.getElementById("DistanceMap").style.height = imageHeight;

    document.getElementById("Cov").style.width = imageWidth;
    document.getElementById("Cov").style.height = imageHeight;

    document.getElementById("Cov").style.width = imageWidth;
    document.getElementById("Cov").style.height = imageHeight;
    if (document.getElementById('HSResults') && document.getElementById('HSResults').style.visibility == "visible") {
        document.getElementById('HSResults').style.left = offsetLeft + imageWidth - 30;
    }
    document.getElementById("upArrow").href = "javascript:nav(" + Math.round(imageWidth / 2) + ", " + 0 + ")";
    document.getElementById("leftArrow").href = "javascript:nav(" + 0 + ", " + Math.round(imageHeight / 2) + ")";
    document.getElementById("rightArrow").href = "javascript:nav(" + imageWidth + ", " + Math.round(imageHeight / 2) + ")";
    document.getElementById("downArrow").href = "javascript:nav(" + Math.round(imageWidth / 2) + ", " + imageHeight + ")";

    if (document.getElementById("findCaption") && document.getElementById("findCaption").style.visibility == "visible") {
        document.getElementById("findCaption").style.left = findObjectsleft;
        document.getElementById("findObjects").style.height = imageHeight;
    } else {
        document.getElementById("findCaption").style.left = offsetLeft;
    }

    document.getElementById("footerBar").style.top = offsetTop + height;
    document.getElementById("footerBar").style.width = width;

    if (document.getElementById("CityMaps")) {
        document.getElementById("CityMaps").style.left = offsetLeft + imageWidth - document.getElementById("CityMaps").offsetWidth;
    }

    if (document.getElementById("POI") && document.getElementById("POI").style.visibility == "visible") {
        document.getElementById("POI").style.left = offsetLeft + width;
        document.getElementById("POI").style.height = imageHeight;

    } else {
        document.getElementById("POI").style.left = offsetLeft;
        document.getElementById("POI").style.height = imageHeight;
    }

    ovMapVspace = offsetTop + document.getElementById("ovMapCov").offsetTop + borderWidth * 3;
    ovMapHspace = offsetLeft + borderWidth;

    changePositionFooter();
    setMapAttrPosition();

    setFieldToAllForms("imageWidth", imageWidth);
    setFieldToAllForms("imageHeight", imageHeight);
    if (!hasToSubmit) {
        return;
    }
    submitForm(document.forms["MapSize"]);
}