dom = (document.getElementById)? true : false;
nn4 = (document.layers)? true : false;
ie = (document.all)? true : false;
ie4 = (!dom && ie)? true : false;

var activeElem = null;
var selectedElem = null;
var menuTimeout = null;
var menuDelay = 200;
var mainPageOffset = 263;
var doc;

var menus = Array( 'about', 'catalog', 'development', 'fordeliveries', 'fordistributors', 'news', 'contacts' );
var menusW = Array( 70, 65, 85, 85, 105, 55, 57 );
var menuPrefix = '/img/m';

var scrollShift;
var scrollStep = 0;
var scrollTimeout = null;
var scrollPos;

function preloadImages()
{
    doc = document;
    if( doc.images )
        {
        if( !doc.preloadImgs )
            doc.preloadImgs = new Array();
        var i, j = doc.preloadImgs.length;
        var a = preloadImages.arguments;
        for(i=0; i<a.length; i++)
            {
            doc.preloadImgs[j] = new Image;
            doc.preloadImgs[j++].src = a[i];
            }
        }
}

function findObject( id, doc )
{
    var i;

    if( doc == null )
        doc = document;

    if( dom )
        return doc.getElementById( id );
    else
        {
        if( ie4 )
        return doc.all[ id ];
        }

    for( i=0; i<doc.forms.length; i++ )
        for( j=0; j<doc.forms[i].elements.length; j++ )
        if( id == doc.forms[i].elements[j].name )
            return doc.forms[i].elements[j];

    for( i=0; i<doc.images.length; i++ )
        if( id == doc.images[i].name )
        return doc.images[i];

    if( doc.layers == null )
        return null;

    for( i=0; i<doc.layers.length; i++ )
        {
        if( id == doc.layers[i].name )
        return doc.layers[i];
        var x = findObject( id, doc.layers[i].document );
        if( x != null )
        return x;
        } 
    return null;
}

function showElem(elemId)
{
    if (dom)
        document.getElementById(elemId).style.visibility = "visible";
    else
        if (ie4)
        document.all[elemId].style.visibility = "visible";
        else
        if (nn4)
            document.layers[elemId].visibility = "show";
}

function hideElem(elemId)
{
    if (dom)
         document.getElementById(elemId).style.visibility = "hidden";
    else
        if (ie4)
        document.all[elemId].style.visibility = "hidden";
        else
        if (nn4) document.layers[elemId].visibility = "hide";
}

function turnElementOff( elemId )
{
    var elem = getElement( "sm_"+elemId );
    if( elem == null )
        return true;
    if( dom || ie4 )
        elem.style.display = "none";
    else
        {
        if( nn4 )
            elem.display = "none";
        }
}

function toggleElement( elemId, toggleActive )
{
    var elem = getElement( "sm_"+elemId );
    if( elem == null )
        return true;
    if( toggleElement.arguments.length == 1 )
        toggleActive = true;

    if( activeElem && toggleActive && (activeElem != elemId) )
        {
        turnElementOff( activeElem );
        low( "m", activeElem, true );
        }

    if( dom || ie4 )
        (elem.style.display == "none")?elem.style.display="":elem.style.display="none";
    else
        {
        if( nn4 )
            (elem.display == "none")?elem.display="":elem.display="none";
        }
    activeElem = elemId;
    return false;
}

function getElement( elemId )
{
    if (dom)
        return document.getElementById(elemId);
    else
        if (ie4)
            return document.all[elemId];
        else
            if (nn4)
                return document.layers[elemId];
    return null;
}


// This function writes HTML code into a layer
function Writelayer(layer,code,doc)
{
    if( doc == null )
        doc = "document";   
    if (nn4)
        {
        layer.document.open();
        layer.document.write( code );
        layer.document.close();
        }
    else
        if (ie4)
            {
        layer.innerHTML = code;
        }
        else
            if (dom)
                {
            layer.innerHTML = code;
            }
}

