



var EPJSON = new Object();
var EPBANNER = new Object();
var EPADVSRCH = new Object();
var EPFILTER = new Object();
var EPAUTH = new Object();

EPJSON.login = '';
EPJSON.passHash = '';
EPJSON.language = 'ru';
EPJSON.codepage = 'UTF8';
EPJSON.windowSize = 340;
EPJSON.mvObj = null;

EPJSON.isOsel = false;

EPJSON.callServer = function (callMethod, callBackFunc, data) {
  var d = (typeof data == 'string') ? data : $(data).serializeArray();

  var entryURL = "http://ws.expopromoter.com/json/v1/?callMethod=" + callMethod +
                 "&callBackFunc=?" +
                 "&login=" + this.login +
                 "&passHash=" + this.passHash +
                 "&data=" + d +
                 "&lang=" + this.language +
                 "&cp=" + EPJSON.codepage +
                 "&rnd=" + Math.random()*1000000;

  $.getJSON(entryURL, callBackFunc);
}

// Callback functions

EPJSON.ScheduleCallback = function(result) {
  switch (result.callMethod) {
    case "delExhibitionFromSchedule":
    case "delCompanyFromSchedule":
    case "delCompanyServiceFromSchedule":
    case "delExpocenterFromSchedule":
      EPJSON.hideMessageWindow();
      window.location.reload(true);
      break;
    default:
      EPJSON.hideMessageWindow();
  }
}



EPJSON.showLoginBox = function() {
  
  var registerLink = '/User/lang/ru/action/register/';
  var loginLink = '/User/lang/ru/action/login/';
  var message = '<p>В Вашем профайле Вы можете создавать списки Избранной информации портала (выставки, выставочные центры, компании, товары и услуги, и т.д.). Для этого Вам нужно <a href="%LINK_REGISTER%">Зарегистрироваться</a>. Если Вы уже зарегистрированы, войдите в систему, после чего выполните повторное добавление данного объекта:</p><p><form method="post" action="%LINK_LOGIN%"><table align="center"><tr><td>Логин: </td><td><input type="text" size="15" name="login"></td></tr><tr><td>Пароль: </td><td><input type="password" size="15" name="pass"></td></tr><tr><td colspan="2" align="left"><input type="checkbox" name="rememberMe" id="_remember" value="1">&nbsp;<label for="_remember">Запомнить меня</td></tr><tr><td colspan="2" align="center"><input type="submit" value=" OK "></td></tr></table></form></p>';
  

  message = message.replace('%LINK_REGISTER%', registerLink);
  message = message.replace('%LINK_LOGIN%', loginLink);

  this.writeMessageWindow(message);
}



// Call functions

