var state = false;
var sid = 0;
var curSchedule = 'dtoday';
var places = [];
document.observe("dom:loaded", function(e){ updateClock()});
var timestamp = 0;
function updateClock ( )
{
  if (!state) timestamp = parseInt($('jstimestamp').innerHTML);
  var currentTime = new Date (timestamp);

  var currentDay = currentTime.getDate ( );
  var currentMonth = currentTime.getMonth ( );
  var currentYear = currentTime.getFullYear ( );
  var currentHours = currentTime.getHours ( );
  var currentMinutes = currentTime.getMinutes ( );
  var currentSeconds = currentTime.getSeconds ( );

  if (currentMonth == 0) currentMonth = 'января';
  else if (currentMonth == 1) currentMonth = 'февраля';
  else if (currentMonth == 2) currentMonth = 'марта';
  else if (currentMonth == 3) currentMonth = 'апреля';
  else if (currentMonth == 4) currentMonth = 'мая';
  else if (currentMonth == 5) currentMonth = 'июня';
  else if (currentMonth == 6) currentMonth = 'июля';
  else if (currentMonth == 7) currentMonth = 'августа';
  else if (currentMonth == 8) currentMonth = 'сентября';
  else if (currentMonth == 9) currentMonth = 'октября';
  else if (currentMonth == 10) currentMonth = 'ноября';
  else if (currentMonth == 11) currentMonth = 'декабря';
  // Pad the minutes and seconds with leading zeros, if required
  currentDay = ( currentDay < 10 ? "0" : "" ) + currentDay;
  currentHours = ( currentHours < 10 ? "0" : "" ) + currentHours;
  currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
  currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;

  // Compose the string for display
  var currentTimeString = currentDay + ' ' + currentMonth + ' ' + currentYear + ' г. ' +
  currentHours + ":" + currentMinutes + ":" + currentSeconds;

  // Update the time display
  document.getElementById("clock").firstChild.nodeValue = currentTimeString;
  if (!state){
     setupCalendars();
    state = true;
  }
  timestamp += 1000;
  setTimeout('updateClock()',1000);
}
function loginPopup()
{
  Effect.Appear('login_form', { duration: 1.0, from:0, to:0.9});
  //Event.observe(document, 'mousedown', loginUnPopup);
  //Event.observe($('login_form'), 'mousedown', null);
}
function loginUnPopup()
{
  Effect.Fade('login_form', { duration: 1.0, from:0.9, to:0});
  //Event.stopObserving(document, 'mousedown', loginUnPopup);
}

function updateMenu(id)
{
    
    if (document.getElementById(id).style.display == "none" )//(document.getElementById(id).style.display == "block")
    {
        Effect.SlideDown(id, { duration: 0.8 });
        
        //document.getElementById(id).style.display = "none";
    }
    else
    {
        //document.getElementById(id).style.display = "block"
        Effect.SlideUp(id, { duration: 0.8 });
    }
    state = !state;
}

function setupCalendars() {
        
        // Embedded Calendar
		if ($('embeddedCallCalendar'))
        Calendar.setup(
          {
            dateField: 'embeddedDateField',
            parentElement: 'embeddedCallCalendar',
            selectHandler: function (t){if ($('embeddedDateField')) window.location = '/call?date=' + this.date.print('%d.%m.%Y')}
          }
        )
		else
		Calendar.setup(
          {
            dateField: 'embeddedDateField',
            parentElement: 'embeddedCalendar',
            selectHandler: function (t){if ($('embeddedDateField')) window.location = '/afisha.html?date=' + this.date.print('%d.%m.%Y')}
          }
        )
        // Popup Calendar
        if ($('calendarCallTrigger'))
        {
          Calendar.setup(
          {
            dateField: 'calendarCallTrigger',
            triggerElement: 'calendarCallTrigger',
			dateFormat: '%d.%m.%Y'
          })
          $('popupDateField').observe('onchange', function(s){ showSchedule()});
        }
		if ($('calendarTrigger'))
        {
          Calendar.setup(
          {
            dateField: 'popupDateField',
            triggerElement: 'calendarTrigger'
          })
          $('popupDateField').observe('onchange', function(s){ showSchedule()});
        }
        //calendarView.setWeekStart('Mon');
}

