function debug(o) { log(Dump(o)); }

function Dump(d,l) {
  var i,k;
    if (l == null) l = 1;
    var ss = '';
    if (typeof(d) == "object") {
        ss += typeof(d) + " {\r\n";
        for (k in d) {
            for (i=0; i<l; i++) {ss += "  "; }
      ss += k + ": " + d[k] + "\r\n";//Dump(d[k], l+1);
        }
        for (i=0; i<l-1; i++) ss += "  ";
        ss += "}\r\n"
    } else {
        ss += "" + d + "\r\n";
    }
    return ss;
}


function log(message) {
    if (!log.window_ || log.window_.closed) {
        var win = window.open("", null, "width=400,height=200," +
                              "scrollbars=yes,resizable=yes,status=no," +
                              "location=no,menubar=no,toolbar=no");
        if (!win) return;
        var doc = win.document;
        doc.write("<html><head><title>Debug Log</title><style>li {border-bottom:1px solid #000; margin-bottom:10px;}</style></head>" +
                  '<body><pre id="logs"></pre></body></html>');
        doc.close();
        log.window_ = win;
    }
    var logLine = log.window_.document.createElement("li");
    logLine.appendChild(log.window_.document.createTextNode(message));
    log.window_.document.getElementById('logs').appendChild(logLine);
}

/**/
function getElementParams(CEl) {
  if(CEl==null)   {return null; }

  var Y=0;
  var X=0;
  var El = CEl;
  do {
    Y += El.offsetTop
    X += El.offsetLeft
  } while ((El = El.offsetParent) != null);

  var res=new Object;
  res.left = X;
  res.top = Y;
  res.width = CEl.offsetWidth;
  res.height = CEl.offsetHeight;
  res.right = X+CEl.offsetWidth;
  res.bottom = Y+CEl.offsetHeight;
  return res;
}

