/* 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);



	// high score items

	level = difficulty + '-' + show_change + '-' + display_hints;

	score = player_score;

	send_score_check(game, level, score);



}



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);

	

	}

	

} 



