var ocupatDivTimer;
var semaforFromHover;
var rezervaTimer;
var jsonI = new Array(); // scaune hover
var jsonII = {}; // in cazul logarii
var keepDetaliiOcupatOneTime;

function init()
{
  //$('ocupatDiv').hide();
  //$('invitati').hide();
  
  semaforFromHover = false;
  var ocupat = document.getElementsByClassName('ocupat');
  for(var i = 0; i<ocupat.length; i++)
  {
    ocupat[i].observe('mouseover', detaliiOcupat);
    ocupat[i].observe('mouseout', inchideDetaliiOcupat);
  }
  var star = document.getElementsByClassName('star');
  for(var i = 0; i<star.length; i++)
  {
    star[i].observe('mouseover', detaliiOcupat);
    star[i].observe('mouseout', inchideDetaliiOcupat);
  }
  var liber = document.getElementsByClassName('liber');
  for(var i = 0; i<liber.length; i++)
  {

    liber[i].observe('mouseover', arataRezerva);
    liber[i].observe('mouseout', inchideRezerva);
    liber[i].observe('click', rezerva.bindAsEventListener({},liber[i].getAttribute('id')));
  }
//  alert('for end');
  $('ocupatDiv').observe('click', detaliiInvitatiOcupat);
  $('ocupatDiv').observe('mouseover',keepOcupatDiv);
  $('ocupatDiv').observe('mouseout',inchideDetaliiOcupat);
  $('invitati').observe('mouseover',keepOcupatDiv);
  $('invitati').observe('mouseout',inchideInvitati);
  $('rezerva').observe('mouseover',keepRezerva);
  $('closeRezervaButton').observe('click',closeParentAndOverlay.bindAsEventListener({},'rezervaForm'));
  $('submitRezerva').observe('click',validateAndSubmitRezerva);
  $('closeDespreButton').observe('click',closeParentAndOverlay.bindAsEventListener({},'despreContainer'));
  //$('cumBtn').observe('click',arataDespre);
  $('doLogin').observe('click',doLogin);
  $('closeIt').observe('click',closeErrorBox);
  $('schimbaRzvBtn').observe('click', function(event) { if(!$('schimbaRzvBtn').hasClassName('act')) { $('schimbForm').show();$('schimbaRzvBtn').addClassName('act'); }else{$('schimbForm').hide();$('schimbaRzvBtn').removeClassName('act');$('loginContainer').show();$('lostContainer').hide();} })
  
  $('totalOverlay').style.height = document.body.offsetHeight + 'px';
  
  $('viewTrailer').observe('click', function(event){pageTracker._trackPageview('/trailer-film');$('rezervaForm').hide();$('formOverlay').hide();$('flashPlayer').show();$('totalOverlay').show();$('closePlayerButton').show();});
  $('closePlayerButton').observe('click', function(event) { $('flashPlayer').hide();$('totalOverlay').hide();$('closePlayerButton').hide(); });

  //  $('tc').observe('click', arataTc);
//  $('closeTc').observe('click', closeTc);
  $('contact').observe('click', arataContact);
  $('closeContact').observe('click', closeContact);
  $('contactBtn').observe('click', submitContact);
  
  $('lostPass').observe('click', function(event) { $('loginContainer').hide();$('lostContainer').show(); })
  $('doLost').observe('click', function(event) { new Ajax.Request('ajax.php?function=lost', { parameters: 'email='+$('emailLost').value, onSuccess: function(transport){var json = transport.responseText.evalJSON();errorPopup(json.text);} } ) });
  
//  alert('init end');
  //
}
function submitContact()
{
  if($('numeContact').value == "" || $('emailContact').value == "" || $('mesajContact').value == "")
  {
    errorPopup('Toate campurile sunt obligatorii');
  }
  else
  {
    new Ajax.Request('/ajax.php?function=contact', { method: 'post', parameters: "nume="+$('numeContact').value+"&email="+$('emailContact').value+"&mesaj="+$('mesajContact').value,
                onSuccess: function(transport)
                {
                  errorPopup(transport.responseText);
                  closeContact();
                }
    });
  }
}
function arataContact()
{
  $('rezervaForm').hide();
//  $('tcContainer').hide();
  $('flashPlayer').hide();
  $('trailerOverlay').hide();
  $('contactContainer').show();
  $('formOverlay').show();
  $('closePlayerButton').hide();
}
function closeContact()
{
  $('contactContainer').hide();
  $('formOverlay').hide();
}
function arataTc()
{
  $('rezervaForm').hide();
  $('tcContainer').show();
  $('contactContainer').hide();;
  $('formOverlay').show();
}
function closeTc()
{
  $('tcContainer').hide();
  $('formOverlay').hide();
}
function closeErrorBox(event)
{
  $('totalMessage').hide();
  $('totalOverlay').hide();
}
function errorPopup(text)
{
  $('textError').innerHTML = text;
  $('totalOverlay').show();
  $('totalMessage').show();
}
function doLogin(event)
{
  if($('emailLogin').value == "" || $('parolaLogin').value == "")
  {
    errorPopup("Toate campurile sunt obligatorii.");
    return false;
  }
  new Ajax.Request('/ajax.php?function=login', {method: 'post', parameters: "email="+$('emailLogin').value+"&parola="+$('parolaLogin').value,
                   onSuccess: function(transport)
                   {
                     var res = transport.responseText.evalJSON();
                     if(res.error == 1)
                     {
                       errorPopup(res.errorText);
                       return false;
                     }
                     else
                     {
                       $('schimbForm').innerHTML = '<span>'+res.successText+'</span>';
                       jsonII.id = res.scaunId;
                       jsonII.className = ($(res.scaunId).hasClassName('star')) ? 'star' : 'ocupat';
                       $('rezerva').innerHTML = 'Schimba Loc';
                     }
                   }
  });
}
function arataDespre()
{
  $('rezervaForm').hide();
  $('formOverlay').show();
  $('despreContainer').show();
}
function validateAndSubmitRezerva(event)
{
  var inputs = new Array('cod','nume','url','email','parola','cparola');
  var _inputs = { cod: 5, nume: 3, url: 5, email: 5, parola: 5, cparola: 5 }; var k = true;
  for(var i = 0; i<inputs.length; i++)
  {
    eval("if($('"+inputs[i]+"').value.length < _inputs."+inputs[i]+"){errorPopup('Campul \\'"+inputs[i]+"\\' trebuie sa aiba minim '+_inputs."+inputs[i]+"+' caractere.');$('"+inputs[i]+"').focus(); k = false;}");
    if(!k) return false;
  }
  if($('parola').value != $('cparola').value)
  {
    errorPopup("Campul 'parola' trebuie sa fie identic cu campul 'confirma parola'");
    return false;
  }
  new Ajax.Request('/ajax.php?function=rezerva&id='+$('locAles').value.split('-')[0],
                  { method: 'post',evalScripts: true,
                                    parameters: "cod="+$('cod').value+"&"+
                                                "nume="+$('nume').value+"&"+
                                                "url="+$('url').value+"&"+
                                                "email="+$('email').value+"&"+
                                                "parola="+$('parola').value,
                    onSuccess: function(transport)
                               {
                                 var res = transport.responseText.evalJSON();
                                 if(res.error == 1)
                                 {
                                   errorPopup(res.errorText);
                                 }
                                 else
                                 {
                                   if(res.error == 2)
                                   {
                                     errorPopup(res.errorText);
                                     window.location = '/?refresh='+Math.random();
                                   }
                                   else
                                   {
                                     errorPopup(res.successText);
                                     $($('locAles').value).stopObserving('click');
                                     $($('locAles').value).removeClassName('liber');
                                     $($('locAles').value).addClassName(res.successType);
                                     $($('locAles').value).observe('mouseover', detaliiOcupat);
                                     $($('locAles').value).observe('mouseout', inchideDetaliiOcupat);
                                     $($('locAles').value).id = $($('locAles').value).id+'-'+res.successId;
                                     $('rezervaForm').hide();
                                     $('formOverlay').hide();
                                     detaliiOcupat({},$('locAles').value+'-'+res.successId, true);
                                     $('locLibere').innerHTML = res.locl;
                                     $('locOcupate').innerHTML = (155-res.locl);
                                     for(var i = 0; i<inputs.length;i++) {$(inputs[i]).value = '';}
                                     if(res.successType == 'ocupat')
                                     {
                                       new Ajax.Request('ajax.php?function=detaliiInvitat&UPDATE&id='+res.invitatDe,
                                                        {
                                                          onSuccess: function(transport)
                                                                    {
                                                                      try
                                                                      {
                                                                        jsonI[res.positieInviter] = transport.responseText.evalJSON();
                                                                      }
                                                                      catch(e)
                                                                      {
                                                                        errorPopup(e);
                                                                      }
                                                                    }});
                                     }
                                   }
                                 }
                               }
                  }
  );
  

}
function closeParentAndOverlay(event, toHide)
{
  $(toHide).hide();
//  $(event.element().parentNode.getAttribute('id')).hide();
  $('formOverlay').hide();
}
function rezerva(event, id)
{
  if(jsonII.id)
  {
    if(confirm("Sunteti sigur ca doriti sa schimbati locul cu acesta?"))
    {
      try
      {
        delete jsonI[jsonII.id.split('-')[0]];
      }
      catch(e)
      {
        
      }
      new Ajax.Request('/ajax.php?function=schimba',{method: 'post', parameters: "from="+jsonII.id.split('-')[0]+"&to="+id.split('-')[0]+"&user="+jsonII.id.split('-')[3]+"&type="+jsonII.className});
      $(jsonII.id).stopObserving();
      $(jsonII.id).observe('mouseover', arataRezerva);
      $(jsonII.id).observe('mouseout', inchideRezerva);
      $(jsonII.id).observe('click', rezerva.bindAsEventListener({},jsonII.id.split('-')[0]+'-'+jsonII.id.split('-')[1]+'-'+jsonII.id.split('-')[2]));
      $(jsonII.id).removeClassName(jsonII.className);
      $(jsonII.id).addClassName('liber');
      $(id).removeClassName('liber');
      $(id).addClassName(jsonII.className);
      $(id).stopObserving();
      $(id).observe('mouseover', detaliiOcupat);
      $(id).observe('mouseout', inchideDetaliiOcupat);
      var newId = id+'-'+jsonII.id.split('-')[3];
      $(id).id=newId;
      $(jsonII.id).id = jsonII.id.split('-')[0]+'-'+jsonII.id.split('-')[1]+'-'+jsonII.id.split('-')[2];
      jsonII.id = newId;
      detaliiOcupat({},newId,true);
    }
  }
  else
  {
    $('despreContainer').hide();
    $('rezervaForm').show();
    $('formOverlay').show();
    $('rezerva').hide();
    $('locAles').value = id;
  }
//  alert("Rezerva scaunul de pe randul "+id.split('-')[1]+" numarul "+id.split('-')[2]);
}
function arataRezerva(event)
{
  var el = event.element();
  try
  {
    if(el.hasClassName('ocupat'))
    {
      return false;
    }
  }
  catch(e) { alert(e); }
  keepRezerva();
  $('rezerva').stopObserving('click');
  $('rezerva').observe('click', rezerva.bindAsEventListener({},event.element().getAttribute('id')));
  var pos = Element.positionedOffset(el);
  $('rezerva').style.top = (pos.top-17)+'px';
  $('rezerva').style.left = (pos.left-28) + 'px';
  $('rezerva').show();
}
function inchideRezerva()
{
  //$('rezerva').stopObserving();
  rezervaTimer = setTimeout("$('rezerva').hide();",1000);
}
function keepRezerva()
{
  clearTimeout(rezervaTimer);
}
function showInvitati(event,id)
{
  /* la mouse over */
  var parent = $('scaune');
  
  try
  {
    if(jsonI[id].nri > 0)
    {
      for(var i = 0; i< jsonI[id].invitati.split('~').length; i++)
      {
        var div = document.createElement('div');
        div.id = 'i-'+jsonI[id].invitati.split('~')[i].split('|')[0];
        div.className = "invitati";
        div.innerHTML = jsonI[id].invitati.split('~')[i].split('|')[1];
        var pos = Element.positionedOffset($(jsonI[id].invitati.split('~')[i].split('|')[0]));
        div.style.top = (pos.top-12)+'px';
        div.style.left = (pos.left-28) + 'px';
        parent.appendChild(div);
      }
    }
  }
  catch(e){}
}
function destroyInvitati(event, id)
{
  var parent = $('scaune');
  if(jsonI[id].nri > 0)
  {
    for(var i = 0; i< jsonI[id].invitati.split('~').length; i++)
    {
      try
      {
        parent.removeChild($('i-'+jsonI[id].invitati.split('~')[i].split('|')[0]));
      }
      catch(e){}
    }
  }
}
function arataInvitat(event, invitat)
{
  var parent = $('scaune');
  var div = document.createElement('div');
  div.id = 'i-'+invitat.id;
  div.className = "invitati";
  div.innerHTML = invitat.nume;
  var pos = Element.positionedOffset($(invitat.id));
  div.style.top = (pos.top-12)+'px';
  div.style.left = (pos.left-28) + 'px';
  parent.appendChild(div);
}
function destroyInvitat(event, invitat)
{
  var parent = $('scaune');
  $('i-'+invitat.id).stopObserving();
  parent.removeChild($('i-'+invitat.id));
}
function detaliiOcupatPassThru(event, id)
{
  semaforFromHover = true;
  detaliiOcupat({},id,true);
}
function arataInvitati(event, id)
{
  /* la click */
  if(jsonI[id].nri > 0)
  {
    
    destroyInvitati({},id);
    $('invitati').innerHTML = '';
    for(var i = 0; i< jsonI[id].invitati.split('~').length; i++)
    {
      var a = document.createElement('a');
      Element.extend(a); // ie7
      a.className = 'invitat';
      a.innerHTML = jsonI[id].invitati.split('~')[i].split('|')[1];
      a.href="Javascript://";
      $('invitati').appendChild(a);
      var obj = { id: jsonI[id].invitati.split('~')[i].split('|')[0], nume: jsonI[id].invitati.split('~')[i].split('|')[1] };
      a.observe('mouseover', arataInvitat.bindAsEventListener({},obj));
      a.observe('mouseout' , destroyInvitat.bindAsEventListener({},obj));
      a.observe('click', detaliiOcupatPassThru.bindAsEventListener({},obj.id));
      //$('invitati').innerHTML += jsonI[id].invitati.split('~')[i].split('|')[1]+'<br>'
    }
    var pos = Element.positionedOffset($('ocupatDiv'));
    $('invitati').style.left = (pos.left+$('ocupatDiv').offsetWidth) + 'px';
    $('invitati').style.top = (pos.top+$('ocupatDiv').offsetHeight-20) + 'px';
    $('invitati').show();
  }
}
function detaliiOcupat(event, elementId, fromHover)
{
  $('rezerva').hide();
  if(fromHover)
  {
    //alert(ocupatDivTimer);
    setTimeout("clearTimeout(ocupatDivTimer);",1001);
    var element = $(elementId);
    keepDetaliiOcupatOneTime = true;
  }
  else
  {
    element = event.element();
  }
  clearTimeout(ocupatDivTimer);
  $('nrInvitati').stopObserving();
  $('invitati').hide();
  $('numeInvitat').style.width = 'auto';
  $('nrInvitati').style.width = 'auto';
  if(!jsonI[element.getAttribute('id').split('-')[0]])
  {
    new Ajax.Request('ajax.php?function=detaliiInvitat&id='+element.getAttribute('id').split('-')[3],
                      {onSuccess: function(transport)
                                  {
                                    jsonI[element.getAttribute('id').split('-')[0]] = transport.responseText.evalJSON();
                                    $('numeInvitat').innerHTML = jsonI[element.getAttribute('id').split('-')[0]].textHTML;
                                    $('nrInvitati').innerHTML = jsonI[element.getAttribute('id').split('-')[0]].nri + ' invitati >';
                                    
                                    if(element.hasClassName('star'))
                                    {
                                      $('nrInvitati').show();
                                    }
                                    else
                                    {
                                      $('nrInvitati').hide();
                                    }
                                    var pos = Element.positionedOffset(element);
                                    $('ocupatDiv').show();
                                    $('numeInvitat').style.width = ($('ocupatDiv').offsetWidth-2) + 'px';
                                    $('nrInvitati').style.width = ($('ocupatDiv').offsetWidth-2) + 'px';
                                    $('ocupatDiv').style.top = (pos.top-($('ocupatDiv').offsetHeight))+'px';
//                                    console.log("ocupatOffset: %d diffOffset: %d",$('ocupatDiv').offsetHeight,pos.top-($('ocupatDiv').offsetHeight));
                                    $('ocupatDiv').style.left = (pos.left-intval(($('ocupatDiv').offsetWidth-25)/2)) + 'px';
                                    // aici setam event/atribut nou ptr divul nrInvitati;
                                  }});
  }
  else
  {
    $('numeInvitat').innerHTML = jsonI[element.getAttribute('id').split('-')[0]].textHTML;
    $('nrInvitati').innerHTML = jsonI[element.getAttribute('id').split('-')[0]].nri + ' invitati >';
    
    if(element.hasClassName('star'))
    {
      $('nrInvitati').show();
    }
    else
    {
      $('nrInvitati').hide();
    }
    var pos = Element.positionedOffset(element);
    $('ocupatDiv').show();
    $('numeInvitat').style.width = ($('ocupatDiv').offsetWidth-2) + 'px';
    $('nrInvitati').style.width = ($('ocupatDiv').offsetWidth-2) + 'px';
    
    $('ocupatDiv').style.top = (pos.top-$('ocupatDiv').offsetHeight)+'px';
//    console.log("ocupatOffset: %d diffOffset: %d",$('ocupatDiv').offsetHeight,pos.top-($('ocupatDiv').offsetHeight));
    $('ocupatDiv').style.left = (pos.left-intval(($('ocupatDiv').offsetWidth-25)/2)) + 'px';
   // aici setam event/atribut nou ptr divul nrInvitati;
  }
  try
  {
    $('nrInvitati').observe('mouseover', showInvitati.bindAsEventListener({},element.getAttribute('id').split('-')[0]));
    $('nrInvitati').observe('mouseout', destroyInvitati.bindAsEventListener({},element.getAttribute('id').split('-')[0]));
    $('nrInvitati').observe('click', arataInvitati.bindAsEventListener({},element.getAttribute('id').split('-')[0]));
  }
  catch(e)
  {
    errorPopup(e);
  }
  
}
function inchideDetaliiOcupat(event)
{
  ocupatDivTimer = setTimeout("$('ocupatDiv').hide();$('invitati').hide();", 1000);
}
function inchideInvitati(event)
{
 ocupatDivTimer = setTimeout("$('ocupatDiv').hide();$('invitati').hide();",1000);
}
function keepOcupatDiv()
{
  clearTimeout(ocupatDivTimer);
  $('ocupatDiv').show();
  $('rezerva').hide();
}
function detaliiInvitatiOcupat(event)
{
  var pos = Element.viewportOffset(event.element());
}
function intval( mixed_var, base ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: stensi
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: intval('Kevin van Zonneveld');
    // *     returns 1: 0
    // *     example 2: intval(4.2);
    // *     returns 2: 4
    // *     example 3: intval(42, 8);
    // *     returns 3: 42
    // *     example 4: intval('09');
    // *     returns 4: 9
 
    var tmp;
 
    var type = typeof( mixed_var );
 
    if(type == 'boolean'){
        if (mixed_var == true) {
            return 1;
        } else {
            return 0;
        }
    } else if(type == 'string'){
        tmp = parseInt(mixed_var * 1, 10);
        if(isNaN(tmp) || !isFinite(tmp)){
            return 0;
        } else{
            return tmp.toString(base || 10);
        }
    } else if(type == 'number' && isFinite(mixed_var) ){
        return Math.floor(mixed_var);
    } else{
        return 0;
    }
}