﻿// JScript File

var s = document.getElementsByTagName('span');
var polyline;  // the root!
var fullRoute = false;
var activeEl2, activeEl3; 

var flagOpenBlock = 0;
function flagOpen(){
	flagOpenBlock = 1;
}
function flagClosed(){
	flagOpenBlock = 0;
}

var taxtArflagus = 0;
function mouseOverArea(){
     taxtArflagus = 1;
}
function mouseOutArea(){
     taxtArflagus = 0;
}
function openToptext(ph){
     pht = document.getElementById(ph).style
     pht.display = 'block'     
}
function closedToptext(ph){
     pht = document.getElementById(ph).style
     pht.display = 'none'     
}

function bodyRestart()
{
     var selBlock = document.getElementById('selectList')
     if(flagOpenBlock == 0){
     selBlock.style.display = 'none';
     }
     xxxArea = document.getElementsByTagName('textarea')
     for(var i=0;i<xxxArea.length;i++) {
     if(xxxArea[i].className == 'textarfocus'){
          if(taxtArflagus == 0 && xxxArea[i].value == ''){
     m = 0
     n = 4;
     ar =  Math.floor( Math.random() * (n - m + 1) ) + m;
          xxxArea[i].value = arText[ar]
          xxxArea[i].style.color = '#888'
          }
     }
     }
     
     hideMyPants();
}

function selOpen() {
    hideMyPants();
    var selBlock = document.getElementById('selectList');
    if (selBlock.style.display == 'none')
	    selBlock.style.display = 'block';
    else
        selBlock.style.display = 'none';
}

function ctrListClose() {
    getEl("selectList").style.display = "none";
}

var wCtrList = new Array();
var wCityList = new Array();

function wCityItem(city_id, ctr_id, lat, lng)
{
	this.city_id = city_id;
	this.ctr_id = ctr_id;
	this.lat = lat;
	this.lng = lng;
}

var addTable = new Array();
var ArrayNumb = 0;
function clickObject(){
	for(var i=0;i<s.length;i++) 
	{
		if(s[i].className == 'leftSpan')
		{
			s[i].onclick = function() 
			{
			    var textBlock = document.getElementById('textCuont');
		        var selBlock = document.getElementById('selectList');
		        
			    if (addCountryID(this.id))
			    {
       			    textBlock.innerHTML += '<span id="sm_'+this.id+'" class="leftSpanDiv">'+this.innerHTML+'<img src="content/img/select/close.gif" onclick="hideMyPants(); removeCtr('+this.id+');" class="x"></span>';
       			    textBlock.appendChild(getEl("ctrInput"));
			        selBlock.style.display = 'none';
			        getEl("ctrInput").value ="";
			    }
			}
		}
	}
}

function addTextTable(v){
	for(var i=0;i<s.length;i++) {
		if(s[i].className == 'addTextTd' && s[i].style.zIndex != '2'){
			s[i].innerHTML = v.innerHTML;
			xxx = parseInt(s[i].id)
			ccc = 'imbg'+xxx
			if(xxx == 0){
			document.getElementById(ccc).src = 'content/img/start.gif';
			s[i].style.zIndex = '2'
			}
			if(xxx > 0 && xxx != addTable.length){
			document.getElementById(ccc).src = 'content/img/lbg2.gif';
			s[i].style.zIndex = '2'
			}
			if(xxx > 0 && xxx == addTable.length){
			document.getElementById(ccc).src = 'content/img/start.gif';
			s[i].style.zIndex = '2'
			}
			break;
		}
	}
	v.parentNode.removeChild(v)
	
	
	if (getEl("arrayText").innerHTML.length < 3) 
	{
	    fullRoute = true;
	    buildMapArray();
	    initialize();
	}
	    
}

var arCoords = new Array();
var cityRoute = new Array();
function buildMapArray()
{
     var x = 0; var j=0;
     var spany = document.getElementsByTagName("span");
     arCoords.splice(0,arCoords.length);
     cityRoute.splice(0,cityRoute.length);
     
     for (var i=0; i<s.length; i++) 
     {
        if (spany[i].id.indexOf("marsh") != -1) 
        {
            for (var k=0; k<wCityList.length; k++) 
                if (wCityList[k].city_id == spany[i].id.substr(6)) 
                {
                    arCoords[x] = new GLatLng(wCityList[k].lat, wCityList[k].lng);
                    cityRoute[j] = wCityList[k];
                    x++; j++; break;
                }
        }
     }
            
}

