﻿var the_game;

var fish=new Array("navi","learnnavi.org");

Event.observe(window, 'load', function() {
	check_location();
	if(php_here!="vocab" && php_flags[0]==true) { // Don't be redundantly redundant.
		$$(".navi").each(function(s) {
			s.writeAttribute({
				'title': 'Look up "'+navi_alphabet(s.innerHTML)+'"'
			});
			Event.observe(s, 'dblclick', function(event) {
				Event.stop(event);
				ilink("/navi-vocabulary/#"+navi_alphabet(s.innerHTML));
			});
		});
	}
	
	$$("a.out").each(function(s) {
		s.writeAttribute({
			'target': '_blank'
		});
		Event.observe(s, 'click', function(event) {
			pageTracker._trackPageview('/out/'+s.href);
		});
	});
	$$("a.mailman").each(function(s) {
		e=fish.join("@");
		s.writeAttribute({
			'href': 'mailto:'+e+'?subject=Learn Na\'vi website',
			'target': '_blank'
		});
		s.update(e);
		Event.observe(s, 'click', function(event) {
			pageTracker._trackPageview('/out/emailme');
		});
	});
	Event.observe($('recommended-off'), 'click', function(event) {
		new Ajax.Request("/?rec=0",{method:'get'});
		Effect.BlindUp('recommendation');
	});
	
	if($('vocaboptions')) {
		$$('#vocaboptions input:not([type=text])').each(function(s) {
			Event.observe(s, 'change', function(event) {
				load_vocab();
			});
		});
		if($('search')) Event.observe($('search'), 'keypress', function(event) {
			search_delay(this);
		});
		if($('clearsearch')) Event.observe($('clearsearch'), 'click', function(event) {
			$('search').value='';
			load_vocab();
		});
	}
	Event.observe($('killbutton'), 'click', function(event) {
		Effect.toggle('newsletter_popup','appear');
	});
	$$('.mailer_input').each(function(s) {
		Event.observe(s, 'focus', function(event) {
			rid=s.id+"_required";
			if($F(s)==s.defaultValue) s.value='';
			if($(rid)) $(rid).hide();
			$('mailerinfo').update("&nbsp;");
		});
		Event.observe(s, 'blur', function(event) {
			if($F(s).empty()) s.value=s.defaultValue;
		});
	});
	Event.observe($('newsletter_ad'), 'click', function(event) {
		pageTracker._trackPageview('/out/newsletter_click');
		Effect.toggle('newsletter_popup','appear');
	});
	Event.observe($('ml_form'), 'submit', function(event) { // validate form
		Event.stop(event);
		mailinglist();
	});
	//init_audio_buttons();

	
	/* pardon my notes here
	$$("h2").each(function(s) {
		content=s.innerHTML;
		newcontent=new Element('a', {
			href: '#'+char_section(content),
			id: char_section(content)
		})
		.update(content);
		s.update(newcontent);
	});
	*/
	
	//quickview();
	
});

function audio_button(s) {
	if(myListener.isPlaying == "true") stop();
	if(s.hasClassName('playing')) {
		stop(s);
	} else {
		play(s);
	}
}

function init_audio_buttons() {
	if($("flashplayer")) {
		$$(".playercontrol").each(function(s) {
			Event.observe(s, 'click', function(event) {
				if(myListener.isPlaying == "true") stop();
				if(s.hasClassName('playing')) {
					stop(s);
				} else {
					play(s);
				}
			});
		});
	}
}


// Audio player functions
var myListener = new Object();

myListener.onInit = function() {
	this.position = 0;
};

myListener.onUpdate = function() {
	var isPlaying = (this.isPlaying == "true");
	if(!isPlaying) {
		$$(".playing").each(function(s) {
			stop(s);
		});
	}
};

function play(id) {
	id.update("&#9632;");
	id.addClassName("playing");
	if (myListener.position == 0) {
		$('flashplayer').SetVariable("method:setUrl", "http://www.archive.org/download/NaviWordsnoEnglish/"+id.title+".mp3");
	}
	$('flashplayer').SetVariable("method:play", "");
	$('flashplayer').SetVariable("enabled", "true");
}

function stop(id) {
	if(id){
		id.update("&#9658;");
		id.removeClassName("playing");
	}
	$('flashplayer').SetVariable("method:stop", "");
}

function search_delay(element) {

	// Create a function to get the search results
	var func = function() { load_vocab(); };

	// Check to see if there is already a timeout and if so...
	// ...cancel it and create a new one
	if ( element.zid ) {
		clearTimeout(element.zid);
	}
	element.zid = setTimeout(func,1000);
	//alert(element);
}