/**/
function setCookie (name, value, expires, path, domain, secure) {
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name) {
        var prefix = name + "="
        var cookieStartIndex = document.cookie.indexOf(prefix)
        if (cookieStartIndex == -1)
                return null
        var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
        if (cookieEndIndex == -1)
                cookieEndIndex = document.cookie.length
        return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

function stopEvent(e) {
    if (!e) e = window.event;
    if (!e) return;
    if (e.stopPropagation) {
        e.stopPropagation();
    } else {
        e.cancelBubble = true;
    }
}

function cancelEvent(e) {
    if (!e) e = window.event;
    if (!e) return;
    if (e.preventDefault) {
        e.preventDefault();
    } else {
        e.returnValue = false;
    }
}

/*------------------------------------------------*/
var infoWin = null;

function js_popup(HTML) {
  if (infoWin) infoWin.close();
  infoWin = window.open('','view_info_window','width=300,height=150,scrollbars=yes,resizable=no,status=no,menu=no');
  if (infoWin) {
    infoWin.document.title='Информация об объекте';
    infoWin.document.bgColor='#FFFFED';
    infoWin.document.write(HTML);
    infoWin.document.body.innerHTML=HTML;
    infoWin.document.bgColor='#FFFFED';
  }
  else {
    alert('Невозможно открыть окно. Отмените блокировку всплывающих окон для данного сайта.');
  }
}

//------------------------------------------------------------------
var AZ = '     Ё               ё       АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'
var azURL = '0123456789ABCDEF'
var b64s  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
var b64a  = b64s.split('')

function enBASE64(str) {
  var a=Array(), i
  for( i=0; i<str.length; i++ ){
    var cch=str.charCodeAt(i)
    if( cch>127 ){  cch=AZ.indexOf(str.charAt(i))+163; if(cch<163) continue; }
    a.push(cch)
  };
  var s=Array(), lPos = a.length - a.length % 3
  for(i=0;i<lPos;i+=3){
    var t=(a[i]<<16)+(a[i+1]<<8)+a[i+2]
    s.push( b64a[(t>>18)&0x3f]+b64a[(t>>12)&0x3f]+b64a[(t>>6)&0x3f]+b64a[t&0x3f] )
  }
  switch ( a.length-lPos ) {
    case 1 : var t=a[lPos]<<4; s.push(b64a[(t>>6)&0x3f]+b64a[t&0x3f]+'=='); break
    case 2 : var t=(a[lPos]<<10)+(a[lPos+1]<<2); s.push(b64a[(t>>12)&0x3f]+b64a[(t>>6)&0x3f]+b64a[t&0x3f]+'='); break
  }
  return s.join('')
}

function deBASE64(str) {
  while(str.substr(-1,1)=='=')str=str.substr(0,str.length-1);
  var b=str.split(''), i
  var s=Array(), t
  var lPos = b.length - b.length % 4
  for(i=0;i<lPos;i+=4){
    t=(b64s.indexOf(b[i])<<18)+(b64s.indexOf(b[i+1])<<12)+(b64s.indexOf(b[i+2])<<6)+b64s.indexOf(b[i+3])
    s.push( ((t>>16)&0xff), ((t>>8)&0xff), (t&0xff) )
  }
  if( (b.length-lPos) == 2 ){ t=(b64s.indexOf(b[lPos])<<18)+(b64s.indexOf(b[lPos+1])<<12); s.push( ((t>>16)&0xff)); }
  if( (b.length-lPos) == 3 ){ t=(b64s.indexOf(b[lPos])<<18)+(b64s.indexOf(b[lPos+1])<<12)+(b64s.indexOf(b[lPos+2])<<6); s.push( ((t>>16)&0xff), ((t>>8)&0xff) ); }
  for( i=s.length-1; i>=0; i-- ){
    if( s[i]>=168 ) s[i]=AZ.charAt(s[i]-163)
    else s[i]=String.fromCharCode(s[i])
  };
  return s.join('')
}




///////////cookies

// Извлекаем "Плюшку"
function extractCookieValue(val) {
    if ((endOfCookie = document.cookie.indexOf(";", val)) == -1) {
        endOfCookie = document.cookie.length;
    }
    var s = unescape(document.cookie.substring(val, endOfCookie));
    if (s == '') {
        s = '0';
    }
    return s;
}

// Читаем "Плюшку"
function ReadCookie(cookiename) {
    var numOfCookies = document.cookie.length;
    var nameOfCookie = cookiename + '=';
    var cookieLen = nameOfCookie.length;
    var x = 0 ;
    while (x <= numOfCookies) {
        var y = (x + cookieLen);
        if (document.cookie.substring(x, y) == nameOfCookie) {
            return (extractCookieValue(y));
        }
        x = document.cookie.indexOf(' ', x) + 1;
        if (x == 0) {
            break;
        }
    }
    return '0';
}

// Удаляем "Плюшку"
function  DeleteCookie(name) {
    CreateCookie(name, '', -1);
}


// Создем "Плюшку"
function CreateCookie(name, value, expiredays) {
var todayDate = new Date();
    todayDate.setDate(todayDate.getDate() + expiredays);
    document.cookie = name + '=' + value + '; path=/; expires=' + todayDate.toGMTString() + ';';
}
///////////////////////////


function openLevel(id,num,count) {
  for(var i=1;i<=count;i++){
    if(i==num){
      if(document.getElementById(id+num+'_c').style.display=='none'){
        document.getElementById(id+num+'_c').style.display='block';
        CreateCookie('submenu', num, 1);
      }else{
        document.getElementById(id+num+'_c').style.display='none';
        DeleteCookie('submenu');
      }
    }else{
      document.getElementById(id+i+'_c').style.display='none';
    }
  }
}

function openLevelAuto(num){
  document.getElementById('submenu'+num+'_c').style.display='block';
}


function catPrint() {
  var w = window.open('');
  if (!w) {
    alert('Броузер блокирует всплывающие окна!');
    return;
  }
  var hdr = document.getElementById('catTitle');
//  debug(hdr);
  w.document.write('<html><head>'
+'<title>'+((hdr.innerText) ? hdr.innerText : hdr.textContent)+'</title>'
+'<link rel="stylesheet" type="text/css" href="/css/main_map_firm.css">'
+'<link rel="stylesheet" type="text/css" href="/css/firms.css">'
+'<link rel="stylesheet" type="text/css" href="/css/print.css">'
+'</head><body style="background-color:#fff; padding:20px;">');
  w.document.write("\n"+'<h1 class="print-h1">'+hdr.innerHTML+'</h1>');
  hdr = document.getElementById('catInner').innerHTML;
  hdr = hdr.replace(/<a href="mailto:([^"]+)">Отправить E-mail<\/a>/g,"Email: $1"); //"
  hdr = hdr.replace(/<a href="http:\/\/([^"]+)" target="_blank">Посмотреть веб-сайт<\/a>/g,"Сайт: $1"); //"
  hdr = hdr.replace(/(id="f-(add|del)")/gi,'$1 style="display:none"');

  w.document.write("\n"+'<div id="content">'+"\n"+hdr+"\n"+'</div>');
  w.document.write('<div id="footer"><b>Источник:</b>&nbsp;www.petromap.ru</div>');
  w.document.write('</body></html>');
  w.document.close();
  w.focus();
}