function nextArray(v){
	for(var i=0;i<s.length;i++) {
		if(s[i].className == 'addTextTd'){
			xxx = parseInt(v.id)
			ccc = 'imbg'+xxx
			if(xxx == 0){
			document.getElementById(ccc).src = 'content/img/end.gif';
			}
			if(xxx > 0 && xxx != addTable.length){
			document.getElementById(ccc).src = 'content/img/mdline.gif';
			}
			if(xxx > 0 && xxx == addTable.length){
			document.getElementById(ccc).src = 'content/img/end.gif';
			}
			break;
		}
	}
	
	if (fullRoute)
    {
        fullRoute = false;
        drawEmptyMap();
    }
    
	document.getElementById('arrayText').innerHTML += '<span onclick="addTextTable(this);"> '+v.innerHTML+' </span>'
	v.innerHTML = ''
	v.style.zIndex = '1'
}

function addCountryID (id)
{
	var i = 0;
	if (wCtrList.length>0) i = wCtrList.length;

	var exists = false;
	for (var j=0; j<wCtrList.length; j++)
		if (wCtrList[j] == id) 
		{
		    exists = true;
		    return false;
		}
	
	if (!exists) wCtrList[i] = id; return true;
}

function removeCtr(id) 
{
    clearErroronmapDiv();
    
    for (var i=0; i<wCtrList.length; i++)
        if (wCtrList[i] == id) 
            wCtrList.splice(i,1);    
            
    var spans = document.getElementsByTagName('span');
    for (var j=0; j<spans.length; j++)
        if ((spans[j].className == 'leftSpanDiv') && (spans[j].getAttribute("id").indexOf(id) != -1)) 
        {
            spans[j].parentNode.removeChild(spans[j]);
            break;
        }
    
    for (var k=0; k<wCityList.length; k++)
        if (wCityList[k].ctr_id == id) 
        {
            // ---- ниже идет гребаная часть.... -----------
            
            if (fullRoute)
            {
                fullRoute = false;
                drawEmptyMap();
            }
            
            if (getEl("marsh_"+wCityList[k].city_id))
                getEl("marsh_"+wCityList[k].city_id).parentNode.removeChild(getEl("marsh_"+wCityList[k].city_id));
            
            for (var x=0; x<addTable.length; x++)
            {
                if (addTable[x].toString().indexOf("marsh_"+wCityList[k].city_id) != -1) 
                {
                    addTable.splice(x,1);
                    ArrayNumb--;
                    
                    rebuildArray();
                    break;
                }
            }
            
            // ---------------- которая не работает!!! ------
        
            var elem = getEl("sli_"+wCityList[k].city_id);
            elem.parentNode.removeChild(elem);
            wCityList.splice(k,1); k--;
        }
}

function addCity(city_id, ctr_id, lat, lng, name, bid)
{
    var i = 0;
	if (wCityList.length>0) i = wCityList.length;

	var exists = false;
	for (var j=0; j<wCityList.length; j++)
		if (wCityList[j].city_id == city_id) 
		{
		    exists = true;
		    return false;
		}
	//var item = new wCityItem(city_id, ctr_id, lat, lng)
	var cityItem = {'city_id': city_id, 
	                'ctr_id': ctr_id, 
	                'lat': lat, 
	                'lng': lng,
	                'name': name,
	                'bid': bid};
	                
	if (!exists) wCityList[i] = cityItem; return true;
}

function removeCity(id)
{
    clearErroronmapDiv();    

    for (var i=0; i<wCityList.length; i++)
        if (wCityList[i].city_id == id) 
            wCityList.splice(i,1);
    
    if (fullRoute)
    {
        fullRoute = false;
        drawEmptyMap();
    }
    
    var spans = document.getElementsByTagName('span');
    for (var j=0; j<spans.length; j++)
        if ((spans[j].className == 'leftSpanDiv2') && (spans[j].getAttribute("id").indexOf(id) != -1)) 
        {
            spans[j].parentNode.removeChild(spans[j]);
            
            if (getEl("marsh_"+id.toString()))
                getEl("marsh_"+id).parentNode.removeChild(getEl("marsh_"+id));
            
            for (var k=0; k<addTable.length; k++)
            {
                if (addTable[k].toString().indexOf("marsh_"+id) != -1) 
                {
                    addTable.splice(k,1);
                    ArrayNumb--;
                    
                    rebuildArray();
                }
            }
        
            return;
        }
}

function ctrList (str)
{
    selOpen();
    
    var sxml = "<item><letters>" + str + "</letters></item>";
    AjaxXmlRequest(sxml, "mod/citylist/core.aspx?option=country", fill_ctrSelect);
}