// we less than three ajax.
function load_vocab(){
	info=$('ajaxloading');
	if(info.hasClassName('hidden')) info.removeClassName('hidden');
	info.update("Loading "+$('dic_lang').value+" dictionary")
	
	var myAjax = new Ajax.Updater('vlist', '/load_vocab.php', {
		method: 'get',
		onSuccess: function(){
			info.addClassName('hidden');
			/*
			$$("#vocabinfo span")[3].update( ($F('search').empty()) ? "" : ", searching for '"+$F('filter')+"'");
			$$("#vocabinfo span")[0].update($F('cols')=="on" ? "two columns" : "in a single column");
			$$("#vocabinfo span")[1].update($F('cats')=="on" ? "first categorically, then alphabetically" : "alphabetically");
			$$("#vocabinfo span")[2].update($F('sort')=="en" ? "English" : "Na'vi");
			*/
		},
		onFailure: function(){
			info.update("Something broke :(")
		},
		parameters: {
			dic_lang: $F('dic_lang'),
			order_navi: $F('order_navi'),
			search: $F('search')
		}
	});
	//init_audio_buttons();
}

//add to mailinst list
function mailinglist() {
	info=$('mailerinfo');
	output="";
	if($('ml_name') && $('ml_email')) {
		ml_name=$F('ml_name');
		ml_email=$F('ml_email');
		if(ml_name.empty() || ml_email.empty()) {
			if(ml_name.empty()) output+="Name Required. ";
			if(ml_email.empty()) output+="Email required.";
		} else { //huzzah!
			new Ajax.Request('/',
			{
				parameters: ['name', '', '', ''],
				onSuccess: function(transport){
					var response = transport.responseText || "no response text";
					info.update(response);
				},
				onFailure: function(){
					info.update("Something broke :(")
				},
			});
		}
	}
	info.update(output);
}

function ilink(l) {
	location.replace(php_siteurl+l);
}


function check_location() {
	arr=location.href.split(/#/);
	if (arr[1]) { // a section (#) was found
		rep=arr[1];
		re=arr[1].replace(/q/,"");
		//document.write(re);
		if(re=="downloadables"){
			ilink("downloads/");
		}
	}
}


//to lower case, strip html, strip useless characters, replace {ä,ì} with {a,i}
function navi_alphabet(str) {
	return str.toLowerCase().replace(/(<([^>]+)>)/ig,"").replace(/[^\d\w[\t]\ä\ì]/g,'').replace(/ä/g,'a').replace(/ì/g,'i').replace("'",'');
	//return str.toLowerCase().replace(/(<([^>]+)>)/ig,"").replace(/[^\d\w[\t]\ä\ì]/g,'');
}

//to lower case, strip html, non-alphanumeric becomes "-"
function char_section(str) {
	return str.toLowerCase().replace(/(<([^>]+)>)/ig,"").replace(/[^\w]/g,'-');
}


// Coming soon, perhaps maybe.
function quickview(s) {
	q = $("quickview") ? $("quickview") : new Element('div', { 'id': 'quickview', 'style': 'display:none;' }).update("Loading");
	if(s) {
		q.update(s);
	} else {
		q.hide();
	}
}

// Mailing list. AJAX.
function mailinglist() {
	info=$('mailerinfo');
	output="";
	if($('ml_name') && $('ml_email')) {
		ml_name=($F('ml_name')==$('ml_name').defaultValue) ? "" : $F('ml_name');
		ml_email=($F('ml_email')==$('ml_email').defaultValue) ? "" : $F('ml_email');
		if(ml_name.empty() || ml_email.empty()) {
			if(ml_name.empty()) {
				$('ml_name_required').show();
				output+="Name Required. ";
			}
			if(ml_email.empty()) {
				$('ml_email_required').show();
				output+="Email required.";
			}
			info.update(output);
		} else { //huzzah!
			info.update("Submitting...");
			new Ajax.Request('/',
			{
				parameters: {name: $F('ml_name'), email: $F('ml_email')},
				onSuccess: function(transport){
					var response = transport.responseText || "Thanks!";
					info.update(response);
					$('ml_name').value="";
					$('ml_email').value="";
					setTimeout(function () {
						Effect.toggle('newsletter_popup','appear');
					}, 1500);
				},
				onFailure: function(transport){
					var response = transport.responseText || "Something broke :(";
					info.update(response);
				},
			});
		}
	}
}
