/* copyright Tomas Young 2008 */

document.onmousemove = mouseMove;

var mouseX = 0;
var mouseY = 0;
var dragObj = null;

var selected_pick = -1;
var selected_bin = -1;

var game_use_fun = true;

var game_sz = 0;
var game_num_choices = 0;
var game_num_bins = 0;
var game_correct_pick = -1;
var game_correct_item = -1;
var game_correct_bin = -1;

var game_iitag = "";
var game_sstag = "";

// index 0: question
// index 1: correct
// index 2: wrong
var game_iifile = new Array;  // 3
var game_ssfile = new Array;  // 3
var game_delay = new Array;  // 3

var game_ifile = new Array;  // game1_sz
var game_sfile = new Array;  // game1_sz

var game_itag = new Array;  // game1_num_choices
var game_choiceX = new Array;  // game1_num_choices
var game_choiceY = new Array;  // game1_num_choices

var game_picks = new Array;  // game1_num_choices

var binName = new Array;
var binX0 = new Array;
var binX1 = new Array;
var binY0 = new Array;
var binY1 = new Array;
var binSound = new Array;
var game_level = new Array;
var game_total = new Array;

function mouseMove(e) {
    if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	mouseX = window.event.clientX;
	mouseY = window.event.clientY;
    }
    else {
	mouseX = e.clientX;
	mouseY = e.clientY;
    }
    if(dragObj != null && clickLock == false) {
	dragObj.style.left = mouseX-10;
	dragObj.style.top = mouseY-5;
    }
}

function mouseClick(id,n) {
    if(dragObj == null) {
	dragObj = document.getElementById(id);
	selected_pick = n;
    }
    else {
	selected_bin = -1;
	for(i = 0; i < game_num_bins; i++) {
	    if(mouseX >= binX0[i] && mouseX <= binX1[i] && 
	       mouseY >= binY0[i] && mouseY <= binY1[i]) {
		selected_bin = i;
		break;
	    }
	}
	// window.status = selected_bin;
	game_pick_action();
	dragObj = null;
    }
}

var intro_loop = 0;
var game_num_intros = 0;
var game_intro_i = new Array;
var game_intro_s = new Array;
var game_intro_d = new Array;
var post_intro_cnt = 0;

function game_init() {
    game_sz = 0;
    game_num_choices = 0;
    game_num_bins = 0;
    game_correct_pick = -1;
    game_correct_bin = -1;
    game_num_intros = 0;
    intro_loop = 0;
    post_intro_cnt = 0;
}

function game_add_intro(ifile,sfile,d) {
    game_intro_i[game_num_intros] = ifile;
    game_intro_s[game_num_intros] = sfile;
    game_intro_d[game_num_intros] = d;
    game_num_intros++;
}

function game_add_item(ifile,sfile) {
    game_ifile[game_sz] = ifile;
    game_sfile[game_sz] = sfile;
    game_sz++;
}

function game_add_choice(itag) {
    game_itag[game_num_choices] = itag;
    game_choiceX[game_num_choices] = document.getElementById(itag+"-st").style.left;
    game_choiceY[game_num_choices] = document.getElementById(itag+"-st").style.top;
    game_num_choices++;
}

function game_add_bin(name,x0,x1,y0,y1,sfile) {
    binName[game_num_bins] = name;
    binX0[game_num_bins] = x0;
    binX1[game_num_bins] = x1;
    binY0[game_num_bins] = y0;
    binY1[game_num_bins] = y1;
    binSound[game_num_bins] = sfile;
    game_level[game_num_bins] = 0;
    game_total[game_num_bins] = 0;
    game_num_bins++;
}

var game_say_cnt = 0;

function game_say_pick() {
    if(game_say_cnt == 0) {
	document[game_ii2tag].src = "teacher talk.gif";
	Sin(game_sstag,binSound[game_correct_bin]);
	game_say_cnt++;
	if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	    setTimeout('game_say_pick()',970);
	}
	else {
	    setTimeout('game_say_pick()',1200);
	}
    }
    else if(game_say_cnt == 1) {
	game_say_cnt++;
	Sin(game_sstag,game_sfile[game_correct_item]);
	if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	    setTimeout('game_say_pick()',950);
	}
	else {
	    setTimeout('game_say_pick()',1000);
	}
    }
    else {
	game_say_cnt = 0;
	document[game_ii2tag].src = "teacher smile.gif";
	setTimeout('unlockClick()',450);
    }
}