function cityList(str, type) 
{
    ctrListClose();
    if (str.length > 1)
    {
        var sxml = "<item><letters>"+getEl("cityInput").value+"</letters><countries>"+wCtrList.join()+"</countries></item>";
        AjaxXmlRequest(sxml, "mod/citylist/core.aspx?option=city&type="+type, fill_citySelect);
    }
    else hideMyPants();
}

function fill_ctrSelect(text, xml)
{
        activeEl2 = null;
        var intxt = "";
    	var items = xml.getElementsByTagName("item");
	    var el = getEl("selectList");
	    
	    //el.innerHTML = "";
	    el.style.display = "block";
	    
	  	for(var i = 0; i < items.length; i++)
		{
		    if (items.length<12)
		        el.style.height = (24*items.length).toString()+'px';
		    else
		        el.style.height = '220px';	
		        	    
		    var loc_id =  _wGetAttr(items[i],"id");
		    
		    if (loc_id == 'nemae') 
		    {
		        intxt += "<div style=\"padding-left: 3px; margin: 1px;\" onmouseover=\"this.style.background = '#fce5e5';\" onmouseout=\"this.style.background = '';\"><span class=\"leftSpan\" style=\"padding: 3px;\">" + _wGetTxt(items[i]) + "</span><div class=\"clear\"></div></div>";
		        break;
		    }
		    else if (items.length == 1) 
		    {
		       activeEl2 = items[0];
		       intxt += "<div style=\"padding-left: 3px; margin: 1px; background: #fce5e5;\"><span class=\"leftSpan\" style=\"padding: 3px;\" id=\"" + loc_id + "\">" + _wGetTxt(items[i]) + "</span><div class=\"clear\"></div></div>";         
		    }
		    else
		       intxt += "<div style=\"padding-left: 3px; margin: 1px;\" onmouseover=\"this.style.background = '#fce5e5';\" onmouseout=\"this.style.background = '';\"><span class=\"leftSpan\" style=\"padding: 3px;\" id=\"" + loc_id + "\">" + _wGetTxt(items[i]) + "</span><div class=\"clear\"></div></div>";         

		}		
        
        el.innerHTML = intxt;	
        clickObject();
}

function fill_citySelect(text, xml)
{
        activeEl3 = null;
    	var intxt = "";
    	var items = xml.getElementsByTagName("item");
	    var el = getEl("cityList");
	    
	    el.innerHTML = "";
	    el.style.display = "block";
	    
        //intxt += "<ul class=\"citySelectList\">";
	  	for(var i = 0; i < items.length; i++)
		{
		    if (items.length<12)
		        el.style.height = (24*items.length).toString()+'px';
		    else
		        el.style.height = '240px';	
		        	    
		    var loc_id =  _wGetAttr(items[i],"id");

		    if (loc_id == 'nemae') 
		    {
		        intxt += "<div class=\"listgcount\" onmouseover=\"this.style.background = '#fce5e5';\" onmouseout=\"this.style.background = '';\"><span class=\"leftSpan\">"+_wGetTxt(items[i])+"</span><div class=\"rcont\"></div><div class=\"clear\"></div></div>";
		        break;
		    }
		    else if (items.length == 1)
		    {
		        activeEl3 = items[0];
		        intxt += "<div class=\"listgcount\" style=\"background: #fce5e5;\"><span id=\"li_"+loc_id+"\" onmouseover=\"activeEl = this;\" onmouseout=\"activeEl = null;\" onmousedown=\"cityClick("+loc_id+","+_wGetAttr(items[i],"country_id")+",'"+_wGetTxt(items[i])+"',"+_wGetAttr(items[i],"lat")+","+_wGetAttr(items[i],"lng")+","+_wGetAttr(items[i],"bid")+");\" onfocus=\"cityClick("+loc_id+","+_wGetAttr(items[i],"country_id")+",'"+_wGetTxt(items[i])+"',"+_wGetAttr(items[i],"lat")+","+_wGetAttr(items[i],"lng")+","+_wGetAttr(items[i],"bid")+");\" class=\"leftSpan\" style=\"color: #b0b0a9;\">"+_wGetTxt(items[i])+"</span><div class=\"rcont\">"+_wGetAttr(items[i],"countryname")+"</div><div class=\"clear\"></div></div>";
		        break;
		    }
		    if (loc_id != 'allcities')
			    intxt += "<div class=\"listgcount\" onmouseover=\"this.style.background = '#fce5e5';\" onmouseout=\"this.style.background = '';\">"+
			         "<span id=\"li_"+loc_id+"\" onmouseover=\"activeEl = this;\" onmouseout=\"activeEl = null;\" onmousedown=\"cityClick("+loc_id+","+_wGetAttr(items[i],"country_id")+",'"+_wGetTxt(items[i])+"',"+_wGetAttr(items[i],"lat")+","+_wGetAttr(items[i],"lng")+","+_wGetAttr(items[i],"bid")+");\" onfocus=\"cityClick("+loc_id+","+_wGetAttr(items[i],"country_id")+",'"+_wGetTxt(items[i])+"',"+_wGetAttr(items[i],"lat")+","+_wGetAttr(items[i],"lng")+","+_wGetAttr(items[i],"bid")+");\" class=\"leftSpan\">"+_wGetTxt(items[i])+"</span><div class=\"rcont\">"+_wGetAttr(items[i],"countryname")+"</div><div class=\"clear\"></div></div>";
			else
			    intxt += "<div class=\"listgcount\" onmouseover=\"this.style.background = '#fce5e5';\" onmouseout=\"this.style.background = '';\"><span class=\"leftSpan\" style=\"color: #b0b0a9;\">"+_wGetTxt(items[i])+"</span><div class=\"rcont\"></div><div class=\"clear\"></div></div>";         
		}		
        //intxt += "</ul>";
        
        el.innerHTML += intxt;	
}

