
var id_ = new Array();
var i,varName;
var CurrActiveLinkis;
    
var MapImage;
var HTMLinMapImage = "<div class=\"Background\"></div>";
var CircleSize = 14;
var scaleX = 350;
var scaleY = 523;
var BigCityPopulation = 100000;

var CityX0 = 26.6212;
var CityY0 = 45.466;

CityX0 = parseInt(CityX0 * scaleX);
CityY0 = parseInt(CityY0 * scaleY);


function pasteXY()
{
    //var TotalCities = parseInt( document.getElementById('TotalCities').value );
        var CityObject,x,y,population,str,par,newItem,point;
        var childItem1,childItem2,childItem3;
        i = 0;id_ = new Array();

    // We HIDE all points in Navigation bar (if They are there)
    for (childItem3 in Navigation.childNodes) 
    {
        if (Navigation.childNodes[childItem3].nodeType == 1 && (Navigation.childNodes[childItem3].id).indexOf("InNav") != -1)
        { Navigation.childNodes[childItem3].className = "PointInNavigation"; }
    }

    for (childItem1 in MapImage.childNodes) 
    {
        // We select each Div (That is child of MapImage object) and set position left and bottom
        if (MapImage.childNodes[childItem1].nodeType == 1 && (MapImage.childNodes[childItem1].id).indexOf("City") != -1)
        {
            CityObject = MapImage.childNodes[childItem1];
            str =  CityObject.lang ;
            par = str.split(":");
            
            // we Add points(divs 2px/2px) in Navigation bar
            if ( !(point = document.getElementById(CityObject.id+"InNav")) )
            {
                newItem = document.createElement("div");
                newItem.className = "PointInNavigation Visible";
                newItem.id = CityObject.id+"InNav";
                newItem.style.left = ( parseInt( parseFloat( par[0] ) * scaleX/10 ) - CityX0/10 +DeltaX -2)+'px';
                newItem.style.bottom = ( parseInt( parseFloat( par[1] ) * scaleY/10 ) - CityY0/10 +DeltaY -2)+'px';
                Navigation.appendChild(newItem);
            }
                    var InNavObj = document.getElementById(CityObject.id+"InNav")
                    InNavObj.className += " Visible";
                    var InNavLeft = parseInt(InNavObj.style.left.replace(/px/,""));
                    var InNavBottom = parseInt(InNavObj.style.bottom.replace(/px/,""));
            
            x = parseInt( parseFloat( par[0] ) * scaleX ) - CityX0 - CircleSize/2;
            y = parseInt( parseFloat( par[1] ) * scaleY ) - CityY0 - CircleSize/2;
            population = parseInt( par[2] );
            
            CityObject.style.left = x+'px';
            CityObject.style.bottom = y+'px';
            if ( population > BigCityPopulation )
            {
                CityObject.className += 'Big';
            }

            // If we have members in this city - we set class to "Active" mode for it
            for (childItem2 in CityObject.childNodes) 
            {
                if (CityObject.childNodes[childItem2].nodeType == 1 && (CityObject.childNodes[childItem2].id).indexOf("Member") != -1)
                {
                    CityObject.className;
                    CityLink = document.getElementById(CityObject.id+'Link');
                    
               		// change position of map to Focus on active city
               		changePos(Square,InNavLeft-SquareA/2,Navigation.offsetHeight-(DeltaY+SquareA)/2-InNavBottom);
               	    changePos(BigMap,MapCenterX-(InNavLeft-DeltaX)*10,MapCenterY-BigMap.offsetHeight+(InNavBottom-DeltaY/2)*10);
               	    
                    
			        id_.push( CityObject.id+'Members');
			        varName = 'id_['+i+']';
                    CityLink.setAttribute("onclick","return showHideObject('"+id_[i]+"')");
                    
		            if (isMSIE && !isOpera)	
		            {  
			            CityLink.onclick = new Function('return showHideObject('+varName+');');
			            
		            }

                    i++;
                }
            }
            
        }// end If
        
       
    }// end For

}


var XMLfile = "/members/map/index.xml";

function loadXMLDoc(fname)
{
    var xmlDoc;
    // code for IE
    if (window.ActiveXObject) 
    { 
        //xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
    }
    
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation && document.implementation.createDocument)
      {
        xmlDoc=document.implementation.createDocument("","",null);
      }
    else { alert('Your browser cannot handle this script'); }
    
    xmlDoc.async=false;
    xmlDoc.load(fname);
    return(xmlDoc);
}