function showSchedule()
{
  $$('table.adays').each(function(item){
    item.hide();
  });
  var d = $('popupDateField').innerHTML;
  var brokenstring = d.split('-');
  var reverse = brokenstring.reverse();
  d = reverse.join('.');
  //alert(d);
  if ($(curSchedule)) $(curSchedule).hide();
 /*
  var currentTime = new Date ( );

  var currentDay = currentTime.getDate ( );
  var currentMonth = currentTime.getMonth ( ) +1 ;
  var currentYear = currentTime.getFullYear ( );
  currentDay = ( currentDay < 10 ? "0" : "" ) + currentDay;
  currentMonth = ( currentMonth < 10 ? "0" : "" ) + currentMonth;
  var tmp = currentDay + '.' + currentMonth + '.' + currentYear;
  if (d == tmp) curSchedule = 'dtoday';
  else*/
  curSchedule = 'd'+d;
  
  if ($(curSchedule)) $(curSchedule).show();
}
function allDays()
{
  $$('table.adays').each(function(item){
    item.show();
  });
}
// Send request


// Receive response
function ajaxReceive(transport)
{
    //var data = eval('(' + transport.responseText + ')');
    //Effect.Fade('loadscreen', { duration: 0.5, from:0.3, to:0});
    viewPlan(transport.responseText);
}

function getPlan(u,par)
{
  if (!u) {
    loginPopup();
    return;
  }
  sid = par;
  //формируем строку с параметрами запроса
    var pars = $H({param:par}).toQueryString();
    Effect.Appear('loadscreen', { duration: 1.0, from:0, to:0.8});
    
    //var msg ='';
    //msg = 'Загрузка...';
    //if (msg != '') alert(msg);
    //отправляем ajax запрос
    new Ajax.Request("/plan/" + par,
        {method:"post", parameters:pars, onSuccess:ajaxReceive});
    }
function viewPlan(data)
{
  //alert($('plan_popup').top);
  //$('plan_popup').setStyle({top:0});
  //$('plan_popup').style.top = document.viewport.getHeight()/2 - $('plan_popup').height/2;
  //$('plan_popup').left = document.viewport.getWidth()/2 - $('plan_popup').width/2;
  $('plan_container').innerHTML = data;
  //alert(readAttribute('height'));
  $('plan_container').show();
  var dim = $('plan_popup').getDimensions();
  var v = (document.viewport.getHeight() - dim.height)/2;
  //alert (v);
  var h = (document.viewport.getWidth() - dim.width)/2;
  var browser=navigator.appName;
  var wt = document.viewport.getScrollOffsets();
  //var wt = self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
//alert (wt);
  if (browser.indexOf('Microsoft') != -1) 
    $('plan_popup').setStyle({top:0, left:0});
  else $('plan_popup').setStyle({top:wt[1]+20, left:h});
  //Effect.Appear('plan_container', { duration: 1.0, from:0, to:1});
  new Draggable('plan_popup',{starteffect:'',endeffect:''});
  new Draggable('summary',{starteffect:'',endeffect:''});
  //new Draggable('pinform',{starteffect:'',endeffect:''});
}

function showMsg(id)
{
  var msg = '';
  if (id == 1) msg = 'В соответствии с меморандумом кинопрокатчика бронирование билетов на этот сеанс запрещено!\n\rПриобретайте билеты в кассах киносети и на сайтах партнерах: www.afisha.ru, www.erostov.ru!';
  if (msg != '') alert(msg);
}

function setPlace(id)
{
  //alert(places.indexOf(id));
  if (places.indexOf(id) == -1)
  {
      if (places.length == 7)
      {
         alert('Вы не можете забронировать больше 7 мест!');
          return;
      }
    places.push(id);
    $$('#' + id +' div')[0].addClassName('p-your');
  }
  else
  {
    places.splice(places.indexOf(id),1);
    $$('#' + id +' div')[0].removeClassName('p-your');
  }
}

