function NumberSelector(args){
	
	var debug = false;
	var container, balls, selectorLine, selectedLines, reset, line_count=1, SubmitAction;
	var gmLotto = 'Lotto';
	var gmEuroMillions = 'EuroMillions';
	var gmMondayMillions = 'MondayMillions';
	var gmMillionaireRaffle = 'MillionaireRaffle';
	var gmAllOrNothing = "AllOrNothing";
	var gmSweepstakes = 'Sweepstakes';
	var frmNumberSelections = "";
	var frmGameMode = "";
	var frmDateSpan = "";
	var frmRaffleID = "";
	var frmIsiGoogle = "";
	
	initialize();
	
	function initialize() {
		nsLog("initialize");
		container = $(args.dom_container);
		
		frmGameMode = $(args.dom_game_mode).value;
		frmDateSpan = $(args.dom_date_span).value != "" ? $(args.dom_date_span).value : '2';
		frmNumberSelections = $(args.dom_number_selections).value;
		frmRaffleID = $(args.dom_raffle_id).value;
		frmSweepstakesID = $(args.dom_sweepstakes_id).value;
		frmIsiGoogle = $(args.dom_is_igoogle).value;
		nsLog("GameMode: "+frmGameMode);
		nsLog("DateSpan: "+frmDateSpan);
		nsLog("NumberSelections: "+frmNumberSelections);
		nsLog("RaffleID: "+frmRaffleID);
		if(frmGameMode == "")
			frmGameMode = gmLotto;
		renderGameSelector();
		switch(frmGameMode)
		{
			case gmLotto:
				renderLottoNumberPicker();
				break;
			case gmEuroMillions:
				renderEuroMillionsNumberPicker();
				break;
			case gmMondayMillions:
				renderMondayMillionNumberPicker();
				break;
			case gmMillionaireRaffle:
				renderMillionaireRaffleNumberPicker();
				break;
            case gmSweepstakes:
                renderSweepstakesRaffleNumberPicker();
                break;
			case gmAllOrNothing:
			    renderAllOrNothingNumberPicker();
			    break;
		}

		if (frmGameMode == gmMillionaireRaffle || frmGameMode == gmSweepstakes)
		{
			frmNumberSelections.replace(/-$/, "").split('-').each(function(n)
			{
				var num = new Element('li');
				num.insert( new Element('span').update(n) );
				selectedLines.insert( num );
			});
		} else {
			var line_class = '';
			var max_balls_per_line = 0;
			switch(frmGameMode)
			{
				case gmLotto:
					line_class='lottoballs';
					max_balls_per_line = 6;
					break;
				case gmEuroMillions:
					line_class='lottoballs lottoballs_euro';
					max_balls_per_line = 7;
					break;
				case gmMondayMillions:
					line_class='lottoballs lottoballs_monday';
					max_balls_per_line = 6;
					break;
				case gmAllOrNothing:
				    line_class='lottoballs lottoballs_allornothing';
				    max_balls_per_line = 12;
				    break;
				default:
					break;
			}
			
			frmNumberSelections.split('-').each(function(n)
			{
			    
				if(n.length > 0)
				{
					n = n.replace(/,$/, "");
					var selectedLine = new Element('div',{className: 'selected-line'});
					var selectedLineList = new Element('ul', {className:line_class});
					selectedLineList.insert( new Element('li', {className: 'line-no'}).insert( new Element('span').update("Line "+line_count) ) );
					// new balls please
					var ball_count = 0;
					n.split(',').each(function(i){
						if(n.length > 0)
						{
							var ball_class='ball_'+i;
							if(frmGameMode == gmLotto)
							{
								ball_class='ball_'+i;
							}
							else if(frmGameMode == gmEuroMillions && ball_count > 4)
							{
								ball_class='star'; 
							}
							//for AON we need to add an extra class to the 7th ball
							else if(frmGameMode == gmAllOrNothing && ball_count == 6)
		                    {
		                        ball_class='ball';
		                        ball_class += " extra-margin-left";
		                    }
							else
							{
								ball_class='ball';
							}
							selectedLineList.insert( new Element('li', {className:ball_class}).update(i) );
							ball_count++;
						}
					})
					selectedLine.insert(selectedLineList);
					selectedLines.insert({top: selectedLine});
					line_count++;
				}
			});
		}
		
		$(args.dom_reset_picker).observe('click', resetPicker_Click.bind(this));

		var submitButton = $(args.submit_button);
		submitButton.observe('click', checkNumbers_Click.bind(this));
		SubmitAction = submitButton.onclick;
		submitButton.onclick = null;
	}
	
	function renderGameSelector() {
		var selector_container = new Element('div', {'id':'nsGameSelectorContainer'} );
		var selector = new Element('select', {'id':'nsGameSelector'});
		selector.insert( new Element('option', {'value':gmLotto}).update('Lotto') );
		selector.insert( new Element('option', {'value':gmEuroMillions}).update('EuroMillions') );
		selector.insert( new Element('option', {'value':gmMondayMillions}).update('Monday Million') );
		selector.insert( new Element('option', {'value':gmMillionaireRaffle}).update('Millionaire Raffle') );
		selector.insert( new Element('option', {'value': gmSweepstakes }).update('Sweepstakes'));
		selector.insert( new Element('option', {'value':gmAllOrNothing}).update('All or Nothing'));
		
		selector.value = frmGameMode;
		selector.observe( 'change', gameSelector_Change.bind(this) );
		selector_container.insert( selector );
		
		selector = new Element('select', {'id':'nsDateSpanSelector'});
		selector.insert(new Element('option', { 'value': '2', 'title': args.last_2_draws }).update(args.last_2_draws));
		selector.insert(new Element('option', { 'value': '8', 'title': args.last_8_draws }).update(args.last_8_draws));
		selector.insert(new Element('option', { 'value': '30', 'title': args.last_30_draws }).update(args.last_30_draws));
		selector.insert(new Element('option', { 'value': '31', 'title': args.all_draws }).update(args.all_draws));
		selector.value = frmDateSpan;
		selector.observe( 'change', function(){frmDateSpan = this.value;nsLog("DateSpan: "+frmDateSpan)} );
		selector_container.insert( selector );
		
		var nsHeader = new Element('div', {'id': 'nsHeader'});
		var help = new Element('p');
		help.update(args.select_draw_message);
		nsHeader.insert(help);

		nsHeader.insert(selector_container);

		var logo = new Element('img', {'id': 'nsGameLogo', 'src':'/images/bg_logo_loto1.jpg'});
		//selector.insert( logo );
		//nsHeader.insert(logo);
		
		container.insert( nsHeader );

	}
	
	function renderLottoNumberPicker() {
		nsLog("renderLottoNumberPicker");
		
		$('nsDateSpanSelector').show();
		
		//$('nsGameLogo').src = "/images/bg_logo_loto1.jpg";
		
		container.insert( new Element('p').update(args.generic_add_ball_instruction) );
		var balls = new Element('ul', { 'class': 'lottoballs'});
		
		for(var i=1;i<=45;i++)
		{
			balls.insert( new Element('li', {className: 'ball_'+i}).update(i) );
		}
		container.insert( balls );
		container.insert( new Element('div', {'id': 'nsFeedback'}) );
		
		selectorLine = new Element('ul', {'id': 'nsSelectedNumbersList', 'class': 'lottoballs'});
		var selectorLineContainer = new Element('div', {'id': 'nsSelectedNumbers'});
		selectorLineContainer.insert(selectorLine);
		container.insert(selectorLineContainer);
		selectedLines = new Element('div', {'id': 'nsSelectedLines'});
		container.insert(selectedLines);
		
		balls.observe('click', addLottoBall_Click.bind(this));
		selectorLine.observe('click', removeLottoBall_Click.bind(this));
		
		frmGameMode = gmLotto;
		$('nsDateSpanSelector').enable();
		line_count=1;
	}
	
	function renderEuroMillionsNumberPicker() {
		nsLog("renderEuroMillionsNumberPicker");
		
		$('nsDateSpanSelector').show();
		
		//$('nsGameLogo').src = "/images/bg_logo_loto4.jpg";
		container.insert(new Element('p').update(args.generic_add_ball_instruction));
		// Click on each ball you want to add, check as many lines as you want.
		var balls = new Element('ul', { 'class': 'lottoballs lottoballs_euro'});
		
		for(var i=1;i<=50;i++)
		{
			balls.insert( new Element('li', {className: 'ball'}).update(i) );
		}
		container.insert( balls );
		container.insert( new Element('div', {'id': 'nsFeedback'}) );
		
		selectorLine = new Element('ul', {'id': 'nsSelectedNumbersList', 'class': 'lottoballs lottoballs_euro'});
		var selectorLineContainer = new Element('div', {'id': 'nsSelectedNumbers'});
		selectorLineContainer.insert(selectorLine);
		container.insert(selectorLineContainer);
		selectedLines = new Element('div', {'id': 'nsSelectedLines'});
		container.insert(selectedLines);
		
		balls.observe('click', addLottoBall_Click.bind(this));
		selectorLine.observe('click', removeLottoBall_Click.bind(this));
		
		frmGameMode = gmEuroMillions;
		$('nsDateSpanSelector').enable();
		line_count=1;
	}
	
	function renderMondayMillionNumberPicker() {
		nsLog("renderMondayMillionNumberPicker");
		
		$('nsDateSpanSelector').show();
		
		//$('nsGameLogo').src = "/images/bg_logo_loto_mm.jpg";
		container.insert(new Element('p').update(args.generic_add_ball_instruction));
		// Click on each ball you want to add, check as many lines as you want.
		var balls = new Element('ul', { 'class': 'lottoballs lottoballs_monday'});
		
		for(var i=1;i<=39;i++)
		{
			balls.insert( new Element('li', {className: 'ball'}).update(i) );
		}
		container.insert( balls );
		container.insert( new Element('div', {'id': 'nsFeedback'}) );
		
		selectorLine = new Element('ul', {'id': 'nsSelectedNumbersList', 'class': 'lottoballs lottoballs_monday'});
		var selectorLineContainer = new Element('div', {'id': 'nsSelectedNumbers'});
		selectorLineContainer.insert(selectorLine);
		container.insert(selectorLineContainer);
		selectedLines = new Element('div', {'id': 'nsSelectedLines'});
		container.insert(selectedLines);
		
		balls.observe('click', addLottoBall_Click.bind(this));
		selectorLine.observe('click', removeLottoBall_Click.bind(this));

		frmGameMode = gmMondayMillions;
		$('nsDateSpanSelector').enable();
		line_count=1;
	}
	
	function renderAllOrNothingNumberPicker(){
	    nsLog("renderAllOrNothingNumberPicker");
	    
	    $('nsDateSpanSelector').show();
	    
	    //$('nsGameLogo').src = "/images/logo_loto_aon_nc.gif";
	    container.insert(new Element('p').update(args.generic_add_ball_instruction));
	    var balls = new Element('ul', {'class':'lottoballs lottoballs_allornothing-ballpicker'});
	    
	    for(var i=1;i<=24;i++)
	    {
	        balls.insert(new Element('li', {className: 'ball'}).update(i));
	    }
	    container.insert(balls);
	    container.insert(new Element('div', {'id':'nsFeedback'}));
	    
	    selectorLine = new Element('ul', {'id': 'nsSelectedNumbersList', 'class': 'lottoballs lottoballs_allornothing'});
	    var selectorLineContainer = new Element('div', {'id': 'nsSelectedNumbers'});
		selectorLineContainer.insert(selectorLine);
		container.insert(selectorLineContainer);
		selectedLines = new Element('div', {'id': 'nsSelectedLines'});
		container.insert(selectedLines);
		
		balls.observe('click', addLottoBall_Click.bind(this));
		selectorLine.observe('click', removeLottoBall_Click.bind(this));
		
		frmGameMode = gmAllOrNothing;
		$('nsDateSpanSelector').enable();
		line_count=1;
	}
	
	function renderMillionaireRaffleNumberPicker() {
		nsLog("renderMillionaireRaffleNumberPicker");
		//$('nsGameLogo').src = "/images/bg_logo_millionaire.jpg";
		container.insert(new Element('p').update(args.raffle_add_number_instruction));
		container.insert( new Element('div', {'id': 'nsFeedback'}) );

		if(frmRaffleID == "")
			frmRaffleID = MillRaffles[0].id;

		/* draw selector disabled
		var drawContainer = new Element('div', {'id':'nsDrawSelectorContainer'});
		drawContainer.insert( new Element('label').update('Draw: ') );

		var drawSelector = new Element('select', {'id':'nsDrawSelector'});
		MillRaffles.each(function(raff){
			drawSelector.insert( new Element('option', {'value':raff.id}).update(raff.name));
		});
		drawSelector.value = frmRaffleID;
		drawSelector.observe('change', function(){frmRaffleID = this.value;nsLog("RaffleID: "+frmRaffleID);});
		drawContainer.insert(drawSelector);

		container.insert(drawContainer);
		*/

		
		selectedLines = new Element('ul', {'id': 'nsRaffleNumbers'});
		container.insert(selectedLines);

		var ticket_entry_container = new Element('div', {'id':'nsTicketEntryContainer'});
		var ticket_no = new Element('input', {'type':'text', 'id':'nsRaffleTicketEntry'});
		ticket_no.observe('keyup', MillRaff_onKeyUp.bind(this));
		ticket_no.observe('keydown', MillRaff_onKeyDown.bind(this));
		ticket_entry_container.insert( ticket_no );
		
		var add_link = new Element('a', {'href':'#', 'title':'Add Raffle Number', 'id':'nsAddRaffleNumber'});
		add_link.update('+');
		add_link.observe('click', addRaffleNumber_Click.bind(this));
		ticket_entry_container.insert(add_link);
		container.insert(ticket_entry_container);

		frmGameMode = gmMillionaireRaffle;
		$('nsDateSpanSelector').disable();
		// frmRaffleID = MillRaffles[0].id;
		line_count=1;
		
		/**** Aaron - Removing Last n Draws ****/
		$('nsDateSpanSelector').hide();
	}

	function renderSweepstakesRaffleNumberPicker() {
	    nsLog("renderSweepstakesRaffleNumberPicker");
	    container.insert(new Element('p').update(args.sweepstakes_add_number_instruction));
	    container.insert(new Element('div', { 'id': 'nsFeedback' }));


	    selectedLines = new Element('ul', { 'id': 'nsSweepstakesRaffleNumbers' });
	    container.insert(selectedLines);

	    var ticket_entry_container = new Element('div', { 'id': 'nsSweepstakesTicketEntryContainer' });
	    var ticket_no = new Element('input', { 'type': 'text', 'id': 'nsSweepstakesTicketEntry' });
	    ticket_no.observe('keyup', Sweepstakes_onKeyUp.bind(this));
	    ticket_no.observe('keydown', Sweepstakes_onKeyDown.bind(this));
	    ticket_entry_container.insert(ticket_no);

	    var add_link = new Element('a', { 'href': '#', 'title': 'Add Sweepstakes Raffle Number', 'id': 'nsAddSweepstakesRaffleNumber' });
	    add_link.update('+');
	    add_link.observe('click', addSweepstakesNumber_Click.bind(this));
	    ticket_entry_container.insert(add_link);
	    container.insert(ticket_entry_container);

	    frmGameMode = gmSweepstakes;
	    $('nsDateSpanSelector').disable();
	    line_count = 1;

	    /**** Aaron - Removing Last n Draws ****/
	    $('nsDateSpanSelector').hide();
	}
	
	function addLottoBall_Click(e){
		//if the user didn't click on a ball then do nothing
		if(!e.findElement('li'))return;
		
		var ball_clicked = e.findElement('li').innerHTML;
		var ball_class = e.findElement('li').className;
		nsLog("addLottoBall_Click ("+ball_clicked+")");
		
		// init
		var line_class = '';
		var max_balls_per_line = 0;
		switch(frmGameMode)
		{
			case gmLotto:
				line_class='lottoballs';
				max_balls_per_line = 6;
				break;
			case gmEuroMillions:
				line_class='lottoballs lottoballs_euro';
				max_balls_per_line = 7;
				break;
			case gmMondayMillions:
				line_class='lottoballs lottoballs_monday';
				max_balls_per_line = 6;
				break;
			case gmAllOrNothing:
			    line_class = 'lottoballs lottoballs_allornothing';
			    max_balls_per_line = 12;
			default:
				break;
		}
		
		//get currently selected numbers
		var numsSelected = selectorLine.childElements();
		var numCount = 0;
		var insert = true;
		//check to see if number is already selected
		if(frmGameMode == gmEuroMillions)
		{
			numsSelected.each(function(el){
				if(numsSelected.length < 5 && numCount < 5)
				{
					if(el.innerHTML == ball_clicked){
						insert=false;
						$break;
					}
				}
				if(numsSelected.length >= 5 && numCount >= 5)
				{
					if(el.innerHTML == ball_clicked){
						insert=false;
						$break;
					}
				}
				numCount++;
			});
		}
		else
		{
			numsSelected.each(function(el){
				if(el.innerHTML == ball_clicked){
					insert=false;
					$break;
				}
				numCount++;
			});
		}
		if(!insert)
		{
		    feedback(args.number_already_selected_message);
			return;
		}
		if(frmGameMode == gmEuroMillions && numCount > 4 && parseInt(ball_clicked) > 9)
		{
			feedback(args.euromillions_stars_error_message);
			return;
		}

		//insert number		
		feedback('');
		if(frmGameMode == gmEuroMillions && numsSelected.length > 4) 
		{
			ball_class = "star";
		}
		
		if(frmGameMode == gmAllOrNothing && numsSelected.length == 6)
		{
		    ball_class += " extra-margin-left";
		}
		selectorLine.insert( new Element('li', {className:ball_class}).update(ball_clicked) );

		//get numsSelected again so item we just inserted is included
		numsSelected = selectorLine.childElements();
		//if there's MAX numbers selected then create a new selected line
		if(numsSelected.size() == max_balls_per_line){
			var selectedLine = new Element('div',{className: 'selected-line'});
			var selectedLineList = new Element('ul', {className:line_class});
			selectedLineList.insert( new Element('li', {className: 'line-no'}).insert( new Element('span').update("Line "+line_count) ) );
			numsSelected.each(function(el){
				selectedLineList.insert(el);
				frmNumberSelections += el.innerHTML + ',';
			});
			frmNumberSelections += '-';
			selectedLine.insert(selectedLineList);
			selectedLines.insert({top: selectedLine});
			//clear the selector line
			selectorLine.update('');
			line_count++;
			nsLog("Number Set Added");
		}
	}
	
	function removeLottoBall_Click(e){
		nsLog("removeLottoBall_Click");
		//if the user didn't click on a ball then do nothing
		if(!e.findElement('li'))return;
		
		feedback('');
		//remove the number from the line
		e.findElement('li').remove();
	}
	
	function feedback(s) {
		$('nsFeedback').update(s);
	}
	
	function resetPicker_Click() {
		nsLog("resetPicker_Click");
		if (frmGameMode != gmMillionaireRaffle && frmGameMode != gmSweepstakes)
			selectorLine.update('');
		selectedLines.update('');
		
		frmNumberSelections = "";
		line_count=1;
		feedback('');
		return false;
	}
	
	function MillRaff_onKeyUp(e)
	{
		if(e.keyCode == 13)
		{
			addRaffleNumber_Click(e);
			Event.stop(e);
			return;
		}
		var new_val = $('nsRaffleTicketEntry').value;
		var feedbackstr = '';
		if(new_val.match(/[^0-9]+/))
		{
			new_val = new_val.replace(/[^0-9]+/, "");
			feedbackstr = args.raffle_numbers_only_message;
		}
		if(new_val.length > 6)
		{
		    feedbackstr = args.raffle_max_6_digits_message;
			new_val = new_val.substr(0, 6);
		}
		$('nsRaffleTicketEntry').value = new_val;
		feedback(feedbackstr);
	}
	
	function MillRaff_onKeyDown(e)
	{
		if(e.keyCode == 13)
		{
			Event.stop(e);
		}
	}
	
	function addRaffleNumber_Click(e)
	{
		nsLog("addRaffleNumber_Click");
		addRaffleNumber();
		$('nsRaffleTicketEntry').focus();
	}
	
	function addRaffleNumber()
	{
		var val = $('nsRaffleTicketEntry').value;
		if(val.length == 0)
		{
			return;
		}
		var feedbackstr = "";
		var addNumber = true;
		var currentSelection = frmNumberSelections;
		currentSelection = currentSelection.replace(/-$/, "");
		currentSelection.split('-').each(function(n)
		{
			if(n == val)
			{
			    feedbackstr = args.number_already_selected_message;
				addNumber = false;
				return;
			}
			if(val <1 || val > 450000)
			{
			    feedbackstr = args.raffle_enter_valid_number_message;
			    addNumber = false;
			    return;
			}
		});
		if(addNumber)
		{
			frmNumberSelections += val+"-";
			var num = new Element('li');
			num.insert( new Element('span').update(val) );
			selectedLines.insert( num );
			nsLog("Number Added");
		}
		feedback(feedbackstr);
		$('nsRaffleTicketEntry').value = '';
		if(feedbackstr == '')
			return true;
		else
			return false;
    }


    function Sweepstakes_onKeyUp(e) {
        if (e.keyCode == 13) {
            addRaffleNumber_Click(e);
            Event.stop(e);
            return;
        }
        var new_val = $('nsSweepstakesTicketEntry').value;
        var feedbackstr = '';
        if (new_val.match(/[^0-9]+/)) {
            new_val = new_val.replace(/[^0-9]+/, "");
            feedbackstr = args.raffle_numbers_only_message;
        }
        if (new_val.length > 6) {
            feedbackstr = args.raffle_max_6_digits_message;
            new_val = new_val.substr(0, 6);
        }
        $('nsSweepstakesTicketEntry').value = new_val;
        feedback(feedbackstr);
    }

    function Sweepstakes_onKeyDown(e) {
        if (e.keyCode == 13) {
            Event.stop(e);
        }
    }

    function addSweepstakesNumber_Click(e) {
        nsLog("addSweepstakesNumber_Click");
        addSweepstakesNumber();
        $('nsSweepstakesTicketEntry').focus();
    }

    function addSweepstakesNumber() {
        var val = $('nsSweepstakesTicketEntry').value;
        if (val.length == 0) {
            return;
        }
        var feedbackstr = "";
        var addNumber = true;
        var currentSelection = frmNumberSelections;
        currentSelection = currentSelection.replace(/-$/, "");
        currentSelection.split('-').each(function(n) {
            if (n == val) {
                feedbackstr = args.number_already_selected_message;
                addNumber = false;
                return;
            }
            if (val < 1 || val > 200000) {
                feedbackstr = args.sweepstakes_enter_valid_number_message;
                addNumber = false;
                return;
            }
        });
        if (addNumber) {
            frmNumberSelections += val + "-";
            var num = new Element('li');
            num.insert(new Element('span').update(val));
            selectedLines.insert(num);
            nsLog("Number Added");
        }
        feedback(feedbackstr);
        $('nsSweepstakesTicketEntry').value = '';
        if (feedbackstr == '')
            return true;
        else
            return false;
    }
	
	
	function gameSelector_Change() {
		frmGameMode = $('nsGameSelector').value;
		frmNumberSelections = "";
		container.childElements().each( function(el) { 
			if(el.id!='nsHeader')
				el.remove();
		});
		switch(frmGameMode)
		{
			case 'Lotto':
				renderLottoNumberPicker();
				break;
			case 'EuroMillions':
				renderEuroMillionsNumberPicker();
				break;
			case 'MondayMillions':
				renderMondayMillionNumberPicker();
				break;
			case 'MillionaireRaffle':
				renderMillionaireRaffleNumberPicker();
				break;
            case gmSweepstakes:
                renderSweepstakesRaffleNumberPicker();
                break;
			case 'AllOrNothing':
			    renderAllOrNothingNumberPicker();
			    break;
		}
	}
	
	function checkNumbers_Click(e) {
		nsLog("checkNumbers_Click");

		Event.stop(e);

		var regex;
		if(frmGameMode == gmMillionaireRaffle)
		{
			// check the number input, if there's numbers in it, add them to the list and continue
			if($('nsRaffleTicketEntry').value != '')
			{
				if(!addRaffleNumber())
				{
					return;
				}
			}
			regex = new RegExp("^([0-9]+-)+");
        }
        else if (frmGameMode == gmSweepstakes) {
            // check the number input, if there's numbers in it, add them to the list and continue
            if ($('nsSweepstakesTicketEntry').value != '') {
                if (!addSweepstakesNumber()) {
                    return;
                }
            }
            regex = new RegExp("^([0-9]+-)+");
        } else if (frmGameMode == gmAllOrNothing) {
		    regex = new RegExp("^(([0-9]{1,2},){6,12}-)+");
		} 
		else {
			regex = new RegExp("^(([0-9]{1,2},){6,7}-)+");
		}
		if(frmNumberSelections.match( regex ))
		{
			nsLog("Firing Submit Action");
			$(args.dom_game_mode).value = frmGameMode;
			$(args.dom_date_span).value = frmDateSpan;
			$(args.dom_number_selections).value = frmNumberSelections;
			$(args.dom_raffle_id).value = frmRaffleID;
			$(args.dom_sweepstakes_id).value = frmSweepstakesID;
			nsLog(
				"&nbsp;&nbsp;&nbsp;&nbsp;GameMode: " +$(args.dom_game_mode).value+"\n<Br/>"+
				"&nbsp;&nbsp;&nbsp;&nbsp;DateSpan: " +$(args.dom_date_span).value+"\n<Br/>"+
				"&nbsp;&nbsp;&nbsp;&nbsp;NumberSelections: " +$(args.dom_number_selections).value+"\n<Br/>"+
				"&nbsp;&nbsp;&nbsp;&nbsp;RaffleID: " +$(args.dom_raffle_id).value
			);
			if(!debug || confirm('Do postback?'))
			{
				$(args.submit_button).stopObserving('click');
				$(args.submit_button).observe('click', SubmitAction.bind(this));
				setTimeout("$('"+args.submit_button+"').click();", 0);
			}
		} else {
			nsLog("Invalid NumberSelections: '"+frmNumberSelections+"'");
			feedback("Please enter some numbers");
		}
	}
	
	function nsLog(str)
	{
		if(!debug) return;
		if(window.console != null)
		{
			console.log(str);
		}
		if($('console_div') != null)
		{
			if($('console_div').innerHTML == "")
			{
				var clearLink = new Element('a', {'href':'#', 'style': 'font-size: 1.5em;'});
				clearLink.update('Reset Console');
				clearLink.observe('click', function(){
					$('console_div').replace( new Element('div', {'id':'console_div'}))
				} );
				$('console_div').insert(clearLink).insert( new Element('br'));
				$('console_div');
			}
			$('console_div').insert(str+"\n").insert( new Element('br'));
		}
	}
}