function hideMyPants()
{
    var el = getEl("cityList");
    el.innerHTML = "";
    el.style.display = "none";
}

var activeEl;

function cityClick(city_id, ctr_id, name, lat, lng, bid)
{
    if(activeEl) 
    {
        if (addCity(city_id,ctr_id,lat,lng,name,bid)) 
        {
            //getEl("textCuont2").innerHTML += "<span id=\"sli_"+activeEl.id+"\" class=\"leftSpanDiv2\">"+activeEl.innerHTML+"<img src=\"content/img/select/close.gif\" onclick=\"removeCity('"+activeEl.id+"')\" class=\"x\"></span>"; 
            getEl("textCuont2").innerHTML += "<span id=\"sli_"+city_id+"\" class=\"leftSpanDiv2\">"+activeEl.innerHTML+"<img src=\"content/img/select/close.gif\" onclick=\"removeCity('"+city_id+"');\" class=\"x\"></span>"; 
            getEl("cityInput").value = "";
            getEl("textCuont2").appendChild(getEl("cityInput"));
            getEl("cityInput").focus();
            
            
            addTable[ArrayNumb] = '<span id="marsh_'+city_id+'">'+name+'</span>';
        	ArrayNumb+=1;
        	
        	hideMyPants();
        	rebuildArray();
        
        }
    }
}

function rebuildArray()
{
	    document.getElementById('arrayText').innerHTML = '';
	    document.getElementById('addTableTr').innerHTML = '';
	    TableTr = document.getElementById('addTableTr');
	    
		for(i=0; i<addTable.length; i++)
		{
			document.getElementById('arrayText').innerHTML += '<span onclick="addTextTable(this);"> '+addTable[i]+' </span>'
				if(i < 1){
					TableTr.innerHTML += '<div class="blockmapp"><img src="content/img/end.gif" id="imbg'+i+'" class="imgBgi"><span id="'+i+'add" class="addTextTd" onclick="nextArray(this); clearErroronmapDiv();"></span><div>';
				}
				if(i > 1){
					TableTr.innerHTML += '<div class="blockmapp"><img src="content/img/mdline.gif" class="imgBgi" id="imbg'+i+'"><span id="'+i+'add" class="addTextTd" onclick="nextArray(this); clearErroronmapDiv();"></span><div>';
				}
		}
		
		TableTr.innerHTML += '<div class="blockmapp"><img src="content/img/end.gif" id="imbg'+i+'" class="imgBgi"><span id="'+i+'add" class="addTextTd" onclick="nextArray(this); clearErroronmapDiv();"></span><div>'

}

function selOverBlock(){
    var d = document.getElementsByTagName('div')
	    for(var i=0;i<d.length;i++) {
		    if(d[i].className == 'listgcount'){
			    d[i].onmouseover = function(){
				    this.style.background = '#fce5e5'	
			    }
			    d[i].onmouseout = function(){
				    this.style.background = ''	
			    }
		    }
	    }
}


document.onkeypress = reg_event_enter;
//document.onkeydown = reg_event_arrows;