EPJSON.addExhibitionToCalendars = function(id, exName, dateFrom, dateTo, place) {
  var url = encodeURIComponent('/Event/lang/ru/id/%%%/'.replace('%%%', id));
  exName  = encodeURIComponent(exName);
  place   = encodeURIComponent(place);

  var a = '<p style="font-weight:bold; color:#333;">либо:</p><p><a href="http://ws.expopromoter.com/calendar/Exchange/?lang=ru&id='+id+'&site=expoUA.com&uri='+url+'"}" style="text-decoration:none"><img src="/images/ico_outlook.png" border="0" align="middle" /> Сохранить в Outlook</a><br /><a href="http://ws.expopromoter.com/calendar/iCal/?lang=ru&id='+id+'&site=expoUA.com&uri='+url+'" style="text-decoration:none"><img src="/images/ico_ical.png" border="0" align="middle" /> Сохранить в iCal</a><br /><a href="http://www.google.com/calendar/event?action=TEMPLATE&text='+exName+'&dates='+dateFrom+'/'+dateTo+'&sprop=website:expoUA.com&location='+place+'&trp=true" target="_blank" style="text-decoration:none"><img src="/images/ico_google.png" border="0" align="middle" /> Добавить в Google Calendar</a></p>';


  
  var registerLink = '/User/lang/ru/action/register/';
  var loginLink = '/User/lang/ru/action/login/';
  var e = '<p style="font-weight:bold; color:#333;">Сохранить в Мой календарь</p> <p>Вы будете получать напоминания о начале выставок в Вашем календаре. Чтобы сохранить выставку в Ваш календарь, Вам нужно <a href="%LINK_REGISTER%">Зарегистрироваться</a> или войти в систему:</p><p><form method="post" action="%LINK_LOGIN%"><table align="center"><tr><td>Логин: </td><td><input type="text" size="15" name="login"></td></tr><tr><td>Пароль: </td><td><input type="password" size="15" name="pass"></td></tr><tr><td colspan="2" align="left"><input type="checkbox" name="rememberMe" id="_remember" value="1">&nbsp;<label for="_remember">Запомнить меня</td></tr><tr><td colspan="2" align="center"><input type="submit" value=" OK "></td></tr></table></form></p>';
  

  e = e.replace('%LINK_REGISTER%', registerLink);
  e = e.replace('%LINK_LOGIN%', loginLink);

  if (this.login != '' && this.passHash != '') {
    e = '<p style="font-weight:bold; color:#333;"><a href="#" onclick="EPJSON.hideMessageWindow(); EPJSON.addExhibitionToSchedule('+id+'); return false;">Сохранить в Мой календарь</a></p><p>Вы будете получать напоминания о начале выставок в Вашем календаре.</p>';
  }

  var calendarContent = '<table width="100%" cellspacing="0" style="font-size:90%; line-height:1.9;"><tr valign="top"><td width="50%" style="padding:10px; border-right:4px solid #aaa;">'+e+'</td><td width="50%" style="padding:10px;">'+a+'</td></tr></table>';

  EPJSON.writeMessageWindow(calendarContent, 500);
}

EPJSON.addExhibitionToSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addExhibitionToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}

EPJSON.addCompanyToSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addCompanyToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}

EPJSON.addCompanyServiceToSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addCompanyServiceToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}

EPJSON.addExCenterSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addExpocenterToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}



EPJSON.addExhibitionToSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addExhibitionToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}

EPJSON.addCompanyToSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addCompanyToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}

EPJSON.addCompanyServiceToSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addCompanyServiceToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}

EPJSON.addExCenterSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('addExpocenterToSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();

    this.writeMessageWindow('<center>Запись добавлена в <strong>Избранное</strong> в <a href="/User/lang/ru/">Вашем профайле</a>.</center>');
  } else {
    this.showLoginBox();
  }
}


EPJSON.delExhibitionFromSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('delExhibitionFromSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();
  }
}

EPJSON.delCompanyFromSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('delCompanyFromSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();
  }
}

EPJSON.delCompanyServiceFromSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('delCompanyServiceFromSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();
  }
}

EPJSON.delExCenterFromSchedule = function(id) {
  if (this.login != '' && this.passHash != '') {
    var data = '{"id": ' + id + '}';
    this.callServer('delExpocenterFromSchedule', EPJSON.ScheduleCallback, data);
    this.writeUpdatingPopUp();
  }
}




EPJSON.getCountriesList = function(id) {
  var data = '{"id": ' + id + '}';
  this.callServer('getCountriesList', EPJSON.ExhibitionCountriesCallback, data);
  this.writeUpdatingPopUp();
}

EPJSON.getCitiesList = function(id) {
  var data = '{"id": ' + id + '}';
  this.callServer('getCitiesList', EPJSON.ExhibitionCitiesCallback, data);
  this.writeUpdatingPopUp();
}

//Callback functions
EPJSON.ExhibitionScheduleCallback = function(result) {
  if (result.data && result.data.errorCode) {
    //For debuging purposes
    this.writeMessageWindow(result.data.errorMessage);
  } else {
    if (result.callMethod == "delExhibitionFromSchedule") {
      this.hidePageElementById('exhibEl_' + result.reqParams.id);
    }
  }
}

EPJSON.ExhibitionCountriesCallback = function(result) {
  //No action must be redefined
}

EPJSON.ExhibitionCitiesCallback = function(result) {
  //No action must be redefined
}



//Extra functions

EPJSON.writeMessageWindow = function(mess, w) {
  $('#EPMessPopUpContent').html(mess);
  this.alignMessageWindow(w);
  this.showMessageWindow(w);
}

