var Tickets = new Array();
var Juniors = new Array();
var ticket_details  = { };
var timers  = { 'pop_fade' : false, 'pop_close' : false };

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function showTicketDialogue(thisid,e) {
  clearTimeout(timers.pop_fade);
  clearTimeout(timers.pop_close);
  setOpacity('fixturesQuantityPopHolder',100);
  $g('ticketQuantity').value = '';
  $g('fixturesQuantityPopMessages').className = 'hide';

  TicketID = thisid.replace(/[^\d]/g,'');

  sxy = getScrollXY();
  $g('fixturesQuantityPopHolder').style.top = sxy[1]+'px';

  ticket_details = {};

  // Get from AJAX
  ajax = new sack();
  ajax.onLoading    = function() {};
  ajax.onCompletion = function() {
                        eval(ajax.response);
                        if (!ticket_details) {
                          return;
                        }
                        for (var i in ticket_details) {
                          switch (i) {
                            case 'className'    :
                            case 'minQuantity'  :
                              break;
                            case 'stakes' :
                              $g('fqp_date').innerHTML += ' : '+ticket_details[i];
                              break;
                            case 'ticketMessage'  :
                              $g('ticketMessage').innerHTML = ticket_details[i];
                              break;
                            default :
                              $g('fqp_'+i).innerHTML = ticket_details[i];
                              break;
                          }
                        }
                        $g('fixturesQuantityTable').className = ticket_details.className;
                        $g('fqp_enclosure').className         = 'fixtureHeader'+ticket_details.className;

                        $g('fixturesQuantityPopHolder').className = 'show';
                        $g('fixturesQuantityForm').onsubmit = function() {
                          $g('fixturesQuantityPopMessages').className = 'hide';
                          addTicket(TicketID,$g('ticketQuantity').value); return false;
                        };
                      };
  ajax.requestFile  = '/_ajax/getTicketDetails.php?TicketID='+TicketID;
  ajax.runAJAX();
}

function getOpacity(el)           { op = /*(document.all) ? $(el).filters['alpha'].opacity :*/ $g(el).style.opacity*100;
                                    return (op == '') ? 100 : op; }
function setOpacity(el,pct)       { /*if (document.all) $g(el).filters['alpha'].opacity  = pct;
                                    else              */$g(el).style.opacity             = pct/100;
                                    return; }

function closeTicketDialogue() {
  curOpac   = getOpacity('fixturesQuantityPopHolder');
  opacDelta = 5;
  opacSpeed = 20;

  if (curOpac <= opacDelta) {
    setOpacity('fixturesQuantityPopHolder',0);
    $g('fixturesQuantityPopHolder').className = 'hide';
  } else {
    setOpacity('fixturesQuantityPopHolder',curOpac-opacDelta);
    timers.pop_fade = window.setTimeout("closeTicketDialogue()",opacSpeed);
  }
  return;
}

function addTicket (TicketID,quantity) {
  if (isNaN(quantity)) {
    logQuantityMessage("The quantity must be a number",'error');
    return;
  }
  if (quantity == '' || quantity == 0) {
    logQuantityMessage("Please enter a quantity",'error');
    return;
  }
  if (parseInt(quantity) < ticket_details.minQuantity) {
    logQuantityMessage("The minimum order quantity for this ticket is "+ticket_details.minQuantity,'error');
    return;
  }
  ajax = new sack();
  ajax.onLoading      = function() {};
  ajax.onCompletion   = function() {
                          var success = false;
                          eval(ajax.response);
                          if (!success) return;

                          logQuantityMessage("The ticket(s) were added successfully");
                          timers.pop_close = setTimeout('closeTicketDialogue()',1250);
                          return;
                        }
  ajax.requestFile    = '/_ajax/addTicket.php?TicketID='+TicketID+'&quantity='+quantity;
  ajax.runAJAX();
}

function logQuantityMessage(message,type) {
  if (typeof type == 'undefined') type = 'message';
  $g('fixturesQuantityPopMessages').className = type+'s show';
  $g('fixturesQuantityPopMessages').innerHTML = '';
  if (type == 'error') {
    $g('fixturesQuantityPopMessages').innerHTML += "<h1>Error</h1><p>The following error was encountered:</p>";
  }
  $g('fixturesQuantityPopMessages').innerHTML += "<p>"+message+"</p>";
  return;
}

function emptyBasket() {
  ajax = new sack();
  ajax.onCompletion = function() {
                        if (!ajax.response) alert("An internal error has occurred");
                        else                updateBasket(0,0);
                      }
  ajax.requestFile  = '/_ajax/emptyBasket.php';
  ajax.runAJAX();
  return;
}

function updateBasket(items,cost) {
  $g('basketQuantity').innerHTML  = items;
  $g('basketTotal').innerHTML     = cost;
}

function toggleElementDisplay(element,valign) {
  var c = $g(element).className;
  var reggie  = /(\s+|^)hide(\s+|$)/;
  var isHidden  = reggie.exec(c);
  if (isHidden) {
    if (valign) {
      sxy = getScrollXY();
      $g('junior-pricing').style.top = sxy[1]+'px';
    }
    $g(element).className = c.replace(/(\s+|^)hide(\s+|$)/,'');
  } else {
    $g(element).className = c + ' hide';
  }
  return false;
}

fx_old_onload = window.onload;
window.onload = function() {
  fx_old_onload();

  for (var i in Tickets) {
    $g('buyTicket_'+Tickets[i]).onclick = function(e) {
      showTicketDialogue(this.id,e);
      return false;
    }
  }
  $g('fixturesPopClose').onclick      = function() { closeTicketDialogue(); return false; }
  $g('fixturesQuantityForm').onsubmit = function() { return false; }
  $g('basketEmpty').onclick           = function() { emptyBasket(); return false; }

  $g('junior-pricingClose').onclick   = function() { toggleElementDisplay('junior-pricing',true); return false; };
  $g('junior-pricing_href').onclick   = function() { toggleElementDisplay('junior-pricing',true); return false; };
  for (var i in Juniors) {
    $g('junior-pricing_href_'+Juniors[i]).onclick   = function() {
                                                        toggleElementDisplay('junior-pricing',true);
                                                        return false;
                                                      };
  }

}