var selCities = new Array();
var selCtries = new Array();

function reg_event_arrows(event)
{
    var k=0;

    if (window.event) event = window.event; // 38 - 40
    if (event.keyCode==40)
    {
        if (activeEl3==null)
        {
            var divs123 = document.getElementsByTagName("span");
            for (var i=0; i<divs123.length; i++)
                if (divs123[i].id.indexOf("li") != -1)
                    selCities.push(divs123[i]);
                    
            activeEl3 = getEl(selCities[k].id);
            (getEl(selCities[k].getAttribute("id")).parentNode).style.background = '#fce5e5';
        }
        else
        {
            k++;
            activeEl3 = getEl(selCities[k].id);
            (getEl(selCities[k].getAttribute("id")).parentNode).style.background = '#fce5e5';
        }
    }
    else if (event.keyCode == 38)
    {
        
    }
}

function reg_event_enter(event)
{
    if (window.event) event = window.event;
    if(event.keyCode==13 && activeEl2)
    {
             var textBlock = document.getElementById('textCuont');
             
     	     if (addCountryID(_wGetAttr(activeEl2,"id")))
     	     {
		        textBlock.innerHTML += '<span id="sm_'+_wGetAttr(activeEl2,"id")+'" class="leftSpanDiv">'+_wGetTxt(activeEl2)+'<img src="content/img/select/close.gif" onclick="hideMyPants(); removeCtr('+_wGetAttr(activeEl2,"id")+');" class="x"></span>';
		        selOpen();
		        getEl("ctrInput").value = "";
    	        textBlock.appendChild(getEl("ctrInput"));
    	        getEl("ctrInput").focus();

		     }
	    
	         //selOpen();
             
             activeEl2 = null;
             event.preventDefault();//запрет на дальнейшее распространение
             return false;//возвращаем false
    }
    else if (event.keyCode==13 && activeEl3)
    {             
            if (addCity(_wGetAttr(activeEl3,"id"),_wGetAttr(activeEl3,"country_id"),_wGetAttr(activeEl3,"lat"),_wGetAttr(activeEl3,"lng"),_wGetTxt(activeEl3),_wGetAttr(activeEl3,"bid"))) 
            {
                getEl("textCuont2").innerHTML += "<span id=\"sli_"+_wGetAttr(activeEl3,"id")+"\" class=\"leftSpanDiv2\">"+_wGetTxt(activeEl3)+"<img src=\"content/img/select/close.gif\" onclick=\"removeCity('"+_wGetAttr(activeEl3,"id")+"')\" class=\"x\"></span>"; 
                getEl("cityInput").value = "";
                getEl("textCuont2").appendChild(getEl("cityInput"));
                getEl("cityInput").focus();
                
                addTable[ArrayNumb] = '<span id="marsh_'+_wGetAttr(activeEl3,"id")+'">'+_wGetTxt(activeEl3)+'</span>';
        	    ArrayNumb+=1;
    		    
    		    hideMyPants();
    		    rebuildArray();
            }           
             
            activeEl3 = null;
            event.preventDefault();//запрет на дальнейшее распространение
            return false;//возвращаем false
    }
}




// РИСУЕМ НАШУ КАРТОЧКУ
// ^_^

// -------- Если нулевые координаты - заменяем на ненулевые, берет средние между точками
//
function changeNullCoords(coords)
{
    for (var i=0; i<coords.length; i++)
    {
        if (coords[i].lat() == 0 || coords[i].lng() == 0)
        {
            if (i==0) 
            {
                coords[i] = new GLatLng(coords[i+1].lat(), coords[i+1].lng());
            }
            else if (i==coords.length-1)
            {
                coords[i] = new GLatLng(coords[i-1].lat(), coords[i-1].lng());
            }
            else
            {
                coords[i] = (new GLatLng( (coords[i-1].lat()+coords[i+1].lat())/2,  (coords[i-1].lng()+coords[i+1].lng())/2))
            }
        }
    }
    arCoords = coords;
}

function clearErroronmapDiv()
{
    var el = getEl("errorOnMap");
    el.innerHTML = "";
}

function drawMapOfCountry()
{
    var el = getEl("errorOnMap");
    el.innerHTML = markupList['uspeh22'];
    AjaxRequest("mod/gmap/core.aspx?mode=getcountrycoords&cid="+wCtrList[0], get_country_coords);
}