function anchorPosX(anchorPtr)
{
    if (document.layers)
        return anchorPtr.x;
    else if (document.getElementById || document.all)
        {
        var pos = anchorPtr.offsetLeft;
        while (anchorPtr.offsetParent != null)
            {
            anchorPtr = anchorPtr.offsetParent;
            pos += anchorPtr.offsetLeft;
            }
        return pos;
        }
}

function anchorPosY(anchorPtr)
{
    if (document.layers)
        return anchorPtr.y;
    else if (document.getElementById || document.all)
        {
        var pos = anchorPtr.offsetTop;
        while (anchorPtr.offsetParent != null)
            {
            anchorPtr = anchorPtr.offsetParent;
            pos += anchorPtr.offsetTop;
            }
        return pos;
        }
}

function show_params( obj )
{
    s = '';
    k = 0;
    for( i in obj )
        {
        s = s + i +'=' + eval( 'obj.' + i )+'\n';
        k++;
        if( k>20 )
            {
            alert( s );
            s = '';
            k = 0;
            } 
        }
    if( k )
        alert( s );
}


function hi( idx, lang )
{
    if( arguments.length < 2 )
        langPrefix = '';
    else
        langPrefix = lang;

    if( activeElem && menuTimeout )
        hideit( langPrefix );

    if( arguments.length < 1 )
        idx = this.id.charAt( 2 );

    var obj = findObject( 'm'+idx );
    if( !obj )
        return false;

    obj.src = langPrefix + menuPrefix + 'a_' + menus[idx-1] + '.gif';
    obj = findObject( 'dm'+idx );
    if( !obj )
        return false;
    obj.style.backgroundImage = 'url(' + menuPrefix + 'a_vr.gif)';

    obj = findObject( 'vr'+(idx-1) );
    if( obj )
        {
        if( selectedElem == idx-1 )
            obj.src = menuPrefix + 's_vr.gif';
        else
            obj.src = menuPrefix + 'a_ml.gif';
        }

    obj = findObject( 'vr'+idx );
    if( obj )
        {
        if( selectedElem == idx+1 )
            obj.src = menuPrefix + 's_vr.gif';
        else 
            obj.src = menuPrefix + 'a_mr.gif';
        }

    obj = findObject( 'ssm'+idx );
    if( obj )
    {
        if( activeElem )
            hideit( langPrefix );
        showElem( 'ssm'+idx );
    }
    
    return false;
}

function him()
{
    if( menuTimeout )
        {
        clearTimeout( menuTimeout );
        menuTimeout = null;
        }
}

function lom( lang )
{
    if( arguments.length < 1 )
        langPrefix = '';
    else
        langPrefix = lang;
    menuTimeout = setTimeout( 'hideit("'+langPrefix+'");', menuDelay );
}

function his( idx )
{
    color = '#e3dee5';
    if( arguments.length >= 2 )
        color = arguments[1];
    if( menuTimeout && (arguments.length==1) )
        {
        clearTimeout( menuTimeout );
        menuTimeout = null;
        }
    var obj = findObject( 'sm_'+idx );
    if( !obj )
        return false;
    obj.style.backgroundColor = color;
    return false;
}

function los( idx )
{
    color = 'white';
    if( arguments.length >= 2 )
        color = arguments[1];
    var obj = findObject( 'sm_'+idx );
    if( !obj )
        return false;
    obj.style.backgroundColor = color;
    return false;
}

function hideit( lang )
{
    idx = activeElem;
    activeElem = null;
    if( menuTimeout )
        {
        clearTimeout( menuTimeout );
        menuTimeout = null;
        }

    var obj = findObject( 'm'+idx );
    if( !obj )
        return false;

    obj.src = lang + menuPrefix + '_' + menus[idx-1] + '.gif';
    obj = findObject( 'dm'+idx );
    if( !obj )
        return false;
    obj.style.backgroundImage = 'none';

    obj = findObject( 'vr'+(idx-1) );
    if( obj )
        {
        if( selectedElem == idx-1 )
            obj.src = menuPrefix + 'a_mr.gif';
        else
            obj.src = menuPrefix + '_vr.gif';
        }


    obj = findObject( 'vr'+idx );
    if( obj )
        {
        if( selectedElem == idx+1 )
            obj.src = menuPrefix + 'a_ml.gif';
        else
            obj.src = menuPrefix + '_vr.gif';
        }

    obj = findObject( 'ssm'+idx );
    if( obj )
        hideElem( 'ssm'+idx );
}

