﻿var O7chkboxes = new Array();
var O7chkboxesINIT = new Array();
var queryDefault = 'поиск по сайту...';
var str = '';

var isNetscape = navigator.appName == "Netscape";

function O7chkboxSwitch(prefix, id, initialState, value) {
    if (!O7chkboxesINIT[id]) {
        O7chkboxesINIT[id] = 1;
        O7chkboxes[id] = initialState;
    }
    O7chkboxes[id] = (O7chkboxes[id] == 1) ? 0 : 1;
    aid = 'a' + id;
    document.getElementById(aid).className = prefix + ((O7chkboxes[id] == 1) ? 'O7chkboxNE' : 'O7chkboxFE');
    document.getElementById(id).value = (O7chkboxes[id] == 1) ? value : 'NotChecked';
    return false;
}

function enableOrDisableButton(id) {
    var button = document.getElementById(id);
    button.disabled = !button.disabled;
}

function visinvis(id) {
    document.getElementById(id).style.visibility =
		(document.getElementById(id).style.visibility == 'hidden') ? 'visible' : 'hidden';
    return false;
}

function visinvisinv(id) {
    document.getElementById(id).style.visibility =
		(document.getElementById(id).style.visibility == 'visible') ? 'hidden' : 'visible';
    return false;
}


function showhideElement(elem) {
    document.getElementById(elem).style.display =
		(document.getElementById(elem).style.display == 'block') ? 'none' : 'block';
    return false;
}
    
function Expandfunc() {
    document.getElementById('ExpandRow').style.display = 
    (document.getElementById('ExpandRow').style.display == 'block') ? 'none' : 'block'; 

    document.getElementById('ExpandTD').innerHTML =
    (document.getElementById('ExpandRow').style.display == 'block') ? 'FAQ (-)' : 'FAQ (+)'; 
   return false;
}

function EmailIsCorrect(email) {
    var ss1 = email.toString().indexOf('@');
    var ss2 = email.toString().lastIndexOf('.');
    if ((ss1 != -1) && (ss2 != -1) && (ss2>ss1))
        return true;
    else
        return false;
}

function searchOnFocus() {
    if (document.getElementById('query').value == queryDefault ) {
        document.getElementById('query').value = '';
    }
}

function clearOnFocus(str, stringToClear) {
    if (document.getElementById(str).value == stringToClear) {
        document.getElementById(str).value = '';
    }
}

function fillOnBlur(str, stringToClear) {
    if (document.getElementById(str).value == '') {
        document.getElementById(str).value = stringToClear;
    }
}

function detectOS() {
    var href = "/software";
    if (navigator.appVersion.indexOf("Win") != -1) href = "/download/silverlight.exe";
    if (navigator.appVersion.indexOf("Mac") != -1) href = "/download/silverlight.dmg";
    return href;
}


function getOffset(elem) {
    if (elem.getBoundingClientRect) {
        // "правильный" вариант
        return getOffsetRect(elem)
    } else {
        // пусть работает хоть как-то
        return getOffsetSum(elem)
    }
}

function getOffsetSum(elem) {
    var top = 0, left = 0
    while (elem) {
        top = top + parseInt(elem.offsetTop)
        left = left + parseInt(elem.offsetLeft)
        elem = elem.offsetParent
    }

    return { top: top, left: left }
}

function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()

    // (2)
    var body = document.body
    var docElem = document.documentElement

    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    // (5)
    var top = box.top + scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    return { top: Math.round(top), left: Math.round(left) }
}

function showLayerAtPointer(str, butpos) {

    var top = getOffset(document.getElementById(butpos)).top;
    var left = getOffset(document.getElementById(butpos)).left;

    document.getElementById(str).style.visibility = "visible";
    if (isNetscape || document.getElementsByClassName) {
        document.getElementById(str).style.left = left + 540 + "px";
        document.getElementById(str).style.top  = top + 150 + "px";
    }
    else {
        document.getElementById(str).style.marginLeft = left - (document.documentElement.clientWidth / 2) + 70;
        document.getElementById(str).style.marginTop = top - (document.documentElement.clientHeight / 2) - 40;        
    }
}

function showLayerAtPointerSlice(str, butpos) {

    var top = getOffset(document.getElementById(butpos)).top;
    var left = getOffset(document.getElementById(butpos)).left;

    document.getElementById(str).style.visibility = "visible";
    if (isNetscape || document.getElementsByClassName) {
        document.getElementById(str).style.left = left + 500 + "px";
        document.getElementById(str).style.top = top + 90 + "px";
    }
    else {
        document.getElementById(str).style.marginLeft = left-150;
        document.getElementById(str).style.marginTop = top-180;
    }
}


function hideLayer(str) {
    document.getElementById(str).style.visibility = "hidden";
}

function showLayerElem(str, par) {
    document.getElementById(str).style.left = getOffset(document.getElementById(par)).left + 5 + "px";
    document.getElementById(str).style.top = getOffset(document.getElementById(par)).top + 5 + "px";
}

function addHandler(node, evt, func) {
    if (node != null) {
        if (node.addEventListener) {
            node.addEventListener(evt, func, false);
        }
        else {
            node.attachEvent('on' + evt, func);
        }
    }

}

function isParent(child, parent) {
    if (!child || !parent) { return false; }
    while (true) {
        if (child == parent) { return true; }
        if (child.parentElement) { child = child.parentElement; } else if (child.parentNode) { child = child.parentNode; } else { return false; } 
    }
}

addHandler(window, 'load', function () {
    var node = document.getElementById('regButtonParent');
    addHandler(node, 'mouseout', function (e) {
        var target = e.relatedTarget || e.toElement;
        if (!isParent(target, node)) {
            if (str) hideLayer(str);
        }
    }); 
});

addHandler(window, 'load', function () {
    var node = document.getElementById('LoginButtonParent');
    addHandler(node, 'mouseout', function (e) {
        var target = e.relatedTarget || e.toElement;
        if (!isParent(target, node)) {
            if (str) hideLayer(str);
        }
    });
});

window.onload = function () {

    function is64bitBrowser() {
        return ((navigator.userAgent.indexOf('Win64') != -1) && (navigator.userAgent.indexOf('x64') != -1))
    }

    if (is64bitBrowser() && document.getElementById('host')) {
        window.location = '/browsernotsupported';
    }
};
        