var markerIsSet = 0;
function get_country_coords(text, xml)
{   
    var lat = _wGetTxt(xml.getElementsByTagName("lat")[0]);
    var lng = _wGetTxt(xml.getElementsByTagName("lng")[0]);
    arCoords[0] = new GLatLng(lat, lng);

    var map = new GMap2(document.getElementById("qwertyuiop"));
    map.enableScrollWheelZoom();
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    map.setCenter(arCoords[0], 5);
    
    GEvent.addListener(map, "click", function() { 
        if (markerIsSet == 0) 
        {
            var marker0 = new GMarker(arCoords[0], {draggable: true});
            map.addOverlay(marker0);    
            GEvent.addListener(marker0, "dragend", function() { 
                arCoords[0] = new GLatLng(marker0.getLatLng().lat(), marker0.getLatLng().lng());
            });
            markerIsSet++;
        }
    });

}


//------------ рисует маршрут ------------------
//
 function drawPolyline(map, coords)
    {
     polyline =  new GPolyline(coords, "#ff0000", 5);
     map.addOverlay(polyline);
    }
    
// ------------ задает масштаб карты ------------
//
function getMapScale(arrayCoords)
    {
     var scale = 1;

     var arLat = new Array();
     var arLng = new Array();

     for (var i=0; i<arrayCoords.length; i++)
     {
          arLat[i] = arrayCoords[i].lat();
          arLng[i] = arrayCoords[i].lng();
     }

     arLat.sort();
     arLng.sort();

     var deltaLat = arLat[arLat.length-1]-arLat[0];
     var deltaLng = arLng[arLng.length-1]-arLng[0];

  if (Math.abs(deltaLat) <0.1 || Math.abs(deltaLng)<0.1) scale = 11;
     if ((Math.abs(deltaLat)>0.1 && Math.abs(deltaLat)<0.4) || (Math.abs(deltaLng)>0.1 && Math.abs(deltaLng)<0.4)) scale = 10;      
     if ((Math.abs(deltaLat)>0.4 && Math.abs(deltaLat)<1.0) || (Math.abs(deltaLng)>0.4 && Math.abs(deltaLng)<1.0)) scale = 9;      
     if ((Math.abs(deltaLat)>1.0 && Math.abs(deltaLat)<3.0) || (Math.abs(deltaLng)>1.0 && Math.abs(deltaLng)<3.0)) scale = 8;      
     if ((Math.abs(deltaLat)>3.0 && Math.abs(deltaLat)<5.0) || (Math.abs(deltaLng)>3.0 && Math.abs(deltaLng)<5.0)) scale = 7;      
     if ((Math.abs(deltaLat)>5.0 && Math.abs(deltaLat)<11.0) || (Math.abs(deltaLng)>5.0 && Math.abs(deltaLng)<11.0)) scale = 6;      
     if ((Math.abs(deltaLat)>11.0 && Math.abs(deltaLat)<20.0) || (Math.abs(deltaLng)>11.0 && Math.abs(deltaLng)<20.0)) scale = 5;        
     if ((Math.abs(deltaLat)>20.0 && Math.abs(deltaLat)<45.0) || (Math.abs(deltaLng)>20.0 && Math.abs(deltaLng)<45.0)) scale = 4;      
     if ((Math.abs(deltaLat)>45.0 && Math.abs(deltaLat)<70.0) || (Math.abs(deltaLng)>45.0 && Math.abs(deltaLng)<70.0)) scale = 3;      
     if ((Math.abs(deltaLat)>70.0 && Math.abs(deltaLat)<110.0) || (Math.abs(deltaLng)>70.0 && Math.abs(deltaLng)<110.0)) scale = 2;      
     if (Math.abs(deltaLat)>110.0 || Math.abs(deltaLng)>110.0) scale = 1;    
     return scale;

    }

//------------ центрирование карты --------------
//
 function getMapCenter(arrayCoords)
    {
     var center = new GLatLng(0, 0);

     var arLat = new Array();
     var arLng = new Array();

     for (var i=0; i<arrayCoords.length; i++)
     {
          arLat[i] = arrayCoords[i].lat();
          arLng[i] = arrayCoords[i].lng();
     }

     arLat.sort();
     arLng.sort();

     var cLat =  (arLat[0]+arLat[arLat.length-1])/2;
     var cLng =  (arLng[0]+arLng[arLng.length-1])/2;
          
     center = new GLatLng(cLat, cLng);
     return center;
    }