function loadXSL(XSLfname, param)
{
    MapImage = document.getElementById("MapImage");
    Navigation = document.getElementById("Navigation");
    
    // code for IE
    if (window.ActiveXObject) 
    { 
        
            // подгружаем xsl и xml с сервера
        var style = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
        style.async = false;
        style.load(XSLfname);
        var source = new ActiveXObject("MSXML2.DOMDocument");
        source.async = false;
        source.load(XMLfile);

        var xslTemplate = new ActiveXObject('MSXML2.XSLTemplate');
        xslTemplate.stylesheet = style;
        var xslProcessor = xslTemplate.createProcessor();
        xslProcessor.input = source;
        //---->добавляем параметр с именем "pic" и значением функции
        xslProcessor.addParameter('id', param);
        // Выполняем трансформацию
        xslProcessor.transform();
        // выводим результат
        MapImage.innerHTML = HTMLinMapImage + xslProcessor.output;

    }
    
    // code for Mozilla, Firefox, Opera, etc.
    else if (document.implementation  && document.implementation.createDocument)
      {
          xml=loadXMLDoc(XMLfile); 
          xsl=loadXMLDoc(XSLfname);
    
          xsltProcessor=new XSLTProcessor();
          xsltProcessor.importStylesheet(xsl);
          xsltProcessor.setParameter(null, "id", param)


          resultDocument = xsltProcessor.transformToFragment(xml,document);
          
          if (MapImage.hasChildNodes()) { MapImage.innerHTML=""; }
          MapImage.innerHTML = HTMLinMapImage;
          MapImage.appendChild(resultDocument);
      
      }
      
      pasteXY();
}

function placeObjects(type,id)
{
    loadXSL(type+'.xsl',id);
    if ( type == 'city' ) { makeLinkActive(0); }
    return false;
}

function setGlowingTabsBy(tab1_mode,tab2_mode,tab3_mode,tab4_mode)
{
    if ( tab1_mode != -1 ) { setTabsMode(1,tab1_mode); }
    if ( tab2_mode != -1 ) { setTabsMode(2,tab2_mode); }
    if ( tab3_mode != -1 ) { setTabsMode(3,tab3_mode); }
    if ( tab4_mode != -1 ) { setTabsMode(4,tab4_mode); }

    return false;
}

function setTabsMode(tab_number,mode)
{
    var tab,arrow,link;
    switch (tab_number)
    {
        case 1: tab=tab1; arrow=arrow1; link=link1; break;
        case 2: tab=tab2; arrow=arrow2; link=link2; break;
        case 3: tab=tab3; arrow=arrow3; link=link3; break;
        case 4: tab=tab4; arrow=arrow4; link=link4; break;
    }

    if (mode==10)
    {
        if(tab.style.display == "none")
        {
                tab.style.display = "block";
                arrow.innerHTML = '&uarr;';
                link.className = "active";
        }
        else{
                tab.style.display = "none";
                arrow.innerHTML = '';
                link.className = "local";
            }
        
    }
    
    if (!mode)
    {
        tab.style.display = 'none';
        arrow.innerHTML = '';
        link.className = 'local';
    }
    else if(mode==1)
    {
        tab.style.display = "block";
        arrow.innerHTML = '&uarr;';
        link.className = "active";
    }
    
}

var PrevMemberId = 0;

function showHideObject(id)
{
    var obj,prevObj,prevMember,prevMemberLink;
    if ( PrevMemberId && PrevMemberId != id ) 
    {
        if( prevMember = document.getElementById(PrevMemberId) )
        {
            prevMember.style.display = "none";
            if (prevMemberLink = document.getElementById("City"+parseInt(PrevMemberId.replace(/City/,""))+"AllMembers")) 
            {// If in prevCITY isset AllMembers div
                if ( prevMemberLink.style.display == "block" )
                { showAllMembers( parseInt(PrevMemberId.replace(/City/,"")) ); }
            }
        }
         
    }
    
    if ( PrevMemberId != id ) { PrevMemberId = id; }
    
    if(obj = document.getElementById(id))
    {
        obj.style.display = (obj.style.display=='block') ? 'none' : 'block';
    }
    
    return false;
}

function makeLinkActive(object)
{
    var parentsIds = new Array('MembersColumn','ServiceColumn','ProjectColumn','TypeColumn');//alert(parentsIds.length);
    for (var j=0; j<parentsIds.length; j++)
    {
        var parent = document.getElementById(parentsIds[j]);
        var links = parent.getElementsByTagName("a");
        for (var i=0; i<links.length; i++)
        {
            links[i].className = "local";
        }
    }
    if (object) { object.className += " active"; }
}

function showAllMembers(cityId)
{
    var link,obj;

    link = document.getElementById("City"+cityId+"ShowAllMembers");
    link.style.display = (link.style.display == "none") ? "block" : "none";
    
    obj = document.getElementById("City"+cityId+"AllMembers");
    obj.style.display = (obj.style.display == "none") ? "block" : "none";

}