EPJSON.writeInfoWindow = function(mess) {
  $('#EPMessPopUpContent').html(mess);
  this.alignMessageWindow();
  this.showMessageWindow();
}


EPJSON.writeUpdatingPopUp = function() {
  this.writeInfoWindow('<center><i>Обновление...</i></center>');
}


EPJSON.popupLinkHandler = function () {
  EPJSON.hideMessageWindow();
  return true;
}


EPJSON.showMessageWindow = function(width) {
  var w = width ? width : EPJSON.windowSize;
  $("#EPMessPopUp").css('width', w + 'px').fadeIn("fast");
  $("#EPMessPopUpContent a").not("a[onclick]").click(EPJSON.popupLinkHandler);
}


EPJSON.hideMessageWindow = function() {
  $('#EPMessPopUp').hide();
}


EPJSON.initMessageWindow = function() {
  var win_ie_ver = parseFloat(navigator.appVersion.split("MSIE")[1]);

  var dynamic_html = '<div id="EPMessPopUp" style="padding:0; position:absolute; border:4px solid #999; background-color:#efefef; font-size:12px; display:none; width:'+EPJSON.windowSize+'px;"></div>';

  if (win_ie_ver >= 5.5) {
    this.isOsel = true;
    $(dynamic_html).appendTo("body");

    $(window).scroll(EPJSON.alignMessageWindow);
  } else {
    this.isOsel = false;
    $(dynamic_html).appendTo("body");
    $("#EPMessPopUp").css('position', 'fixed');
  }

  $('<div style="text-align:right; background:#999; padding:4px;"><a style="text-decoration:none; font-size:10px; font-weight:bold; color:#efefef;" onclick="EPJSON.hideMessageWindow(); return false;" style="cursor:hand;">X</a></div><div id="EPMessPopUpContent" style="padding:8px 10px 10px 10px;"></div>').appendTo('#EPMessPopUp');

  this.mvObj = $('#EPMessPopUp');
}

EPJSON.alignMessageWindow = function(w) {
  var t = EPJSON.mvObj;

  var ppWidth = w ? w : EPJSON.windowSize;

  if (t) {
    var wHeight = 780;
    var wWidth = $(window).width();

    // alert(wHeight + ':' + wWidth);

    if (EPJSON.isOsel) {
      w_top   = wHeight / 4 + $(window).scrollTop();
      w_right = wWidth / 2 - ppWidth / 2;
    } else {
      w_top   = wHeight / 4;
      w_right = wWidth / 2 - ppWidth / 2;
    }

    t.css('top', w_top + "px");
    t.css('right', w_right + "px");
  }
}

EPJSON.setSizeMessageWindow = function(width) {
  EPJSON.mvObj.width(width);
}

EPJSON.hidePageElementById = function(id) {
  $("#" + id).hide();
}





EPJSON.oE = function(id) {
  window.open(EPBANNER.baseEventUrl + 'source/calendar/id/' +id + '/', 'exw'+id, 'width=950, height=740, status=no,resizable=yes, scrollbars=yes');
}



EPJSON.iHoHoComp = function(id, compid, mode) {
  window.open(EPBANNER.baseEventUrl + 'source/calendar/id/' +id + '/mode/' +mode+ '/adid/' +compid+ '/', 'exw'+id, 'width=950, height=740, status=no,resizable=yes, scrollbars=yes');
}

//Баннера

EPBANNER.data = null;
EPBANNER.lastClickURL = null;
EPBANNER.banners = new Array();

EPBANNER.baseExhibitionUrl = '/Event/lang/ru/';
EPBANNER.baseEventUrl = '/Event/lang/ru/';

EPBANNER.baseSocialOrganisationsUrl = '/SocialOrganisations/lang/ru/';
EPBANNER.baseExpoCentersUrl = '/ExpoCenters/lang/ru/';
EPBANNER.baseServiceCompaniesUrl = '/ServiceCompanies/lang/ru/';