function game_start() {
    if(game_num_intros > 0 && intro_loop < game_num_intros) {
	lockClick();
	if(game_intro_s[intro_loop] != "") {
	    Sin(game_sstag,game_intro_s[intro_loop]);
	}
	document[game_iitag].src = game_intro_i[intro_loop];
	document[game_ii2tag].src = "teacher talk.gif";
	if(intro_loop == 2 || intro_loop == 5) {
	    document["basket1-i"].src = "basket.gif";
	    document["basket0-i"].src = "basket flash.gif";
	}
	else if(intro_loop == 3 || intro_loop == 6) {
	    document["basket0-i"].src = "basket.gif";
	    document["basket2-i"].src = "basket flash.gif";
	}
	else if(intro_loop == 4 || intro_loop == 7) {
	    document["basket2-i"].src = "basket.gif";
	    document["basket1-i"].src = "basket flash.gif";
	}
	else if(intro_loop == 8) {
	    document["basket1-i"].src = "basket.gif";
	}
	setTimeout('game_start()',game_intro_d[intro_loop]);
	intro_loop++;
	return;
    }
    Iin("prompt-i","prompt click drag.gif");
    lockClick();
    document[game_iitag].src = "teacher stand.gif";
    if(post_intro_cnt == 0) {
	post_intro_cnt++;
	document[game_ii2tag].src = "teacher smile.gif";
	setTimeout('game_start()',1000);
    }
    else {
	if(game_correct_pick < 0) {
	    for(i = 0; i < game_num_choices; i++) {
		var already_used = false;
		var loopcnt = 0;
		do {
		    already_used = false;
		    n = Math.floor(Math.random()*game_sz);
		    if(n == game_sz) {
			n--;
		    }
		    for(j = 0; j < i; j++) {
			if(n == game_picks[j]) {
			    already_used = true;
			    break;
			}
		    }
		    loopcnt++;
		} while(already_used && loopcnt < 10);
		game_picks[i] = n;
		document[game_itag[i]+"-i"].src = game_ifile[n];
		document.getElementById(game_itag[i]+"-st").style.left = game_choiceX[i];
		document.getElementById(game_itag[i]+"-st").style.top = game_choiceY[i];
	    }
	    game_correct_pick = Math.floor(Math.random()*game_num_choices);
	    game_correct_item = game_picks[game_correct_pick];
	    if(game_correct_pick == game_num_choices) {
		game_correct_pick--;
	    }
	    game_correct_bin = Math.floor(Math.random()*game_num_bins);
	    if(game_correct_bin == game_num_bins) {
		game_correct_bin--;
	    }
	    // window.status = game_correct_pick+":"+game_correct_bin;
	}
	game_say_pick();
    }
}

var game_pot_x = new Array;
var game_pot_y = new Array;
var butterfly_pot = -1;
var butterfly_x = 0;
var butterfly_y = 0;

function fly_butterfly() {
    var obj = document.getElementById("butterfly"+butterfly_pot+"-st");
    obj.style.left = butterfly_x;
    obj.style.top = butterfly_y;
    if(butterfly_x > game_pot_x[butterfly_pot] || butterfly_y < game_pot_y[butterfly_pot]) {
	butterfly_x -= 3;
	butterfly_y += 3;
	setTimeout('fly_butterfly()',200);
    }
    else {
	document["butterfly"+butterfly_pot+"-i"].src = "butterfly sit 3.gif";
    }
}

function game_pick_action() {
    if(clickLock == true) {
	return;
    }
    lockClick();
    var d = 0;
    if(selected_bin == game_correct_bin && selected_pick == game_correct_pick) {
	if(game_level[game_correct_bin] == 0 && game_total[game_correct_bin] > 0) {
	    document["butterfly"+game_correct_bin+"-i"].src = "blank.gif";
	    document["pot"+game_correct_bin+game_total[game_correct_bin]+"-i"].src = "pot8.gif";
	}
	document[game_iitag].src = "teacher thumbs up.gif";
	document[game_ii2tag].src = "teacher talk.gif";
	Sin(game_sstag,game_ssfile[0]);
	if(game_level[game_correct_bin] == 7) {
	    butterfly_pot = game_correct_bin;
	    var obj = document.getElementById("butterfly"+butterfly_pot+"-st");
	    butterfly_x = game_pot_x[butterfly_pot] + 50;
	    butterfly_y = game_pot_y[butterfly_pot] - 50;
	    obj.style.left = butterfly_x;
	    obj.style.top = butterfly_y;
	    document["butterfly"+butterfly_pot+"-i"].src = "butterfly fly.gif";
	    fly_butterfly();
	}
	else {
	    document[binName[game_correct_bin]].src = "pot"+(game_level[game_correct_bin]+2)+".gif";
	}
	game_level[game_correct_bin] = (game_level[game_correct_bin] + 1) % 8;
	if(game_level[game_correct_bin] == 0) {
	    game_total[game_correct_bin]++;
	}
    }
    else {
	document[game_iitag].src = "teacher think.gif";
	document[game_ii2tag].src = "teacher talk.gif";
	Sin(game_sstag,game_ssfile[1]);
	document.getElementById(game_itag[selected_pick]+"-st").style.left = game_choiceX[selected_pick];
	document.getElementById(game_itag[selected_pick]+"-st").style.top = game_choiceY[selected_pick];
    }
    if(selected_bin == game_correct_bin && selected_pick == game_correct_pick) {
	game_correct_pick = -1;
	game_correct_bin = -1;
	d = game_delay[0];
    }
    else {
	d = game_delay[1];
    }
    setTimeout("game_start()",d);
}