function clearPlaces()
{
  places.each(function(item) {
    $$('#' + item +' div')[0].removeClassName('p-your');
  });
  places.clear();
}
function showSummary()
{
  $('pinresponse').innerHTML = '';
  if (places.size() == 0 ) {
    alert('Вы не выбрали места!');
    return;
  }
  Effect.Fade('plan_container', { duration: 1.0, from:1, to:0});
  var pars = $H({sid:sid}).toQueryString();
    //Effect.Appear('loadscreen', { duration: 1.0, from:0, to:0.8});
 //   $('pinresponse').innerHTML = 'идет запрос...';
    //отправляем ajax запрос
    new Ajax.Request("/getsession/" + sid,
        {method:"post", parameters:pars, onSuccess:showSummaryReceive});
}
function showSummaryReceive(transport){
  $('session_data').innerHTML = transport.responseText;
  var list = '';
  var pay = 0;
  places.each(function(item) {
    list += ('<li>' + $(item).readAttribute('title') +'</li>');
    pay += parseInt($$('#' + item +' a')[0].innerHTML);
  });
  $('place_list').innerHTML = list;
  $('payment').innerHTML =pay.toString() + 'р.';
  $('summary').show();
  var dim = $('summary').getDimensions();
var wt = document.viewport.getScrollOffsets();
  var h = (document.viewport.getWidth() - dim.width)/2;
  var browser=navigator.appName;
  if (browser.indexOf('Microsoft') != -1) {
    $('summary').setStyle({top:300, left:500});
  }
  else $('summary').setStyle({top:wt[1]+300, left:h});
  //Effect.Appear('summary', { duration: 1.0, from:0, to:1});
}
function backToPlan()
{
  Effect.Fade('summary', { duration: 1.0, from:1, to:0});
  Effect.Appear('plan_container', { duration: 1.0, from:0, to:1});
  //new Draggable('summary',{starteffect:'',endeffect:''});
}
function showPIN()
{
  Effect.Fade('summary', { duration: 1.0, from:1, to:0});
  $('pinform').show();
  var dim = $('pinform').getDimensions();
  var v = (document.viewport.getHeight() - dim.height)/2;
  var h = (document.viewport.getWidth() - dim.width)/2;
  
  var browser=navigator.appName;
  if (browser.indexOf('Microsoft') != -1) {
    $('pinform').setStyle({top:300, left:500});
  }
  else $('pinform').setStyle({top:v, left:h});
  //Effect.Appear('pinform', { duration: 1.0, from:0, to:1});
}
function getPIN(par,par1)
{
  var pars = $H({param:par, sid:par1}).toQueryString();
    //Effect.Appear('loadscreen', { duration: 1.0, from:0, to:0.8});
 //   $('pinresponse').innerHTML = 'идет запрос...';
    //отправляем ajax запрос
   // new Ajax.Request("/getpin/" + par,
     //   {method:"post", parameters:pars, onSuccess:pinReceive});
}
function pinReceive(transport)
{
    //var data = eval('(' + transport.responseText + ')');
    //Effect.Fade('loadscreen', { duration: 1.0, from:0.8, to:0});
    $('pinresponse').innerHTML = transport.responseText;
    //Effect.Fade('loadscreen', { duration: 1.0, from:0.8, to:0});
}

function reserv(par1)
{
  var par2 = sid;
  $('pinresponse').innerHTML = 'идет запрос...';
  //var pin = $('PINinput').value;
  var list = '';
  var tmp;
  var row;
  var place;
  places.each(function(item) {
    tmp = $(item).readAttribute('title');
    row = tmp.substring(4,tmp.indexOf(' м'));
    place = tmp.substring(tmp.indexOf(' м')+7);
    list += ( row +':' + place + ';');
  });
  var pars = $H({uid:par1, sid:par2, order:list}).toQueryString();
    //Effect.Appear('loadscreen', { duration: 1.0, from:0, to:0.8});
    //отправляем ajax запрос
    new Ajax.Request("/reservation/" + par1,
        {method:"post", parameters:pars, onSuccess:reservReceive});
}
function reservReceive(transport)
{
    //var data = eval('(' + transport.responseText + ')');
    //Effect.Fade('loadscreen', { duration: 1.0, from:0.8, to:0});
    //if (transport.responseText == '') alert('Ваш заказ принят!');
    //else alert(transport.responseText);
    $('pinresponse').innerHTML = transport.responseText;
    if (transport.responseText.substring(0,2) == 'Ok') window.location = '/cabinet.html';
    else
    {
      clearPlaces();
      Effect.Fade('summary', { duration: 2.0, from:1, to:0});
      setTimeout('getPlan(1,sid)',2000);
    }
    // orders update
}

