






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.accessCompanyInfo = function() {
  
    var registerLink = '/User/lang/ru/action/register/toprofile/1/';
  var loginLink = '/User/lang/ru/action/login/toprofile/1/';
  var message = '<p>Чтобы перейти в Ваш профайл и иметь возможность отредактировать данные Вашей компании, Вам нужно <a href="%LINK_REGISTER%">зарегистрироваться</a>, или, если Вы уже зарегистрированы, войти в систему:</p><p><form method="post" action="' + loginLink + '"><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">Запомнить меня</label></td></tr><tr><td colspan="2" align="center"><input type="submit" value=" GO "></td></tr><tr><td colspan="2" align="left"><a href="#" title="Напоминание пароля" onclick="EPJSON.remindPassword(); return false;">Забыли Ваш пароль? Нажмите здесь</a></td></tr></table></form></p>';
  
  message = message.replace('%LINK_REGISTER%', registerLink);

  this.writeMessageWindow(message);
  
}


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="' + loginLink + '"><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">Запомнить меня</label></td></tr><tr><td colspan="2" align="center"><input type="submit" value=" GO "></td></tr><tr><td colspan="2" align="left"><a href="#" title="Напоминание пароля" onclick="EPJSON.remindPassword(); return false;">Забыли Ваш пароль? Нажмите здесь</a></td></tr></table></form></p>';
  

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

  this.writeMessageWindow(message);
}



// Call functions


EPJSON.showAuth = function () {
  var authContent = '<div id="auth_panel"><ul><li><a href="/User/lang/ru/action/register/">Регистрация</a></li><li><a id="login_link" href="#" title="Логин">Вход</a><div id="login_form"><form action="/User/lang/ru/action/login/" method="post"><table width="130" cellspacing="0" cellpadding="2"><tr><td colspan="2" align="left"><label for="_login">Логин:</label></td></tr><tr><td colspan="2" align="left"><input name="login" id="_login" type="text" class="auth_line" /></td></tr><tr><td colspan="2" align="left"><label for="_pass">Пароль:</label></td></tr><tr><td align="left" valign="middle"><input name="pass" id="_pass" type="password" class="auth_line" /></td><td align="right" valign="middle"><input type="image" src="/images/btn_go.png" /></td></tr><tr><td colspan="2" align="left"><input type="checkbox" name="rememberMe" id="_remember" value="1"><label for="_remember">Запомнить меня</label></td></tr><tr><td colspan="2" align="left"><a href="#" title="Напоминание пароля" onclick="EPJSON.remindPassword(); return false;">Забыли Ваш пароль? Нажмите здесь</a></td></tr></table></form></div></li><li><a id="subscribe_link" href="#">Подписка на новости</a><div id="subscribe_form"><form action="/User/lang/ru/action/subscribe/" method="post"><table width="130"><tr><td colspan="2" align="left"><label for="_email">Подписка на новости:</label></td></tr><tr><td align="left" valign="middle"><input type="text" value="" name="email" id="_email" class="auth_line" /></td><td align="right" valign="middle"><input type="image" src="/images/btn_go.png" /></td></tr><tr><td colspan="2" align="left"><a href="#" onclick="EPJSON.writeInfoWindow(\'Для оформления подписки на рассылку новостей, введите свой e-mail и нажмите кнопку OK. Если вы хотите прекратить подписку введите свой e-mail и нажмите кнопку.\')">как отписаться</a></td></tr></table></form></div></li></ul></div>';

  $(authContent).appendTo("body");
}




EPJSON.remindPassword = function() {
  var remindLink = '/User/lang/ru/action/remind/';
  var e = '<p style="font-weight:bold; color:#333;">Напоминание пароля</p><p>Чтобы получить по электронной почте письмо с потерянным паролем, введите в поле внизу Ваш логин или адрес электронной почты и нажмите OK:</p>';

  EPJSON.hideMessageWindow();

  var remindContent = '<p>'+e+'</p><form method="post" action="' + remindLink + '"><table align="center"><tr><td><input type="text" size="15" name="login_email"></td><td><input type="submit" value=" OK "></td></tr></table></form>';

  EPJSON.writeMessageWindow(remindContent);
}


EPJSON.sendToFriend = function() {
  var friendContent = '<p><form id="friend_form" method="post" action="#" onsubmit="return EPJSON.sendToFriendSubmit();"><table align="center"><tr><td>Ваше имя: </td><td><input type="text" size="20" id="_fromname" name="fromname"></td></tr><tr><td>Ваш e-mail: </td><td><input type="text" size="20" id="_fromemail" name="fromemail"></td></tr><tr><td>E-mail друга: </td><td><input type="text" size="20" id="_toemail" name="toemail"></td></tr><tr><td>Сообщение: </td><td><textarea cols="32" rows="4" id="_txt" name="txt"></textarea></td></tr><tr><td colspan="2" align="center"><input type="submit" value=" GO "></td></tr></table></form></p>';
  

  EPJSON.writeMessageWindow(friendContent, 400);

  return false;
}