// ---------- ОСНОВНОЙ ВЫВОД КАРТЫ -----------------------
//
function initialize() 
{
      if (GBrowserIsCompatible()) 
      {
            var map = new GMap2(document.getElementById("qwertyuiop"));
            map.enableScrollWheelZoom();
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            
            if (arCoords.length == 1 && (arCoords[0].lat() == 0 || arCoords[0].lng() == 0))
            {
                drawMapOfCountry();
            }
            else
            {
                changeNullCoords(arCoords);
                map.setCenter(getMapCenter(arCoords), getMapScale(arCoords));
    
                drawPolyline(map, arCoords);
    
                var dmf = "";
                dmf  = "function drawMarkers() {";
                for (var i=0; i<arCoords.length; i++)   
                {
                    dmf += "var marker"+i+" = new GMarker(arCoords["+i+"], {draggable: true});";
                    dmf += "map.addOverlay(marker"+i+"); ";    
                    dmf += "GEvent.addListener(marker"+i+", \"dragend\", function() { ";
                    dmf += "     arCoords["+i+"] = new GLatLng(marker"+i+".getLatLng().lat(), marker"+i+".getLatLng().lng());";
                    dmf += "     map.removeOverlay(polyline);";
                    dmf += "     drawPolyline(map, arCoords);";
                    dmf += "});";
                }     
                dmf += "}";
                dmf += "drawMarkers();";
    
                eval(dmf);
            }
     }
} 



function gmapShowInit() 
{
      if (GBrowserIsCompatible()) 
      {
            var map = new GMap2(document.getElementById("gmapout"));
            map.enableScrollWheelZoom();
            changeNullCoords(arCoords);
            map.setCenter(getMapCenter(arCoords), getMapScale(arCoords));

            drawPolyline(map, arCoords);

              var dmf = "";
              dmf  = "function drawMarkers() {";
            for (var i=0; i<arCoords.length; i++)
            {
                   dmf += "var marker"+i+" = new GMarker(arCoords["+i+"], {draggable: false});";
                   dmf += "map.addOverlay(marker"+i+"); ";    
            }     
              dmf += "drawPolyline(map, arCoords);";
              dmf += "}";
              dmf += "drawMarkers();";

              eval(dmf);
              

        return map;
     }
} 

function gmapShowInit_noroot() 
{
      if (GBrowserIsCompatible()) 
      {
            var map = new GMap2(document.getElementById("gmapout"));
            map.enableScrollWheelZoom();
            changeNullCoords(arCoords);
            map.setCenter(getMapCenter(arCoords), getMapScale(arCoords));

            drawPolyline(map, arCoords);

              var dmf = "";
            for (var i=0; i<arCoords.length; i++)
            {
                   var marker = new GMarker(arCoords[i], {draggable: false});
                   map.addOverlay(marker); 
            }     

        return map;
     }
} 

// ------------ карта по умолчанию --------------------------------
//
 function drawEmptyMap()
{
    var map = new GMap2(document.getElementById("qwertyuiop"));
    map.enableScrollWheelZoom();
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(0, 0), 2);
}


///
//////////
///

var marshroot = false;
function readSelectedCities()
{
    marshroot = false;
    if (fullRoute) // если построен полный маршрут, то города в возращаемом массиве выстроены по порядку следования
    {
        for (var i=0;i<cityRoute.length;i++)
        {
            cityRoute[i].lat = arCoords[i].lat();
            cityRoute[i].lng = arCoords[i].lng();
        }
        marshroot = true;
        return cityRoute;
    }
    else           // иначе города в перемешку, просто все выбранные
        return wCityList;
}

var summary = new Array();
function readAllReport()
{
    var divs = getEl("fullrp").childNodes; var x=0;
    
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf("gecko") != -1 || ua.indexOf("opera") != -1 )
        var i=1;
    else
        var i=0;
     
    for (i; i<divs.length;i++)
    {
        if (divs[i].id.indexOf("report_txt") != -1)
        {
            summary[x] = {'type': 1,
                      'text': divs[i].innerHTML,
                      'media': ''};
            x++;
        }
        
        if (divs[i].id.indexOf("report_img") != -1)
        {
            summary[x] = {'type': 2,
                      'text': VvedenoOpisanie(getEl(divs[i].id.replace("img","com")).value), //getEl(divs[i].id.replace("img","com")).value,
                      'media': divs[i].childNodes[1].src.replace('_res','')};
                      
            x++;
        }
    }
    return summary;
}

function VvedenoOpisanie(txt)
{
    if (txt != arText[0] && txt != arText[1] && txt != arText[2] && txt != arText[3] && txt != arText[4])
        return txt;
    else
        return '';
}