function sessionsUpdate(par0)
{
  if ($('movie_id').options[$('movie_id').selectedIndex].value && $('theatre_id').options[$('theatre_id').selectedIndex].value)
  {
    var par1 = $('movie_id').options[$('movie_id').selectedIndex].value;
    var par2 = $('theatre_id').options[$('theatre_id').selectedIndex].value;
    //формируем строку с параметрами запроса
    var pars = $H({movie:par1, theatre:par2}).toQueryString();
    $('loading').innerHTML = 'загрузка...';
    $('loading').show();
    //отправляем ajax запрос
    new Ajax.Request("/bron/" + par0,
        {method:"post", parameters:pars, onSuccess:selectUpdate});
  }
}
function selectUpdate(transport)
{
  var s = transport.responseText;
  //alert(s);
  if (s == 'error'){
    $('loading').hide();
    $('session_id').innerHTML = '<option value="0">В этом кинотеатре нет сеансов фильма</option>';
    return;
  }
  var i = 0;
  var sel = '';
  var sdate;
  var id;
  var val;
  var l = s.length;
  //alert(l);
  while (1)
  {
    if (l == i+1) break;
    sdate = s.substring(s.indexOf('^',i)-10,s.indexOf('^',i));
    sel += '<optgroup label="' + sdate + '">';
    i = s.indexOf('^',i)+1;
    while (1)
    {
      if (s.substring(i,i+1) == '@') break;
      id = s.substring(i,s.indexOf('=',i));
      val = s.substring(s.indexOf('=',i)+1,s.indexOf(';',i));
      i = s.indexOf(';',i)+1;
      sel += '<option value="' + id + '">' + val + '</option>';
    }
    sel += '</optgroup>';
  }
  $('loading').hide();
  $('session_id').innerHTML = sel;
}
function mkSession()
{
  if ($('session_id').options[$('session_id').selectedIndex].value == 0 ) return;
  if ($('movie_id').options[$('movie_id').selectedIndex].value){
  var url = '/cabinet/session' + $('session_id').options[$('session_id').selectedIndex].value + '.html';
  window.location = url;
  }
}

function resClear(par1,par2,par3,par4)
{
  var pars = $H({id:par2, level:par3, theatre:par4}).toQueryString();
    //Effect.Appear('loadscreen', { duration: 1.0, from:0, to:0.8});
   
    //отправляем ajax запрос
    new Ajax.Request("/resclear/" + par1,
        {method:"post", parameters:pars, onSuccess:rescReceive});
}
function rescReceive(transport)
{
  window.location = '/cabinet.html';
}
function closeAll()
{
    $('pinform').hide();
    $('summary').hide();
    $('plan_container').hide();
    $('loadscreen').hide();
    clearPlaces();
}



function loginSend()
{
  var p1 = $('log').value;
  var p2 = $('pass').value;
  //формируем строку с параметрами запроса
    var pars = $H({loginformlogin:p1, loginformpassword:p2}).toQueryString();
    Effect.Appear('loadscreen', { duration: 1.0, from:0, to:0.8});
    //отправляем ajax запрос
    new Ajax.Request("/login/",
        {method:"post", parameters:pars, onSuccess:loginReceive});
}

// Receive response
function loginReceive(transport)
{
    //var data = eval('(' + transport.responseText + ')');
    var s = transport.responseText;
    Effect.Fade('loadscreen', { duration: 0.5, from:0.8, to:0});
    //transport.responseText = '(' + transport.responseText + ')';    
    //alert(transport.responseText);
    //alert(s.indexOf('ok'));
    if (s.indexOf('ok') >= 0) {
	location.reload(true);
    } else {
	alert('Ошибка входа: неверные логин или пароль!');
    }
}

function filterTheatre(id){
  var d = $('embeddedDateField').innerHTML;
  var brokenstring = d.split('-');
  var s = Array();
  brokenstring.each(function(item,i){
    s[i] = parseInt(item);
    if (s[i] < 10) s[i] = '0'+s[i]; 
  })
  var reverse = s.reverse();
  reverse
  d = reverse.join('.');
  d = d.replace(' ','');
  //alert(d);
  window.location = '/afisha.html?date=' + d + '&theatre=' + id;
}

function goToMovie(id){
  window.location = '/afisha/item'+id+'.html';
}
function showHideTrailer(id){
  if ($('mediaspace'+id).style.display == 'none') $('mediaspace'+id).show();
  else $('mediaspace'+id).hide();
}
function test(cal,date)
{
  alert('test');
  Effect.Fade('loadscreen', { duration: 0.5, from:0.3, to:0});
}