EPJSON.sendToFriendSubmit = function() {
  var oParams = {
    docloc    : document.location.href,
    fromname  : $("#friend_form #_fromname").val(),
    fromemail : $("#friend_form #_fromemail").val(),
    toemail   : $("#friend_form #_toemail").val(),
    txt       : $("#friend_form #_txt").val(),
    lang      : 'ru'
  }

  $.post('/sendToFriend.php', oParams, function (data) {
    if (data == 'OK') {
      EPJSON.writeMessageWindow('Сообщение вашему другу было успешно отправлено');
    } else {
      alert('Вы ввели неверные данные. Проверьте значение каждого поля перед отправкой.');
      $("#friend_form #_fromname")[0].focus();
    }
  });
  return false;
}


EPJSON.addExhibitionToCalendars = function(id, exName, dateFrom, dateTo, place) {
  var url = encodeURIComponent('/Event/lang/ru/id/%%%/'.replace('%%%', id));
  exName = encodeURIComponent(exName);
  place  = encodeURIComponent(place);
  exName = 'Напоминание о выставке';

  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="' + loginLink + '"><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">Запомнить меня</label></td></tr><tr><td colspan="2" align="center"><input type="submit" value=" GO "></td></tr><tr><td colspan="2" align="left"><a href="#" title="Напоминание пароля" onclick="EPJSON.remindPassword(); return false;">Забыли Ваш пароль? Нажмите здесь</a></td></tr></table></form></p>';
  

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

  if (this.login != '' && this.passHash != '') {
    e = '<p style="font-weight:bold; color:#333;"><a href="#" onclick="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) {
  EPJSON.hideMessageWindow();

  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) {
  EPJSON.hideMessageWindow();

  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) {
  EPJSON.hideMessageWindow();

  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) {
  EPJSON.hideMessageWindow();

  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="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 id="EPMessPopUpHeader"><a onclick="EPJSON.hideMessageWindow(); return false;"><img src="http://i.expoua.com/images/hdr_close.png" alt="Close" /></a></div><div id="EPMessPopUpContent"></div>').appendTo('#EPMessPopUp');

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

EPJSON._alignMessageWindow = function() {
  EPJSON.alignMessageWindow(0);
}


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();
}


//Баннера

EP_BO.putPriorityLine = function(BPlace) {
  this.bannerPlaceId++;
  var bannerPlaceName = "EP_BP"+this.bannerPlaceId;
  document.write("<tr id='" + bannerPlaceName + "'></tr>");
  this.jsonMakeBannerRequest(BPlace, bannerPlaceName);
}

EP_BO.putPriorityStart = function() {
  document.write('<table class="list priority" style="background:none; margin:0px;" cellpadding="0" cellspacing="0" border="0" width="100%">');
}

EP_BO.putPriorityEnd = function() {
  document.write('</table>');
}


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, elementID) {
  var dataOut = '';
  var i = 0;

  if (data.exhibition) {
    exhib = data.exhibition;
    url = this.getGoUrl('exhibition', exhib);

    var dstart = exhib.startDate.split('-');
    var dend   = exhib.endDate.split('-');
    dstart = 'ru' == 'ru' ? (dstart[2] + '.' + dstart[1]) : (dstart[1] + '/' + dstart[2]);
    dend   = 'ru' == 'ru' ? (dend[2] + '.' + dend[1] + '.' + dend[0]) : (dend[1] + '/' + dend[2] + '/' + dend[0]);

    ds = dstart[0] + dstart[1] + dstart[2];
    de = dend[0] + dend[1] + dend[2];

    dataOut = '<td width="140" style="white-space:nowrap;"><div class="date"><strong>' + dstart + " - " + dend +
      '</strong></td><td class="body"><h3><a href="' + url + '">' + exhib.name +
      '</a></h3></td><td width="120" style="white-space:nowrap;"><div class="location">' + exhib.countryName + ' | ' + exhib.cityName + '</div></td>' +
      '<td style="cursor:pointer; width:15px;" align="center" onclick="EPJSON.addExhibitionToCalendars(' + exhib.id + ', \'' + exhib.name + '\', \'' + ds + '\', \'' + de + '\', \'' + exhib.countryName + ', ' + exhib.cityName + '\'); return false;"><img src="/images/ico_fav.jpg" alt="Add to calendar" /></td>';

    if ($("#" + elementID).length) {
      $("#" + elementID).html(dataOut);
    }
  }
}