function addFavorite(obj,firm) {
  var fav = getCookie('fav');
  var re = new RegExp('('+firm+':)','g');
  if (re.test(fav)) {
    fav = fav.replace(re, '');
    obj.innerHTML = 'Добавить в &quot;Избранное&quot;';
    obj.parentNode.id='f-add';
  }
  else {
    fav = (fav) ? fav + firm + ':' : ':' + firm + ':';
    obj.innerHTML = 'Удалить из &quot;Избранного&quot;';
    obj.parentNode.id='f-del';
  }
  if (fav == ':') fav = '';
  setCookie('fav',fav, "Mon, 04-Jan-2021 00:00:00 GMT", '/');
  var arr = fav.match(/:/g) || [1];
  showFavoriteLink(arr.length - 1);
}

function showFavoriteLink(cnt) {
  var lnk = document.getElementById('favLink');
  if (!lnk) return;
  lnk.innerHTML = 'Избранное (' + cnt + ')';
  if (cnt)
    AJS.showElement(lnk);
  else
    AJS.hideElement(lnk);
}

//////////////////
//окошко со ссылкой на участок карты
function showMapLink(){
  var url = 'http://www.petromap.ru/map/?pos='+ enBASE64('' + Math.round(umap.cx) + ':' + Math.round(umap.cy) + ':' + Math.round(umap.zoom))
  if(document.getElementById('boxLayer')){
    removeMapLink('bLayerCont','boxLayer');
  }else{
    var mapCont = document.getElementById('bLayerCont');
    var boxLayer = '<div class="box-layer" id="boxLayer" style="top:145px; left:257px;"><a href="#close" title="закрыть" onClick="removeMapLink(\'bLayerCont\',\'boxLayer\');return false"></a><b>Ссылка на текущий фрагмент карты</b>Код для вставки:<br><textarea id="mapLinkTextarea" cols="30" readonly rows="3"><a href="'+url+'" target="_blank">Наш адрес на карте Петрозаводска</a></textarea></div>';
    mapCont.innerHTML+=boxLayer; 
  }
}

function removeMapLink(cid,bid){
  var d = document.getElementById(cid);
  var olddiv = document.getElementById(bid);
  d.removeChild(olddiv);
}
//////////////////


//////////////////
//окошко с формой -Сообщить об ошибке-
function showLayerForm(){
  var boxLayer = "\n"+'<div class="box-layer" id="formLayer" style="top:86px; right:15px;"><a href="#close" title="закрыть" onClick="removeMapLink(\'formLayerCont\',\'formLayer\');return false"></a>'
  +'<iframe src="http://petromap.ru/about/err_mess_intmap.html" width="100%" height="330" frameborder="no" scrolling="no">'
  +'</iframe></div>'
  +"\n";
  var formCont = document.getElementById('formLayerCont');
  formCont.innerHTML+=boxLayer;
}
//////////////////


function heightWrap(){
  
  var windowHeight = document.documentElement.clientHeight ? document.documentElement.clientHeight : window.innerHeight;
  //var yScroll = document.documentElement.scrollTop ? document.documentElement.scrollTop : self.pageYOffset;
  //var posTop = Math.round((windowHeight/2) + yScroll);
  
  var newHeight = windowHeight-227;
  //alert(windowHeight);
  
  document.getElementById('map').style.height = newHeight+'px';
  document.getElementById('YMapsID').style.height = newHeight+'px';
  
  for(var i=1;i<=2;i++){
    if(document.getElementById('bookmark_div_'+i).style.display == 'block'){
      document.getElementById('bookmark_div_'+i).style.height = newHeight-70+'px';
    }
  }
  
  //document.getElementById('bookmark_cell').style.height = newHeight+'px';

}

function openTopMenu(){
	var els = document.getElementById('topPanel').getElementsByTagName('li');
	for(var i=0; i<els.length; i++){
	  if(els[i].className == "ddlevel"){
  		els[i].onmouseover = function(){
  			this.className += " hover";
  		}
  		els[i].onmouseout = function(){
  		  var el = this;
  			setTimeout(function(){
          el.className = el.className.replace(" hover", "");
        },500);
  		}
  	}
	}
}

function checkSearch(form) {
	if (
		(form.COMPANY.value == 'Компания...' || form.COMPANY.value == '')
		&& (form.KEYWORDS.value == 'Ключевые слова...' || form.KEYWORDS.value == '') 
	) {
		form.action = '/map/';
	}
	return true;
}