function lo( idx, lang )
{
    if( arguments.length < 1 )
        idx = this.id.charAt( 2 );

    if( arguments.length < 2 )
        langPrefix = '';
    else
        langPrefix = lang;

    activeElem = idx;
    menuTimeout = setTimeout( 'hideit("'+langPrefix+'");', menuDelay );
    return false;
}

function loadit( idx )
{
    if( arguments.length < 1 )
        idx = this.id.charAt( 2 );

    window.location = '/'+menus[idx-1]+'/';
}

function initDocument()
{
    var obj;
    menuOffsetLeft = mainPageOffset;
    if( arguments.length > 0 )
        menuOffsetLeft = arguments[0];
    var mc = findObject( 'mc' );
    if( mc )
        mw = mc.offsetWidth;
    for( i=1; i<=menus.length; i++ )
        {
        obj = findObject( 'dm'+i );
        if( obj && 0 )
            {
            obj.onmouseover = hi;
            obj.onmouseout = lo;
            obj.onclick = loadit;
            }
        obj = findObject( 'sm'+i );
        if( obj )
            obj.style.width = mw+37;
        obj = findObject( 'a'+i );
        if( obj )
            {
            lx = anchorPosX( obj ) + menusW[i-1]/2;
            obj = findObject( 'sm'+i+'a' );
            if( obj )
                obj.style.left = lx-menuOffsetLeft;
            }
        }
    setVote();
    calcOffsets();
}

function resizeMenus()
{
    menuOffsetLeft = mainPageOffset;
    if( arguments.length > 0 )
        menuOffsetLeft = arguments[0];
    var mc = findObject( 'mc' );
    if( mc )
        mw = mc.offsetWidth;
    for( i=1; i<=menus.length; i++ )
        {
        obj = findObject( 'sm'+i );
        if( obj )
            obj.style.width = mw+37;
        obj = findObject( 'a'+i );
        if( obj )
            {
            lx = anchorPosX( obj ) + menusW[i-1]/2;
            obj = findObject( 'sm'+i+'a' );
            if( obj )
                obj.style.left = lx-menuOffsetLeft;
            }

        }
    setVote();
    calcOffsets();
}

function soap( largeIll, smallIll, text )
{
    this.largeIll = largeIll;
    this.smallIll = smallIll;
    this.text = text;
}

function setMainSoap( idx )
{
    var obj = findObject( 'mains' );
    if( obj )
        obj.style.backgroundImage = 'url(' + soaps[idx].largeIll +')';
    obj = findObject( 'maint' );
    if( obj )
        obj.innerHTML = soaps[idx].text;
}

function setSmallSoap( num )
{
    var obj = findObject( 'sw' + num );
    if( obj )
        obj.src = soaps[num].smallIll;
}

function scrollIt()
{
    clearTimeout( scrollTimeout );
    scrollStep++;
    if( scrollStep >= 20 )
        {
        scrollTimeout = null;
        window.scrollTo( 0, scrollPos );
        }
    else
        {
        window.scrollBy( 0, -scrollShift );
        scrollTimeout = setTimeout( 'scrollIt()', 10 );
        }
}

function swapIt( num )
{
    var main_obj = soaps[0];
    var switching_obj = soaps[num];
    // soaps[0] = switching_obj;
    // soaps[num] = main_obj;

    setMainSoap( num );
    //setSmallSoap( num );

    var obj = findObject( 'mains' );
    scrollPos = 100;
    if( obj )
        scrollPos = obj.offsetTop;
    var currScroll = 0;
    if( document.body && document.body.scrollTop )
        currScroll = document.body.scrollTop;
    else
        currScroll = window.pageYOffset;
    if( !currScroll )
        currScroll = 0;
    scrollShift = Number( currScroll - scrollPos ) / 20;
    scrollStep = 0;
    scrollTimeout = setTimeout( 'scrollIt()', 100 );

    setTimeout( 'calcOffsets()', 50 );
    
    return false;
}