EPBANNER.getGoUrl = function(type, data) {
  var url = data.url + "_dummy?go=http://" + document.location.hostname;

  switch (type) {
    case "exhibition":
      url += EPBANNER.baseExhibitionUrl + 'id/' + data.id + '/';
      break;
  }

  return url;
}

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);
  }
}

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);
  }
}





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]);
  }
}


EPFILTER.updateFiltersBelow = function () {
  return;
  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();
}


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;
}


EPJSON.DropdownOccurs = function () {
  $(this).bgiframe();
}


$(document).ready(
  function () {
    $.preloadImages("http://tv.expotop.ru/images/arrow.gif", "http://tv.expotop.ru/images/arrow_over.gif", "http://i.expoua.com/images/bg_tab.gif", "http://i.expoua.com/images/ajax-loader.gif");

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

    EPJSON.initMessageWindow();

    EPADVSRCH.getIndependentCountriesList();

    EPJSON.showAuth();


    $(document).mousedown(
      function(event) {
        var $target = $(event.target);

        // alert("Clicked on class=" + $target.attr("class") + "  id=" + $target.attr("id"));

        if (($target.parents("#category, #subcategory, #region, #country, #city").length == 0)) {
          EPFILTER.fadePanelsOut();
        }

        if (($target.parents("#auth_panel").length == 0)) {
          EPAUTH.fadeTopPanelsOut();
        }

        if (($target.parents("#EPMessPopUp").length == 0)) {
          EPJSON.hideMessageWindow();
        }
      }
    );

    $("#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('');
      }
    );

    // $("#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", EPJSON.DropdownOccurs);
        $("#subcategory .dropdown, #region .dropdown, #country .dropdown, #city .dropdown").fadeOut("fast");
        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", EPJSON.DropdownOccurs);
        $("#category .dropdown, #region .dropdown, #country .dropdown, #city .dropdown").fadeOut("fast");
        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("fast", EPJSON.DropdownOccurs);
        $("#category .dropdown, #subcategory .dropdown, #country .dropdown, #city .dropdown").fadeOut("fast");
        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("fast", EPJSON.DropdownOccurs);
        $("#category .dropdown, #subcategory .dropdown, #region .dropdown, #city .dropdown").fadeOut("fast");
        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("fast", EPJSON.DropdownOccurs);
        $("#category .dropdown, #subcategory .dropdown, #region .dropdown, #country .dropdown").fadeOut("fast");
        return false;
      }
    );

    $("#category, #subcategory, #region, #country, #city").hover(EPFILTER.stopFading, EPFILTER.startFading).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();


    $("#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;
      }
    );


    $(document).keydown(
      function(event) {
        if (event.keyCode == 10 || (event.keyCode == 13 && event.ctrlKey)) {
          // errorForm = document.forms['formErr'];
          var oInit = {
            maxlen: 256,
            url:    "/sendError.php",
            wText:  {
              Big: "Выдели текст с ошибкой меньшего размера.",
              NoSupport: "Ваш браузер не поддерживает возможность перехвата выделенного текста",
              Error: "Орфографическая ошибка в тексте",
              Send: "Отослать сообщение об ошибке редакторам? \n Ваш браузер останется на той же странице.",
              Mark: "[ERROR]",
              Url: "URL: ",
              Err: "Error:   "
            }
          }

          var sel = null;
          sel = (parent.getSelection) ? parent.getSelection() : ((parent.document.getSelection) ? parent.document.getSelection() : ((document.selection.createRange) ? document.selection.createRange().text : null));
          if (sel == null) {
            alert(oInit.wText.NoSupport);
            return;
          }
          if (sel.length > oInit.maxlen) {
            alert(oInit.wText.Big);
            return;
          }
          if (sel == "") return;
          if (confirm(oInit.wText.Error + "\n" + oInit.wText.Mark + sel + oInit.wText.Mark + "\n\n" + oInit.wText.Send)){
            re = /\r/g;
            sel = sel.toString().replace(re, " ");
            re = /\n/gi;
            sel = sel.toString().replace(re, " ");
            var docloc = oInit.wText.Url + document.location.href;
            var txterr = oInit.wText.Err + sel;
            var useragent = navigator.userAgent;
            // EPJSON.sendErrorForm(oInit.url, docloc, txterr, useragent, varerr);
            $.post(oInit.url, { 'docloc':docloc, 'txterr':txterr, 'useragent':useragent });
          }
        }
      }
    );


    $("#friend-mail a").click(EPJSON.sendToFriend);
  }
);