EPBANNER.show = function(data, bannerId) {
  var wrapperTable = '<table class="list" style="background:none; margin:0px;" cellspacing="0" border="0" width="100%"></table>';
  var i = 0;

  if (data.exhibition) {
    exhib = data.exhibition;

    var dataOut = '<tr><td width="140" style="white-space:nowrap;"><div class="date"><strong>' + exhib.startDate + " - " + exhib.endDate +
      '</strong></td><td class="body"><h3><a style="cursor:pointer;" onClick="EPBANNER.clicker(\'exhibition\', ' + exhib.id + ', ' + bannerId + '); return false;">' + exhib.name +
      '</a></h3></td><td width="120"><div class="location" style="white-space:nowrap;">' + exhib.countryName + ' | ' + exhib.cityName + '</div></td>' +
      '<td style="cursor:pointer; width:15px;" align="center" onClick="EPJSON.addExhibitionToSchedule(' + exhib.id +
      '); return false;"><img src="/images/ico_fav.jpg" alt="Add to favorites" /></td></tr>';

    if ($("#TopExhibitions").length) {
      if ($("#TopExhibitions table").length == 0) {
        $(wrapperTable).appendTo("#TopExhibitions");
      }
      $(dataOut).appendTo("#TopExhibitions table");
    } else {
      if (!EPBANNER.banners[bannerId]) {
        EPBANNER.banners[bannerId] = data;
      }
      setTimeout('EPBANNER.show(EPBANNER.banners[' + bannerId + '], ' + bannerId + ')', 500);
    }
  }
}

EPBANNER.clicker = function(type, id, bid) {

  var data = new Object();
  data.bannerId = bid;
  data.referer = window.location.href;
  data.siteIP = '212.1.66.253';
  data.hash = 'e1870db520b075effadb438c51957eb2';

  switch (type) {
    case "exhibition":
      EPBANNER.lastClickURL = EPBANNER.baseExhibitionUrl + 'id/' + id + '/';
      break;
    case "socorg":
      EPBANNER.lastClickURL = EPBANNER.baseSocialOrganisationsUrl + 'socorg/' + id + '/';
      break;
    case "excenter":
      EPBANNER.lastClickURL = EPBANNER.baseExpoCentersUrl + 'excenter/' + id + '/';
      break;
    case "servcomp":
      EPBANNER.lastClickURL = EPBANNER.baseServiceCompaniesUrl + 'servcomp/' + id + '/';
      break;
    default:
      return;
  }

  EPJSON.callServer('bannerClick', EPBANNER.redirectToTarget, data);
  EPJSON.writeUpdatingPopUp();
}

EPBANNER.redirectToTarget = function(data) {
  EPJSON.hideMessageWindow();

  window.location.href = EPBANNER.lastClickURL;
}

//Расширеный поиск

EPADVSRCH.getSubCategoriesList = function(catObj) {

  var data = this.getObjectSelectedItems(catObj);

  EPJSON.callServer('getSubCategoriesList', EPADVSRCH.getSubCategoriesListCallBack, data);
  EPJSON.writeUpdatingPopUp();
}

EPADVSRCH.getSubCategoriesListCallBack = function(result) {
  var subCatsObj = document.getElementById('subCategories');
  var catsObj = document.getElementById('categories');

  this.fillSelectWhithData(catsObj, subCatsObj, result);

  EPJSON.hideMessageWindow();
}




EPADVSRCH.getIndependentCountriesList = function() {
  var data = '{"lang": "ru"}';

  if ($(".country_list").length) {
    EPJSON.callServer('getCountriesList', EPADVSRCH.getIndependentCountriesListCallBack, data);
    EPJSON.writeUpdatingPopUp();
  }
}

EPADVSRCH.getIndependentCountriesListCallBack = function(result) {
  // alert(result.data.length);
  var data = new Array();
  var countriesList = $(".country_list");

  countriesList.html('<option value="0">- выберите страну -</option>');

  for (i=0; i < result.data[0].data.length; i++) {
    data = result.data[0].data[i];
    $('<option value="'+data.id+'">'+data.name+'</option>').appendTo(countriesList);
  }

  EPJSON.hideMessageWindow();
}





EPADVSRCH.getCountriesList = function(Obj) {

  var data = this.getObjectSelectedItems(Obj);

  EPJSON.callServer('getCountriesList', EPADVSRCH.getCountriesListCallBack, data);
  EPJSON.writeUpdatingPopUp();
}