function setVote()                                 
{                                                  
    var vwo = findObject('vw');                    
    if ( !vwo )                                    
        return;                                    
                                                   
    var vw = vwo.clientWidth-6;                    
                                                   
    var i;                                         
    var mx = 0;                                    
    var mxx = 0;                                    
                                                   
    for (i=0; i<nvotes; i++)                       
    {                                              
        if (votes[i]>mx)                           
            mx = votes[i];                      
        mxx += votes[i];
    }                                              
    for (i=0; i<nvotes; i++)                       
    {                                              
        var im = findObject('v'+i);                
        if (!im)                                   
            continue;                              
        im.width = parseInt((vw/mxx)*votes[i]);     
    }                                              
}                                                  
                                                   
function createRequest()                           
{                                                  
    try                                            
    {                                              
        return new XMLHttpRequest();               
    } catch(e)                                     
    {                                              
        return new ActiveXObject("Msxml2.XMLHTTP");
    }                                              
}                                                  
                                                   
function goVote(id,lang)
{                                                                         
    for (i=0; i<nvotes; i++)                                              
    {                                                                     
        var vno = findObject('vn'+i);                                     
        if (!vno)                                                         
            continue;                                                     
        vno.innerHTML = votesName[i];                                     
    }                                                                     
    request=createRequest();                                              
    request.onreadystatechange=function()                                 
    {                                                                     
        if (request.readyState == 4)                                      
        {                                                                 
            if (request.status == 200)                                    
            {                                                             
                if (request.responseText=='ok')                           
                {
                    var omsg = findObject('msg');
                    if ( omsg )
                        omsg.innerHTML = (lang == 1 ) ? 'Спасибо за участие в опросе!' : 'Thank you for your opinion!';
                    for(i=0; i<nvotes; i++)
                        if( votesID[i] == id )
                            votes[i]++;
                    setVote();
                }                                                         
            }                                                             
        }                                                                 
    }                                                                     
    request.open('GET','/?action=goVote&id='+id+'&hash=' + Math.random());
    request.send('');                                                     
    return false;                                                         
}

function calcOffsets()
{
    var mt = findObject( 'maintext' );
    var mt2 = findObject( 'maint' );
    var mt3 = findObject( 'mains' );
    var mt4 = findObject( 'tech' );
    if( !mt || !mt2 || !mt3 || !mt4 )
        return;
    var globalOffset = 0;
// alert( mt.offsetHeight );
    if( mt.offsetHeight < 150 )
        {
        globalOffset += 150 - mt.offsetHeight;
        mt3.style.marginTop = 150-mt.offsetHeight;
        }
    if( mt2.offsetHeight > 190 )
        {
        globalOffset += mt2.offsetHeight - 190;
        mt3.style.height = 410+mt2.offsetHeight-190;
        }
    else
        mt3.style.height = 410;
}

preloadImages( 
    '/img/m_about.gif', '/img/m_catalog.gif', '/img/m_news.gif', '/img/m_contacts.gif',
    '/img/m_development.gif', '/img/m_fordeliveries.gif', 
    '/img/m_fordistributors.gif',
    '/en/img/m_about.gif', '/en/img/m_catalog.gif', '/en/img/m_news.gif', '/en/img/m_contacts.gif',
    '/en/img/m_development.gif', '/en/img/m_fordeliveries.gif', 
    '/en/img/m_fordistributors.gif',
    '/img/ma_about.gif', '/img/ma_catalog.gif', '/img/ma_news.gif', '/img/ma_contacts.gif',
    '/img/ma_development.gif', '/img/ma_fordeliveries.gif', 
    '/img/ma_fordistributors.gif', '/img/m_vr.gif', '/img/ma_vr.gif', '/img/ma_ml.gif',
    '/img/ma_mr.gif', '/en/img/ma_about.gif', '/en/img/ma_catalog.gif', 
    '/en/img/ma_development.gif', '/en/img/ma_fordeliveries.gif', 
    '/en/img/ma_fordistributors.gif', '/en/img/ma_news.gif', '/en/img/ma_contacts.gif' );
