/* Main CA$H OUT script */

// Default Configurations

min_price = new Array();
max_price = new Array();

min_price['easy'] = 5;
max_price['easy'] = 100;

min_price['medium'] = 1000;
max_price['medium'] = 10000;

min_price['hard'] = 500000;
max_price['hard'] = 1500000;


// Variable Initialization
game_over = 1;
change_given = 0;

function initialize_game() {

	game_over = 0;
	player_score = 0;
	change_given = 0;
	difficulty = 'easy';
	change = new Array();
	
}


function setup_game() {
	
	initialize_game();
	write_to_element('main', setup_screen);

}


function new_game() {
	if (game_over == 1) {
		setup_game();
	} else {
		if (confirm('A game is in progress.  Are you sure you want to start over?')) {
			clearTimeout(game_timeout);
			game_over = 1;
			setup_game();
		}
	}
}


function start_game() {

	difficulty = get_field_value_by_name('difficulty');
	display_hints = get_field_value_by_name('displayhints');
	show_change = get_field_value_by_name('showchange');

	write_to_element('main', game_screen);

	prepare_bank();

	update_score();

	game_time = game_time_limit * 60;
	do_game_timer();

	next_customer();

}

function prepare_bank() {

	var i = 0;
	
	var bank = '';
	
	for (i = 0; i < money['labels'].length; i++) {
	
		if (money['values'][i] < max_price[difficulty]) {
		
			bank += '<a href="#" onclick="add_to_change(' + i + '); return false;" title="' + money['labels'][i] + ' - Add to change"><img src="' + money['images'][i] + '" border="0"></a>';
		
		}
	
	}
	
	write_to_element('register', bank);

}

function display_change() {
	
	var change_display = '';
	var i = 0;
	
	for (i = 0; i < change.length; i++) {
		
		this_index = change[i];
		change_display += '<a href="#" onclick="remove_from_change(' + i + '); return false;" title="' + money['labels'][this_index] + ' - Remove from change"><img src="' + money['images'][this_index] + '" border="0"></a>';
	
	}
	
	write_to_element('change', change_display);

}

function add_to_change(index) {
	
	change[change.length] = index;
	display_change();

}

function remove_from_change(index) {

	new_array = new Array();
	for (var i =  0; i < change.length; i++) {
		if (i != index) {
			new_array[(new_array.length)] = change[i];
		}
	}

	change = new Array();
	for (h = 0; h < new_array.length; h++) {
		change[h] = new_array[h];
	}
	
	display_change();
	
}


function next_customer() {

	change_given = 0;

	var next_cust = random_element(customers);

	var next_item = random_number(0, (items[difficulty]['images'].length - 1));

	change = new Array();
	display_change();
	payment = max_price[difficulty];
	cost = random_number(min_price[difficulty], max_price[difficulty]);
	change_needed = payment - cost;

	dialogue = ''
	+ '<p>I would like to buy this <strong>' + items[difficulty]['labels'][next_item] + '</strong>.'
	+ ' It costs <strong>' + money_format(cost) + '</strong>.'
	+ ' I\'ll give you <strong>' + money_format(payment) + '</strong>.</p>'
	+'';
	
	if (show_change == 'yes') {
		dialogue += ''
		+ '<p><big>You owe me <strong>' + money_format(change_needed) + '</strong></big></p>'
		+ '';
	}
		
	swap_image('customer_image', next_cust);

	var item_image = '<img src="' + items[difficulty]['images'][next_item] + '" id="item_image" border="0" alt="Item">';
	//swap_image('item_image', items[difficulty]['images'][next_item]);
	
	write_to_element('item',item_image);
	write_to_element('conversation',dialogue);

}

function check_change() {

	var change_error = 0;
	
	change_error = change_needed - count_change();

	if (change_given == 1) {
		return;
	}

	if (change_error == 0) {
	
		change_given = 1;
	
		player_score++;
		
		update_score();
	
		response = ''
		+ '<p style="font-weight: bold; color: #009900;">Thank you very much!  Have a nice day!</p>'
		+ '<p style="text-align: center;"><input type="button" value="Next Customer" title="Attend to the next customer" onclick="next_customer();"></p>'
		+ '';
				
	} else {
	
		response = ''
		+ '<p style="font-weight: bold; color: #990000;">That is not the correct change!</p>'
		+ '';
		
		if (show_change == 'yes') {
			response += ''
			+ '<p><big>You owe me <strong>' + money_format(change_needed) + '</strong></big></p>'
			+ '';
		} else {
			response += dialogue;
		}
		
		if (display_hints == 'yes') {
			
			if (change_error > 0) {
				response += ''
				+ '<p>You need to give me <strong>' + money_format(Math.abs(change_error)) + '</strong> more.</p>'
				+ '';
			} else {
				response += ''
				+ '<p>You gave me <strong>' + money_format(Math.abs(change_error)) + '</strong> too much.</p>'
				+ '';
			}
			
		}
	}

	write_to_element('conversation', response);
	
}

function count_change() {

	var i = 0;
	
	var total = 0;

	for (i = 0; i < change.length; i++) {
	
		this_index = change[i];
		
		total += money['values'][this_index];
	
	}
	
	return total;

}

function update_score() {

	write_to_element('score', player_score);

}

function end_game() {

	game_over = 1;
	clearTimeout(game_timeout);
	write_to_element('timer', '');
	write_to_element('registertop', '<img src="images/spacer.gif" width="25" height="150">');
	swap_image('customer_image', 'images/boss.gif');	
	swap_image('item_image', 'images/spacer.gif');	

	var win_screen = ''
	+ '<p>You did an excellent job.  You sold <strong>' + player_score + ' items</strong> before closing.</p>'
	+ '';

	if (show_change != 'yes' && display_hints != 'yes') {
		win_screen += ''
		+ '<p>I\'m going to give you a raise!  See you tomorrow!</p>'
		+'';
	} else {
		win_screen += ''
		+ '<p>Next time, try without the customers helping you so much!</p>'
		+'';
	} 
	
	win_screen += ''
	+ '<p style="text-align: center;"><input type="button" value="Play Again?" title="Click this button to play again." onclick="new_game();"></p>'
	+ '';

	write_to_element('conversation',win_screen);

}

function format_time(time) {
	
	var display_time = '';
	
	var minutes = Math.floor(time/60);
	var seconds = time % 60;

	if (minutes.toString().length == 1) { minutes = '0' + minutes; }
	if (seconds.toString().length == 1) { seconds = '0' + seconds; }

	display_time = minutes + ':' + seconds;
	
	return display_time;

}


function do_game_timer() {

	var display_time = format_time(game_time);
	write_to_element('timer', display_time);

	game_time -= 1;

	if (game_time < 0) {
	
		end_game();
		
	} else {
	
		game_timeout = setTimeout("do_game_timer();", 1000);
	
	}
	
} 

