// (C) 2009, lastadm, mailto:lastadm@mail.ru

Element.addMethods({
        toHTML: function(element)
        {
                if (typeof element=='string')
                        element = $(element);  // IE needs that check with XML
                return Try.these(
                function()
                {
                        var xmlSerializer = new XMLSerializer();
                        return  element.nodeType == 4 ? element.nodeValue : xmlSerializer.serializeToString(element);
                },
                function()
                {
                        return element.xml || element.outerHTML || $(element).clone().wrap().up().innerHTML;
                }
                ) || '';
        },

        getStyles: function(element)
        {
                element = $(element);
                return $A(element.style).inject({}, function(styles, styleName){
                        styles[styleName.camelize()] = element.getStyle(styleName);
                        return styles;
                        });
        },

        clone: function(element)
        {
                var clone = new Element(element.tagName);

                $A(element.attributes).each(function(attribute){
                        if(attribute.name != 'style')
                                clone.writeAttribute(attribute.name, element.readAttribute(attribute.name));
                        if(typeof clone != 'object')
                                window.alert(attribute.name+':'+attribute.value);
                });
                clone.setStyle(element.getStyles());
                clone.update(element.innerHTML);

                return clone;
        }
});


Event.observe(window, 'load', function(){

        var activeitem=null;
        var selecteditem=null;
        var topline;
        var slogan;

        initpage();

        $$('a.sideitem').each(function(el){
                el.onmouseover = function(){
                        if(activeitem == this)
                                return false;
                        rise(this);
                        activeitem = this;
                        return true;
                }
                el.onmouseout = function(){
                        activeitem = null;
                        if(this == selecteditem)
                                return false;
                        hide(this);
                        return true;
                }
                el.onclick = function(){
                        if(selecteditem != this)
                                hide(selecteditem);
                        selecteditem=this;
                        rise(this);
                        // load_url(this.href,'content',initpage)
                        return true;
                }
                function hide(element)
                {
                        if(element == null)
                                return false;
                        img=element.childNodes[0];
                        img.src=img.src.replace(/-b.png/,"-d.png");
                        $('toptitle').innerHTML=topline;
                        $('slogan').innerHTML=slogan;
                        return true;
                }
                function rise(element)
                {
                        if(element == null)
                                return false;
                        img=element.childNodes[0];
                        img.src=img.src.replace(/-d.png/,"-b.png");
                        topline=$('toptitle').innerHTML;
                        slogan=$('slogan').innerHTML;
                        $('toptitle').innerHTML=element.childNodes[0].alt;
                        $('slogan').innerHTML=element.childNodes[0].title;
                        return true;
                }
        });
});


function showRndImage()
{
var x,text;

        if($('rndimage'))
        {
                x=Math.round(Math.random()*6)+1;
                // $('rndimage').src=$('rndimage').src.replace(/\-\d\.jpg$/i, '-'+x+'.jpg');
                $('rndimage').src=$('rndimage').src.replace(/spacer.gif$/i, 'top-up-'+x+'.jpg');
        }
}

function init_infolinks()
{

var popups;

        popups=$$('span.morelink');

        popups.each(function(pu){
                pu.onclick = function(){
                        moreinfo=$(this.id.substr(this.id.lastIndexOf('#')+1));
                        moreinfo.className='moreinfo-opened';
                        // Effect.Appear(moreinfo.id);
                        Shadower.shadow(moreinfo.id, {
                                                distance:4,
                                                angle: 130,
                                                opacity: 0.7,
                                                nestedShadows: 4,
                                                color: '#707070'
                                                });
                        //window.alert(moreinfo.select('img.infolink-title'))
                        if(moreinfo.select('img.infolink-title')=="")
                        {
                                moreinfo.insert(new Element('div',{'class':'infolink-title'}).update('Дополнительная информация'));
                                moreinfo.insert(new Element('img',{'src':'/info-16x16.png','class':'infolink-title'}));
                        }
                        moreinfo.onclick = function(){
                                // Effect.Fade(this.id);
                                // img.remove();
                                // div.remove();
                                Shadower.deshadow(this.id);
                                this.className='moreinfo';
                                return false;
                        }
                        return false;
                }
        });

        if($('calc-frm'))
        {
                $('calc-frm').reset();
                initsliders();
        }
}

function init_selectors()
{
        if($('selectors') == null)
                return false;

        sSelector = new accordion('selectors', {
                    resizeSpeed : 10,
                    classNames : {
                        toggle : 'accordion_toggle',
                        toggleActive : 'accordion_toggle_active',
                        content : 'accordion_content'
                    },
                    defaultSize : {
                        width : 70
                    },
                    direction : 'vertical'
                    });
        sSelector.activate($$('#selectors .accordion_toggle')[0]);
        return true;
}

function init_interlaced()
{
var dark ='#E0E0E0';
var light='#D0D0D0';

        objcts=$$('table.interlaced,ol.interlaced,ul.interlaced');
        objcts.each(function(objct){
                var interlace=false;
                ancestor=objct;
                do{
                        acolor=ancestor.getStyle('backgroundColor');
                        // window.alert(acolor);
                        if(acolor.match( /transparent|rgba\(0,\s*0,\s*0,\s*0\)|rgb\(0,\s*0,\s*0\)/i))
                        {
                                ancestor=ancestor.up();
                                continue;
                        }
                        backc=new Color(acolor);
                        dark=backc.darken(11).getHex(false);
                        light=backc.lighten(22).getHex(false);
                        break;
                }while(Object.isFunction(ancestor.up) && Object.isFunction(ancestor.up().getStyle));
                if(objct.tagName == 'TABLE')
                        objct=objct.down();
                if(objct) objct.childElements().each(function(row){
                        if(interlace=!interlace)
                                row.setStyle({backgroundColor: dark});
                        else
                                row.setStyle({backgroundColor: light});
                });
        });
}

function init_maillinks()
{
var mailtos;
var email;
var counter=0;

        mailtos=$$('span.mailto');
        mailtos.each(function(mailto){
                email=mailto.id.replace(/ at /i, '@');
                email=email.replace(/ dot /gi, '.');
                if(mailto.innerHTML == "")
                {
                        mailto.innerHTML="<a href='mailto:"+email+"'>"+email+"</a>";
                }else{
                        mailto.innerHTML=mailto.innerHTML.replace(/\s*\[[^\]]+\]/i, '');
                        mailto.innerHTML="<a href='mailto:"+email+"'>"+mailto.innerHTML+"</a>";
                }
                mailto.id="e-mail-"+counter;
                counter++;
        });

}

function init_rounded()
{
        if(getElementsBySelector('div.rounded') != "")
                Nifty("div.rounded");
        if(getElementsBySelector('div.top-rounded') != "")
                Nifty("div.top-rounded","top");
        if(getElementsBySelector('div.bottom-rounded') != "")
                Nifty("div.bottom-rounded","bottom");
        if(getElementsBySelector('div.level-2') != "")
                Nifty("div.level-2","none same-height");
        if(getElementsBySelector('div.level-3') != "")
                Nifty("div.level-3","none same-height");

}

function init_error_popup()
{
        init_rounded();
        Modalbox.resizeToContent();
}

function initpage()
{
        init_maillinks();
        init_infolinks();
        init_search();
        init_interlaced();
        init_calendar('/siteinfo/enlistments/calendar','/siteinfo/enlistments', 'enlistments');
        init_calendar('/news/calendar','/news/archive', 'newsarchive');
        init_selectors();
        init_forum();
        init_rounded();

        if($('r_tree'))
                load_json('/sitemanager/resource-tree', init_tafeltree, 'r_tree');

        showRndImage();
}