EPADVSRCH.getCountriesListCallBack = function(result) {
  var regionsObj = document.getElementById('regions');
  var countriesObj = document.getElementById('countries');
  var citiesObj = document.getElementById('cities');
  var exCentersObj = document.getElementById('exCenters');

  this.DeleteAllChild(citiesObj);
  this.DeleteAllChild(exCentersObj);

  this.fillSelectWhithData(regionsObj, countriesObj, result);

  EPJSON.hideMessageWindow();
}

EPADVSRCH.getCitiesList = function(Obj) {

  var data = this.getObjectSelectedItems(Obj);

  EPJSON.callServer('getCitiesList', EPADVSRCH.getCitiesListCallBack, data);
  EPJSON.writeUpdatingPopUp();
}

EPADVSRCH.getCitiesListCallBack = function(result) {
  var countriesObj = document.getElementById('countries');
  var citiesObj = document.getElementById('cities');
  var exCentersObj = document.getElementById('exCenters');

  this.DeleteAllChild(exCentersObj);

  this.fillSelectWhithData(countriesObj, citiesObj, result);

  EPJSON.hideMessageWindow();
}

EPADVSRCH.getExCentersList = function(Obj) {

  var data = this.getObjectSelectedItems(Obj);

  EPJSON.callServer('getExCentersList', EPADVSRCH.getExCentersListCallBack, data);
  EPJSON.writeUpdatingPopUp();
}

EPADVSRCH.getExCentersListCallBack = function(result) {
  var exCentersObj = document.getElementById('exCenters');
  var citiesObj = document.getElementById('cities');

  this.fillSelectWhithData(citiesObj, exCentersObj, result);

  EPJSON.hideMessageWindow();
}

EPADVSRCH.fillSelectWhithData = function(parentObj, Obj, result) {
  var Data = new Array();
  var Index = 0;

  this.DeleteAllChild(Obj);

  for (i=0; i < result.data.length; i++) {
    Data = result.data[i].data;

    var newOptGroup = document.createElement('OPTGROUP');
    newOptGroup.label = this.getObjectTextByValue(parentObj, result.data[i].parentId);
    Obj.appendChild(newOptGroup);

    for (j=0; j < Data.length; j++) {
      Obj.options[Index] = new Option(Data[j].name, Data[j].id);
      Index++;
    }
  }
}

EPADVSRCH.getObjectSelectedItems = function(obj) {
  var result = new Array();
  for (i=0; i < obj.length; i++) {
    if (obj.options[i].selected == true) {
      result.push(obj.options[i].value);
    }
  }

  return result;
}

EPADVSRCH.getObjectTextByValue = function (obj, value) {
  var i = 0;
  var res = '';

  do {
    if (obj.options[i].value == value) {
      res = obj.options[i].text;
    }
    i++;
  } while (i < obj.length && res == '')

  return res;
}

EPADVSRCH.DeleteAllChild = function(sel) {
  sel.options.length = 0;

  while (sel.childNodes.length) {
    if (sel.firstChild.tagName == 'OPTGROUP') {
      while (sel.firstChild.childNodes.length) {
        sel.firstChild.removeChild(sel.firstChild.firstChild);
      }
    }
    sel.removeChild(sel.firstChild);
  }
}




