var xmlHttp=new Array();
var contract_count=0;

var seatsReturnedArray=new Object();
var filesReturnedArray=new Object();
var paidReturnedArray=new Object();
var performanceReturnedArray=new Object();
var ticketsReturnedArray=new Object();
var nameReturnedArray=new Object();
var cancelReturnedArray=new Object();
var divLoadedArray=new Array();

// the code setup here is a little goofy so that we can allow multiple
// overlapping AJAX calls

//var root = 'http://localhost/ballet/';
//var root = 'http://www.zealsolutions.com/scballet/';
var root = 'http://tickets.stcroixballet.com/';

function ajaxSetSeats(request,string,target_count)
{
    xmlHttp[request]=GetXmlHttpObject()
    if (xmlHttp[request]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+"ajax.seatcheck.php?string="+string;
    url=url+"&request_id="+request;
    url=url+"&sid="+Math.random();
    function seatsReturned()
    {
        if (xmlHttp[request].readyState==4 || 
                xmlHttp[request].readyState=="complete") {
            var seats=xmlHttp[request].responseText;
            success=seats[0];
            seats=seats.substr(1);
            if (success=='0'){ // bad text
                ge('filled_submit_'+request).disabled=true;
                ge('error_'+request).innerHTML='<acronym title="'+
                    seats+'">?</acronym>';
                return;
            }
            ge('seats_array_'+request).value=seats;
            seats = seats.split(',');
            var count=seats.length;
            if (count==target_count){
                ge('error_'+request).innerHTML='';
                ge('filled_submit_'+request).disabled=false;
            }
            else{
                ge('filled_submit_'+request).disabled=true;
                ge('error_'+request).innerHTML='<acronym title="'+
                    'You must have '+target_count+' seats; this is '+
                    count+' seats.">?</acronym>';
           }
            
        }
    }
    seatsReturnedArray[request]=seatsReturned;
    xmlHttp[request].onreadystatechange=seatsReturnedArray[request];
    xmlHttp[request].open("GET",url,true);
    xmlHttp[request].send(null);
}

function ajaxSetPaid(request)
{
    xmlHttp[request]=GetXmlHttpObject()
    if (xmlHttp[request]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+"ajax.set_paid.php?request_id="+request;
    url=url+"&sid="+Math.random();
    function paidReturned()
    {
        if (xmlHttp[request].readyState==4 ||
                xmlHttp[request].readyState=="complete") {
            var success=xmlHttp[request].responseText;
            if (success == '1')
                ge('paid_surround_'+request).innerHTML='Yes';
            else
                ge('paid_'+request).value='[Error]';
        }
    }
    ge('paid_'+request).value='[Paying...]';
    paidReturnedArray[request]=paidReturned;
    xmlHttp[request].onreadystatechange=paidReturnedArray[request];
    xmlHttp[request].open("GET",url,true);
    xmlHttp[request].send(null);
}

function ajaxChangePerformance(request,performance_id)
{
    xmlHttp[request]=GetXmlHttpObject()
    if (xmlHttp[request]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+"ajax.change_performance.php?request_id="+request;
    url=url+"&performance_id="+performance_id;
    url=url+"&sid="+Math.random();
    function performanceReturned()
    {
        if (xmlHttp[request].readyState==4 ||
                xmlHttp[request].readyState=="complete") {
            var performance=xmlHttp[request].responseText;
            success=performance[0];
            date=performance.substr(1);
            if (success == '1')
                ge('performance_display_'+request).innerHTML=date;
            else
                ge('performance_display_'+request).innerHTML=date;
            ge('performance_edit_'+request).style.display='none';
            ge('performance_display_'+request).style.display='block';
        }
    }
    ge('edit_'+request+'_performance_submit').value='[Saving...]';
    performanceReturnedArray[request]=performanceReturned;
    xmlHttp[request].onreadystatechange=performanceReturnedArray[request];
    xmlHttp[request].open("GET",url,true);
    xmlHttp[request].send(null);
}

function ajaxChangeTicketCount(request,ticket_count)
{
    xmlHttp[request]=GetXmlHttpObject()
    if (xmlHttp[request]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+"ajax.change_tickets.php?request_id="+request;
    url=url+"&ticket_count="+ticket_count;
    url=url+"&sid="+Math.random();
    function ticketsReturned()
    {
        if (xmlHttp[request].readyState==4 ||
                xmlHttp[request].readyState=="complete") {
            var response=xmlHttp[request].responseText;
            ge("ticket_display_"+request).innerHTML=response;
            ge("ticket_edit_"+request).style.display="none";
            ge("ticket_display_"+request).style.display="block";
        }
    }
    ge("edit_"+request+"_tickets_submit").value="[Saving...]";
    ticketsReturnedArray[request]=ticketsReturned;
    xmlHttp[request].onreadystatechange=ticketsReturnedArray[request];
    xmlHttp[request].open("GET",url,true);
    xmlHttp[request].send(null);
}

function ajaxChangeName(request,attendee_id)
{
    xmlHttp[request]=GetXmlHttpObject()
    if (xmlHttp[request]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+"ajax.change_name.php?attendee_id="+attendee_id;
    var fields=new Array("name_first", "name_last", "address", "city", "state",
        "zip");
    for (key in fields){
        //alert(fields[key]);
        url=url+"&"+fields[key]+'='+ge('edit_'+request+'_'+fields[key]).value;
    }
    url=url+"&sid="+Math.random();
    function nameReturned()
    {
        if (xmlHttp[request].readyState==4 ||
                xmlHttp[request].readyState=="complete") {
            var response=xmlHttp[request].responseText;
            ge('name_display_'+request).innerHTML=response;
            ge('name_edit_'+request).style.display='none';
            ge('name_display_'+request).style.display='block';
        }
    }
    ge('edit_'+request+'_name_submit').value='[Saving...]';
    nameReturnedArray[request]=nameReturned;
    xmlHttp[request].onreadystatechange=nameReturnedArray[request];
    xmlHttp[request].open("GET",url,true);
    xmlHttp[request].send(null);
}

function ajaxCancelRequest(request)
{
    xmlHttp[request]=GetXmlHttpObject()
    if (xmlHttp[request]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+"ajax.cancel_request.php?request_id="+request;
    url=url+"&sid="+Math.random();
    function cancelReturned()
    {
        if (xmlHttp[request].readyState==4 ||
                xmlHttp[request].readyState=="complete") {
            var response=xmlHttp[request].responseText;
            if (response == '1'){
                ge("cancel_div_"+request).innerHTML='[Cancelled]';
                ge("row_"+request).style.backgroundColor='#aaa';
            }
            else
                alert(response);
        }
    }
    ge("cancel_"+request).value="[Cancelling...]";
    cancelReturnedArray[request]=cancelReturned;
    xmlHttp[request].onreadystatechange=cancelReturnedArray[request];
    xmlHttp[request].open("GET",url,true);
    xmlHttp[request].send(null);
}

function getFile(file,id)
{
    xmlHttp[file]=GetXmlHttpObject()
    if (xmlHttp[file]==null) {
        alert("Browser does not support HTTP Request");
        return;
    }
    var url=root+file;
    //alert(url);
    if(url.indexOf('?')==-1)
        url=url+"?";
    else
        url=url+"&";
    url=url+"sid="+Math.random();
    function fileReturned()
    {
        if (xmlHttp[file].readyState==4 || xmlHttp[file].readyState=="complete") {
            ge(id).innerHTML=xmlHttp[file].responseText;
            s=ge(id).style;
            s.opacity='';
            s.MozOpacity='';
            s.KhtmlOpacity='';
            //s.filter=null;
            divLoadedArray[id]=true;
        }
    }
    
    ge(id).innerHTML='Loading...';
    s=ge(id).style;
    s.backgroundColor='white';
    s.border='1px solid black';
    s.height='370px';
    s.opacity=.5;
    s.MozOpacity=.5;
    s.KhtmlOpacity=.5;
    //s.filter='alpha(opacity=50)';//omitted because IE7 stops anti-aliasing

    filesReturnedArray[file]=fileReturned;
    xmlHttp[file].onreadystatechange=filesReturnedArray[file];//(code);
    xmlHttp[file].open("GET",url,true);
    xmlHttp[file].send(null);
}

function GetXmlHttpObject()
{
    var objXMLHttp=null
    if (window.XMLHttpRequest)
        objXMLHttp=new XMLHttpRequest();
    else if (window.ActiveXObject)
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
    return objXMLHttp;
}

