$ = function(element) {
    if (arguments.length > 1) {
        for (var i = 0, elements = [], length = arguments.length; i < length; i++)
            elements.push($(arguments[i]));
        return elements;
    } else {
        return document.getElementById(element);
    }
}

$new = function(params,parent) {
    var tag = params['tag'] || 'div';
    var newEl = document.createElement(tag);
    for (var paramName in params) {
        if ((paramName != 'tag') && (paramName != 'text') && (!paramName.match(/^on\w+/))) { newEl[paramName] = params[paramName]; }
        if (paramName.match(/^on(\w+)/)) {
            var eventName = RegExp.$1;
            $attachEvent(newEl, eventName, params[paramName]);
        }
    }
    if (params['text'] != null) { newEl.appendChild($text(params['text'])); }
    if (parent!=null) { parent.appendChild(newEl); }
    return newEl;
}

$text = function(string) {
    return document.createTextNode(string);
}
$char = function(num) {
    return String.fromCharCode(num);
}
$clear = function(el) {
    el.innerHTML = '';
}

$clearDOM = function(el) {
    while (el.childNodes.length>0) { el.removeChild(el.firstChild); }
}

$addClass = function(node, className) {
    $removeClass(node, className);
    node.className += ' '+className;
}

$removeClass = function(node, className) {
    var classes = node.className.split(' ');
    for (var i=0; i<classes.length; i++) {
        if (classes[i] == className) {
            classes.splice(i, 1);
        }
    }
    node.className = classes.join(' ');
}

$style = function(node, args) {
    for (var arg in args) {
        if ((arg == 'left') || (arg == 'top') || (arg == 'width') || (arg == 'height') || (arg == 'right') || (arg == 'bottom')) args[arg] += 'px';
        node.style[arg] = args[arg];
    }
}

$point = function(x, y) { this.x = x; this.y = y; }
$position = function(node, toNode) {
    var el = node;
    var x = 0; var y = 0;
    while ((el)&&(el!=toNode)) {
        if (el.offsetLeft) { x += el.offsetLeft; }
        if (el.offsetTop) { y += el.offsetTop; }
        el = el.offsetParent;
    }
    return new $point(x, y);
}
$attachEvent = function(object, event, method, methodId) {
    if (!methodId) methodId = '';
    object['event_'+event+methodId] = function(event) { method.apply(object, [event]); };
    if (typeof(object['addEventListener']) == 'function') { 
        object.addEventListener(event, object['event_'+event+methodId], false);
    } else {
        object.attachEvent('on'+event, object['event_'+event+methodId]);
    }
}

$detachEvent = function(object, event, methodId) {
    if (!methodId) { methodId = ''; }
    if (typeof(object['removeEventListener']) == 'function') {
        object.removeEventListener(event, object['event_'+event+methodId], false);
    } else {
        object.detachEvent('on'+event, object['event_'+event+methodId]);
    }
}
JS = new Object();
JS.agent = navigator.userAgent;
if (JS.agent.match(/MSIE\s+(\d+)/)) {
    JS.IE = true;
    JS.IE_Version = RegExp.$1;
    if (JS.IE_Version < 7) JS.IE_OLD = true;
}

JS.KHTML = JS.agent.match(/KHTML/);
JS.Opera = JS.agent.match(/Opera/);
JS.Gecko = (!JS.KHTML && JS.agent.match(/Gecko/));
JS.DOM = document.getElementById ? true : false;

checkConstraints = function() {
    var wrapDOM = $('wrap');
    if ((wrapDOM) && (document.documentElement.clientWidth <= 1000)) wrapDOM.style.width = '1000px'; else wrapDOM.style.width = 'auto';
}

JS.onPageLoad = function() {
    if (JS.IE_OLD) {
        checkConstraints();
    }
    JS.clockDOM = $('current-time');
    if (JS.clockDOM) JS.clockTimer = window.setInterval(function() { printCurrentTime(); }, 1000);
}

if (JS.IE_OLD) {
    $attachEvent(window, 'resize', function() { checkConstraints(); });
}

function printCurrentTime() {
    var time = new Date();
    var m = time.getMinutes();
    var h = time.getHours();
    m = (m<10) ? "0"+m : m;
    h = (h<10) ? "0"+h : h;
    var spanClass = (time.getSeconds() % 2 == 0)?'':'h';
    JS.clockDOM.innerHTML = h+"<span class='"+spanClass+"'>.</span>"+m;
}

window.onunload = function() {
    if (JS.clockTimer) window.clearInterval(JS.clockTimer);
}


/* ------------- Menu --------------- */
function expandMenu(el) {
    $addClass(el, 'hovered');
}
function collapseMenu(el) {
    $removeClass(el, 'hovered');
}

/*------------ Calendar ------------- */
function sendDate(date) {
    var y = date.getFullYear();
    var m = date.getMonth()+1;
    var d = date.getDate();
    $('news-date-form').d.value=y+'-'+m+'-'+d;
    $('news-date-form').submit();
}
function setupNewsCalendar(date) {
    if (!date) { 
        if ($('news-date-form').d.value.match(/(\d+)\-(\d+)\-(\d+)/)) {
            var tmpDate = new Date();
            tmpDate.setDate(RegExp.$3);
            tmpDate.setMonth(RegExp.$2-1);
            tmpDate.setYear(RegExp.$1);
            date = tmpDate.getTime();
        }
    }
    FCalendar.setup({
        date: date,
        onSelect: sendDate,
        showOthers: true,
        ajaxCheck: true,
        ajaxRequest: '/xml/?get=calendar',
        DOMcontainer: 'news-calendar'
    });
}


/* ------------ video ----------------- */
function getVideo(id) {
    var scX = Math.ceil((screen.width - 570)/2);
    var scY = Math.ceil((screen.height - 520)/2);
    var videoWindow = window.open('/video/?node_id='+id,'_video','dependent=yes, width=570, height=480, innerHeight=480, innerWidth=570, location=no, menubar=no, resizable=no, scrollbars=no, titlebar=yes, toolbar=no, screenX='+scX+', screenY='+scY);
    videoWindow.focus();
}

function showPicture(id) {
        var w = 620; var h = 670;
        var x = Math.floor((screen.width-w)/2);
        var y = Math.floor((screen.height-h)/2)-20;
        var win = window.open('/picture/?id='+id, 'IMAGE_WINDOW', 'dependent=yes, disrectories=no, innerWidth='+w+', innerHeight='+h+', width='+w+', height='+h+', location=no, menubar=no, resizable=no, screenX='+x+', screenY='+y+', scrollbars=no, titlebar=no, toolbar=no');
        win.focus();
}


/* ---------- home_page ------------------- */
function setHomePage(el) {
    if (document.all) {
        el.style.behavior='url(#default#homepage)';
        el.setHomePage('http://zs74.ru/');
    } else {
        if ((navigator)&&(typeof(navigator.preference)=='function')) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite");
                navigator.preference("browser.startup.homepage", "http://zs74.ru");
            } catch(err) {}
        }
    }
    return false;
}