// Flash
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?');
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs)
{
  var str = '<' + 'object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<' + 'embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret =
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
    , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();

    switch (currArg){
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace":
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}





var default_country = 0;

EPJSON.targetElement = false;

EPJSON.ExhibitionCountriesCallback = function(result) {
  var resLen = result.data.length;
  var obj = EPJSON.targetElement;

  if (!obj) return;

  if (resLen > 1) {
    obj.disabled = false;
    obj.options.length = 0;
    obj.options[0]=new Option('');
    obj.options[0].value = '';

    for (i=0; i < resLen; i++) {
      obj.options[i+1]=new Option(result.data[i].name);
      obj.options[i+1].value = result.data[i].id;
    }
  } else {
    obj.disabled = true;
    obj.options.length = 0;
    obj.options[0]=new Option('');
  }

  EPJSON.hideMessageWindow();
}

EPJSON.ExhibitionCitiesCallback = function(result) {
  var resLen = result.data.length;
  var obj = EPJSON.targetElement;

  if (!obj) return;

  if (resLen>0) {
    obj.disabled = false;
    obj.options.length = 0;
    obj.options[0]=new Option('');
    obj.options[0].value = '';

    for (i=0; i < resLen; i++) {
      obj.options[i+1]=new Option(result.data[i].name);
      obj.options[i+1].value = result.data[i].id;
    }
  } else {
    obj.disabled = true;
    obj.options.length = 0;
    obj.options[0]=new Option('');
  }

  EPJSON.hideMessageWindow();
}



jQuery.preloadImages = function() {
  for(var i = 0; i < arguments.length; i++) {
    jQuery("<img/>").attr("src", arguments[i]);
  }
}



$(document).ready(
  function () {
    $.preloadImages("http://tv.expotop.ru/images/arrow.gif", "http://tv.expotop.ru/images/arrow_over.gif", "/images/bg_tab.gif");

    EPJSON.initMessageWindow();

    EPADVSRCH.getIndependentCountriesList();

    $("#search_form").submit(
      function () {
        if ($("#search_field").val() == 'поиск по слову...') $("#search_field").val('');

        return true;
      }
    );

    $("#date-form").submit(
      function () {
        if ($("#start-date").val() == '- дата начала -') $("#start-date").val('');
        if ($("#end-date").val() == '- дата завершения -') $("#end-date").val('');

        var url  = $("#url").val();
        var url2 = $("#url2").val();
        var urlfrom = $("#start-date").val();
        var urlto   = $("#end-date").val();

        if (urlfrom && urlto) {
          location.href = url + 'datefrom/' + urlfrom + '/dateto/' + urlto + '/';
        } else if (urlfrom && urlto == '') {
          location.href = url + 'datefrom/' + urlfrom + '/';
        } else if (urlfrom == '' && urlto != '') {
          location.href = url + 'dateto/' + urlto + '/';
        } else {
          location.href = url2;
        }

        return false;
      }
    );


    $(".email-txt").blur(
      function () {
        if ($(this).val() == '') $(this).val('E-mail');
      }
    );

    $(".email-txt").focus(
      function () {
        if ($(this).val() == 'E-mail')
        $(this).val('');
      }
    );


    $("#search_field").blur(
      function () {
        if ($(this).val() == '') $(this).val('поиск по слову...');
      }
    );

    $("#search_field").focus(
      function () {
        if ($(this).val() == 'поиск по слову...')
        $(this).val('');
      }
    );

    $(".date-pick").blur(
      function () {
        if ($(this).val() == '') $(this).val(this.id == 'start-date' ? '- дата начала -' : '- дата завершения -');
      }
    );

    $(".date-pick").focus(
      function () {
        if ($(this).val().indexOf('date') != -1) $(this).val('');
      }
    );


    $("#dynafilter .dropdown ul").bgIframe();

    // $("#category, #subcategory, #region, #country, #city").css("position", "relative");

    $("#category a:first").click(
      function () {
        if (1) { // EPJSON.isOsel) {
          var p = $("#category").position();
          var h = $("#category").height();
          $("#category .dropdown").css({ left: p.left + 'px', top:(p.top + h) + 'px' });
        }
        $("#category .dropdown").slideToggle("fast");
        // EPFILTER.updateFiltersBelow();
        // $("#region, #country, #city").toggle();
        return false;
      }
    );

    $("#subcategory a:first").click(
      function () {
        if (1) { // EPJSON.isOsel) {
          var p = $("#subcategory").position();
          var h = $("#subcategory").height();
          $("#subcategory .dropdown").css({ left: p.left + 'px', top:(p.top + h) + 'px' });
        }
        $("#subcategory .dropdown").slideToggle("fast");
        // EPFILTER.updateFiltersBelow();
        // $("#region, #country, #city").toggle();
        return false;
      }
    );

    $("#region a:first").click(
      function () {
        if (1) { // EPJSON.isOsel) {
          var p = $("#region").position();
          var h = $("#region").height();
          $("#region .dropdown").css({ left: p.left + 'px', top:(p.top + h) + 'px' });
        }
        $("#region .dropdown").slideToggle();
        return false;
      }
    );

    $("#country a:first").click(
      function () {
        if (1) { // EPJSON.isOsel) {
          var p = $("#country").position();
          var h = $("#country").height();
          $("#country .dropdown").css({ left: p.left + 'px', top:(p.top + h) + 'px' });
        }
        $("#country .dropdown").slideToggle();
        return false;
      }
    );

    $("#city a:first").click(
      function () {
        if (1) { // EPJSON.isOsel) {
          var p = $("#city").position();
          var h = $("#city").height();
          $("#city .dropdown").css({ left: p.left + 'px', top:(p.top + h) + 'px' });
        }
        $("#city .dropdown").slideToggle();
        return false;
      }
    );


    EPFILTER.timeout = null;

    EPFILTER.updateFiltersBelow = function () {
      if ($("#category, #subcategory").length) {
        if ($("#category .dropdown, #subcategory .dropdown").is(":hidden")) {
          $("#region, #country, #city").fadeIn("fast");
        } else {
          $("#region, #country, #city").fadeOut("fast");
        }
      }
    }

    EPFILTER.fadePanelsOut = function(t) {
      var obj = t ? t : '#filter .dropdown';
      $(obj).fadeOut("fast");
      $("#region, #country, #city").fadeIn("fast");
    }

    EPFILTER.startFading = function() {
      EPFILTER.timeout = setTimeout(EPFILTER.fadePanelsOut, 300);
      EPFILTER.updateFiltersBelow();
    }

    EPFILTER.stopFading = function() {
      clearTimeout(EPFILTER.timeout);
      EPFILTER.updateFiltersBelow();
    }

    $("#category, #subcategory, #region, #country, #city").hover(EPFILTER.stopFading, EPFILTER.startFading).blur(EPFILTER.startFading);

    // $("#category, #subcategory, #region, #country, #city").blur(EPFILTER.startFading);


    if ($.datepicker) {
      // Customize two date pickers to work as a date range
      function customRange(input) {
        return {minDate: (input.id == 'end-date' ? $('#start-date').datepicker('getDate') : null),
          maxDate: (input.id == 'start-date' ? $('#end-date').datepicker('getDate') : null)};
      }

      $.datepicker.setDefaults({showOn: 'both', buttonImageOnly: true, buttonImage: 'http://i.expoua.com/images/calendar-icon.gif', buttonText: 'Calendar', beforeShow: customRange, prevText: '<<', nextText: '>>', dateFormat: 'dd-mm-yy'});

      $(".date-pick").datepicker();
    }

    $(".email-txt").blur();
    $("#search_field").blur();
    $(".date-pick").blur();


    EPAUTH.timeout = null;
    EPAUTH.focused = false;

    EPAUTH.fadeTopPanelsOut = function(t) {
      var obj = t ? t : 'div';
      $("#auth_panel " + obj).fadeOut();
    }

    EPAUTH.startFading = function() {
      EPAUTH.timeout = setTimeout(EPAUTH.fadeTopPanelsOut, 500);
    }

    EPAUTH.stopFading = function() {
      if (EPAUTH.timeout) clearTimeout(EPAUTH.timeout);
    }

    EPAUTH.setFocused = function() {
      EPAUTH.focused = true;
      EPAUTH.stopFading();
    }

    EPAUTH.unsetFocused = function() {
      EPAUTH.focused = false;
    }

    $("#auth_panel, #auth_panel div").hover(
      EPAUTH.stopFading,
      function () {
        if (!EPAUTH.focused) EPAUTH.startFading();
      }
    );

    $("#auth_panel input").focus(EPAUTH.setFocused);

    $("#auth_panel input").blur(
      function () {
        EPAUTH.unsetFocused;
        EPAUTH.startFading();
      }
    );

    $("#auth_panel #login_link").click(
      function() {
        EPAUTH.fadeTopPanelsOut('#subscribe_form');
        $("#auth_panel #login_form").fadeIn();
        document.getElementById('_login').focus();

        return false;
      }
    );

    $("#auth_panel #subscribe_link").click(
      function() {
        EPAUTH.fadeTopPanelsOut('#login_form');
        $("#auth_panel #subscribe_form").fadeIn();
        document.getElementById('_email').focus();

        return false;
      }
    );
  }
);

