dojo.require("dojo._base.xhr");
dojo.addOnLoad(postCreate);
var freeEvent = null;
var freeTicket = new Array();

function postCreate ()
{ 
    if ( dojo.byId("paypalForm") ){  // if the event is expired, this div doesn't exist
	dojo.byId("paypalForm").style.display = "none";
    }
    subtotalTickets();

	// oh god I tried and tried to get this to work in IE, also dojoattachevent, in vain
	//dojo.connect(dojo.byId("buttonRef"), "onclick", handleCheckoutClick);
	// later --- try dojo.hitch?
}

function subtotalTickets()
{
    var showPaypal = false;
    dojo.forEach( dojo.query(".ticket_quantity_select"), function(pullDown){
		      var ticketId = pullDown.name.match(/\d+/);
		      if ( pullDown.value>0 && !freeTicket[ticketId] ){ //ticket is not free
			  showPaypal = true;
		      }
		  });
    if (showPaypal){
	dojo.byId("paypalForm").style.display = "";
	dojo.byId("freeForm").style.display  = "none"; // none
    }else{
	dojo.byId("paypalForm").style.display = "none"; // none
	dojo.byId("freeForm").style.display  = "";
    }
}

function handleFreeCheckoutClick(evt)
{
    if ( purchasedQuantityOverZero() === false ){
	alert("You must select a non-zero quantity of tickets");
	return(false);
    }else{
	return(true);
    }
}

function handleCheckoutClick(evt)
{
    // make sure some quantity is selected
    if ( purchasedQuantityOverZero() === false ){
	alert("You must select a non-zero quantity of tickets");
    }else{
	// create a ticketpurchase bundle
	xhrSubmitTicketBundleForm();
	// callback from _xhrSubmitTicketBundleForm will post to PayPal
	// done!
    }
	//   dojo.stopEvent(evt);
}

function purchasedQuantityOverZero()
{
    var quantitySelected = false;
    dojo.forEach( dojo.query(".ticket_quantity_select"), function(pullDown){
		      if (pullDown.value>0){
			  quantitySelected = true;
		      }
		      
		  });
    return(quantitySelected);
}


function xhrSubmitTicketBundleForm()
{
    var resultFromCall = null;
    var xhrArgs = {
	form: dojo.byId('new_ticket_purchase_bundle'),
	//form: dojo.byId('myForm'),
	handleAs: "json",
	load: successfullPost,
	//load: testPost,
	error: function(error){
	    dojo.byId("ticketPurchaseStatus").innerHTML = "Error Processing Tickets: " + error;
	}
    };
    dojo.byId("ticketPurchaseStatus").innerHTML = "Sending ticket information...";
    var deferred = dojo.xhrPost(xhrArgs);
}

function testPost(data)
{
    dojo.byId("ticketPurchaseStatus").innerHTML = data.baz + " " + data.foo;
}


function successfullPost(data)
{
    if (data.result === "success"){
	dojo.byId("ticketPurchaseStatus").innerHTML = "Tickets processed, redirecting to PayPal.";
	if (true){
	    var ppForm = dojo.byId("paypal_form");
	    ppForm.item_number.value = data.id;
	    ppForm.item_name.value = data.quantity + " Ticket(s) to " + data.description;
	    ppForm.business.value = data.business;
	    ppForm.custom.value = data.purchaseClass;
	    ppForm.notify_url.value = data.returnUrl;
	    ppForm.elements['return'].value = data.complUrl;
	    ppForm.cancel_return.value = data.canUrl;
	    ppForm.quantity.value = "1";
	    ppForm.amount.value = data.total;
	    ppForm.action  = data.targetUrl;
	    ppForm.submit();
	}
    }
}