function XmlEnformat(str)
{
    return str.replace(/</g,'|#--lt;').replace(/>/g,'|#--gt;').replace(/&/g,'|#--amp;')
}


var usertype = 1;
function showUsersForm()
{
    ge("usersform").style.display = 'block';
    ge("auhtorsform").style.display = 'none';
    usertype = 1;
}

function showAuthorsForm()
{
    ge("usersform").style.display = 'none';
    ge("auhtorsform").style.display = 'block';
    usertype = 2;
}

function SaveData_request(txt,xml)
{
//    waitBoxItem.Hide();   
    var btn = ge("sendbutton");
    btn.innerHTML = markupList['uspeh15'];
    btn.href = "javascript:SaveData(readSelectedCities(),readAllReport());"

    var answ = xml.getElementsByTagName("result");
    if(answ.length > 0) answ = _wGetTxt(answ[0]);
    else answ = -1;
    var link = xml.getElementsByTagName("link");
    switch(parseInt(answ))
    {
        case 0: alert(markupList['uspeh1']); document.location=(link&&link.length>0?_wGetTxt(link[0]):'http://citycatalogue.ru/'); break; //all right
        case -1: alert(markupList['uspeh2']);
        case -2: alert(markupList['uspeh3']); break;
    }
}

//var waitBoxItem = null;
function SaveData(listCities, listJItems)
{
   var name = XmlEnformat(ge("journeyName").value); 
   var dateb = ge("jdateb").value; 
   var datee = ge("jdatee").value;  
   var jabout = XmlEnformat(ge("jabout").value);  
   
   var login = XmlEnformat(ge("login").value);
   var pass = XmlEnformat(ge("password").value);
   var author = XmlEnformat(ge("author").value);
   var email = XmlEnformat(ge("email").value);


//проверка ошибок
    
   if(name.length == 0) { alert(markupList['uspeh4']); return; }
   if(dateb.length == 0) { alert(markupList['uspeh6']); return; }
   if(datee.length == 0) datee = dateb;
   if(jabout.length == 0) { alert(markupList['uspeh5']); return; }
   
   if(listCities.length==0){ alert(markupList['uspeh7']); return; }
   if(listJItems.length==0){ alert(markupList['uspeh8']); return; }
   
   if(usertype==1)
   {
        if(login.length == 0) { alert(markupList['uspeh13']); return; }
        if(pass.length == 0) { alert(markupList['uspeh14']); return; }
   }
   else
   {
        if(author.length == 0) { alert(markupList['uspeh9']); return; }
        if(email.length == 0) { alert(markupList['uspeh11']); return; }
        if(!checkmail(email)){alert(markupList['uspeh12']); return; }
   }
//теперь, когда, вроде как, все правильно...

   var sxml = '<journey><id>0</id><name>'+name+'</name><type>1</type><dateb>'+dateb+'</dateb><datee>'+datee+'</datee><season></season><about>'+jabout+'</about>';
   sxml += '<user type="'+usertype+'"><login>'+login+'</login><password>'+pass+'</password><author>'+author+'</author><email>'+email+'</email></user>';

   sxml += '<tags>';
   for(i = 0; i < listCities.length; i++)
   {
        sxml += '<tag object_id="'+listCities[i].city_id+'" object_bid="'+listCities[i].bid+'" objecttype="2" lat="'+listCities[i].lat+'" long="'+listCities[i].lng+'" jie_id="0" position="'+(fullRoute?i+1:0)+'">'+listCities[i].name+'</tag>';
   }
   sxml += '</tags>';
   
   sxml += '<jitems>'
   for(i = 0; i < listJItems.length; i++)
   {
    switch(listJItems[i].type)
    {
        case 1: if(listJItems[i].text.length>0)sxml += '<jitem type="1" position="'+(i+1)+'"><text>'+XmlEnformat(listJItems[i].text)+'</text></jitem>'; break;
        case 2: if(listJItems[i].media.length>0)sxml += '<jitem type="2" position="'+(i+1)+'"><photo position="1" filepath="'+listJItems[i].media+'">'+XmlEnformat(listJItems[i].text)+'</photo></jitem>'; break;
    }
   }
   
   sxml += '</jitems>'
  
   sxml += '</journey>';   


    var btn = ge("sendbutton");
    btn.innerHTML = "Подождите, идет сохранение...";
    btn.href = "javascript:void(0);"

//   waitBoxItem = new WaitBox("Подождите,","идет сохранение данных");
//   waitBoxItem.Show();

   AjaxXmlRequest(sxml,'mod/journey/core.aspx?option=new', SaveData_request);
}

