var HHBanner = {};
var HH = HH || {};
HH.TargetParams = HH.TargetParams || {};
HH.banners = [];
HH.getBanners = function(){
  for (var i = 0, l = HH.banners.length; i < l; i++){
    HH.banners[i]();
  }
};
HH.bannerObserve = function(element, eventName, handler){
  if (element.addEventListener) {
    element.addEventListener(name, handler, false);
  } else {
    element.attachEvent('on' + name, handler);
  }
};

HH.insertBanner = function(url, placeId){
  /*if (!HH.checkBanner(placeId)){
    return;
  }*/
  document.write('<div id="banner_' + placeId + '" class="banex-banner banex-banner-' + placeId + '"></div>');
  function getBanner(){
    HH.getBanner(url, placeId);
  }
  HH.banners[HH.banners.length] = getBanner;
};
/*HH.checkBanner = function(placeId){

  // Баннер справа от выдачи, не показывать если разрешение
  // экрана меньше 1280 пикселей.
  // Проверяем на 1250 из-за наличия скрола.
  if (placeId == 156 && document.body.offsetWidth < 1250){
    return false;
  }

  return true;
};*/
HH.getBanner = function(url, id){
  HHBanner['sendBanner_' + id] = function(banner){
    HH.sendBanner(banner, id);
  };
  HH.insertScript(url + HH.getDelimiter(url) + 'trace=' + id);
};
HH.sendBanner = function(banner, id) {
    var bannerBlock = document.getElementById('banner_' + id);
    if (!(banner instanceof Array)){
        banner = [banner];
    }
    for (var i = 0, l = banner.length; i < l; i++) {
        HH._sendBanner(banner[i], bannerBlock);
    }
};
HH._sendBanner = function(banner, bannerBlock){
    if (banner.iframe){
        HH.placeIframeBanner(banner.iframe, bannerBlock);
    } else if (banner.html && banner.html.indexOf('startFlashBody') != -1) {
        HH.placeFlashBanner(banner, bannerBlock);
    } else if (banner.jssrc) {
        HH.placeJSBanner(banner.jssrc[0], banner.html || null, bannerBlock);
    } else {
        HH.placeHTMLBanner(banner.html, bannerBlock);
    }
};
HH.getDelimiter = function(url){
  var delimiter = '?';
  if ((url.indexOf('?') != -1)) {
    delimiter = (url.lastIndexOf('?') == url.length - 1) ? '' : '&';
  }
  return delimiter;
};
HH.insertScript = function(src){
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('charset', 'utf-8');
  script.setAttribute('src', src);
  var head = document.getElementsByTagName('head').item(0);
  head.insertBefore(script, head.firstChild);
};
HH.placeHTMLBanner = function(html, bannerBlock){
    if (bannerBlock.parentNode.className.match(/banner-wrapper/) && html != '') {
        bannerBlock.parentNode.setAttribute('style', 'display:block !important');
    }
    bannerBlock.innerHTML = html;
    //временный костыль для таргетинга баннеров mail.ru
    var bannerMailru = document.getElementById('target-banner-mailru');
    if (bannerMailru != null) {
        HH.targetBannerUrlReplace(bannerMailru);
    }
};
HH.targetBannerUrlReplace = function(banner) {
  var params = Array('language', 'age', 'gender', 'wage', 'education', 'profarea', 'userId', 'random');
  for (var i = 0; i < params.length; i++) {
     if (HH.TargetParams[params[i]] == undefined) {
       HH.TargetParams[params[i]] = '';
     }
    banner.src = banner.src.replace('data-'+params[i], HH.TargetParams[params[i]]);
  }
};
HH.placeIframeBanner = function(params, bannerBlock){
    var iframe = document.createElement('iframe');
    iframe.src = params.src;
    iframe.style.border = '0';
    iframe.style.width = (params.width || 0) + 'px';
    iframe.style.height = (params.height || 0) + 'px';
    iframe.frameBorder = 'no';
    iframe.scrolling = 'no';
    bannerBlock.appendChild(iframe);
};
HH.placeJSBanner = function(src, html, bannerBlock){
  if (html){
    HH.placeHTMLBanner(html, bannerBlock);
  }
  HH.insertScript(src);
};

HH.placeFlashBanner = function(banner, bannerBlock){
    var template = '' +
        '<img class="banex-clickimg" width="%width%" height="%height%" src="http://i.hh.ru/images/dot.gif" style="display:block;position:absolute;"/>' +
        '<embed ' +
        'height="%height%" ' +
        'align="middle" ' +
        'width="%width%" ' +
        'type="application/x-shockwave-flash" ' +
        'pluginspage="http://www.adobe.com/go/getflashplayer" ' +
        'allowscriptaccess="always" ' +
        'name="%name%" ' +
        'bgcolor="%bgcolor%" ' +
        'quality="high" ' +
        'wmode="transparent" ' +
        'src="%src%" '+
        'flashvars="swfUrl=%swfUrl%&targetUrl=%targetUrl%" ' +
        'scale="noScale"'+
    '/>';

    var params = eval('(' + banner.html.match(/<\!--startFlashBody(.*)endFlashBody-->/)[1] + ')');

    // Костыль для старых баннеров, у которых параметры приходят массивом ['name', 'value', ...]
    // 22.10.2009
    if (typeof params.src == 'undefined'){
        var _params = {};
        for (var i = 0, l = params.length; i < l; i++){
            _params[params[i]] = params[++i];
        }
        params = _params;
    }

    var banner_html = template
        .replace(/%height%/g, params.height)
        .replace(/%width%/g, params.width)
        .replace('%name%', params.name)
        .replace('%bgcolor%', params.bgcolor)
        .replace('%src%', params.src)
        .replace('%swfUrl%', params.swfUrl)
        .replace('%targetUrl%', params.targetUrl);
    banner.html = banner.html.replace(/<\!--startFlashBody.*endFlashBody-->/, banner_html);

    bannerBlock.innerHTML = banner.html;
};

