//Prep the langauge list
var startmode = true;
var hastxt = false;
var addmode = false;
var lc=[], idx={},rdx={};
var active={};
var itimer;
var forcefrom='';
var clip;


$(function(){
	

	
	$(window).resize(doresize);
	doresize();
	
	getLanguagesForTranslate('langlist');
	
	$('#addTranButn').click(function(){
		if (!addmode) {
			addmode=true;
		} else {
			addmode=false;
		}
		dotranslate();
	});
	
	$('#itxt').keydown(function(e){
		clearTimeout(itimer);
		if (!hastxt) {
			hastxt = true;
			$('#itxt').val('');
		}
	});
	$('#itxt').keyup(function(e){
		
		clearTimeout(itimer);
		if (/*e.keyCode==32 || */e.keyCode==13) { // Space bar or enter
			dotranslate();
		} else {
			itimer = setTimeout(dotranslate, 500);
		}
	});
	
	$('#aboutButn')
		.click(function(){
			dialog.showThis('about');
			return false;
		});
	
	dotranslate();
});

function doresize() {
	if ($(document).width()<=550) {
		$('.ad2, .hugr').hide();
		$('.hugl').css({width:'100%'});
		$('#content-main').css({marginRight: '0'});
	} else {
		$('.ad2, .hugr').show();
		$('.hugl').css({width:'50%'});
		$('#content-main').css({marginRight: '190px'});
	}
}
	
function dotranslate(){	
	if ($('#itxt').val()=='') {
		hastxt=false;	
	}
	
	activecount=0;
	for (var n in active) {
		if (active[n]) {
			activecount++;
		}
	}
	if (!activecount) {
		hastxt=false;
		startmode=true;	
	} 
	
	if (addmode) {
		$('#addTranButn').text('done');
		$('.ibar').slideUp('normal');
		$('.tlangs').slideDown('normal');
	} else {
		$('#addTranButn').text('add translators');
		$('.tlangs').slideUp('normal');
		$('.ibar').slideDown('normal');
	}
	
	if (!startmode) {
		$('#itxt').attr({disabled: false});
		$('#startHere').hide();
		$('.langarrow').hide();
		
	} else {
		$('#itxt').attr({disabled:true});
		$('#startHere').show();
		$('.langarrow').show();
	}
	
	
	if (!hastxt) {
		$('.translations').hide();
		$(".middleColumn, .rightColumn, .tips").fadeIn();
		if (!startmode) {
			$('#itxt').val('Just start typing here. NiceTranslator will do the rest.');
		} else {
			$('#itxt').val('Add a translator then start typing here. Nice Translator will do the rest.');
		}
	} else {
		$(".middleColumn, .rightColumn, .tips").hide();
		$('.translations').fadeIn();
		if (activecount > 5) {
			$('.ad1').hide();
		} else {
			$('.ad1').show();
		}
		for (var n in active) {
			if (active[n]){
				translateArray([$('#itxt').val()],n,forcefrom,'didtranslate',{State:n});
			}
		}
	}
}

function didtranslate(r){
	var ln=r[0].State;
	var txt=r[0].TranslatedText;
	var from=r[0].From;
	if ($('.selectedlang').hasClass('auto')){
		$('.selectedlang').empty().append($('<h4>'+rdx[from]+'</h4><h6>auto-detected</h6>'));
	}
	$('#tx'+ln+' .txtxt').text(txt);
	$('#tx'+ln).show();

}
	
function fixname(n){
	lcodes =n;
	if (n == "Chinese Simplified") {
		idx["Chinese | S"]=idx["Chinese Simplified"];
		return "Chinese | S";
	} else if (n == "Chinese Traditional") {
		idx["Chinese | T"]=idx["Chinese Traditional"];
		return "Chinese | T";
	} else if (n == "Haitian Creole") {
		idx["Creole"]=idx["Haitian Creole"];
		return "Creole";
	} else {
		return n;
	}
}
function langnames(r){
		
	for (var i=0; i<r.length; i++){
		idx[r[i]]=lc[i]
		rdx[lc[i]]=r[i];
		active[lc[i]]=false
	}
		
	var l = "";
	for (var i=0; i<r.length; i++){
		l+='<a class="'+lc[i]+'">'+fixname(r[i])+'</a>';
	}
		
	$('.tlangs').hide().append(l);
	$('.tlangs a').click(langclick);
		
	$('.atran').hide().append(l);
	$('.atran a').hide().click(rmclick);
	
	$('.srclangs').append(l);
	$('.srclangs a').hide().click(srclangclick);
	$('#srclang').mouseover(function(){$('.srclangs a').show()});
	$('#srclang').mouseout(function(){$('.srclangs a').hide()});
	
	$('.atran').show();
	$('.srclangs').show();
	
	for (var i=0; i<r.length; i++){
		$('.translations').hide().append($('<div class="txwrap" id="tx'+lc[i]+'"><div class="txname">'+r[i]+': <img src="images/copy.png" class="copy" id="copy'+lc[i]+'"/></div><div class="txtxt"></div></div>').hide());
	}
	$('.copy').mouseover(function(e){
		id = e.target.id.substr(4); 
		var box = getDOMObjectPosition(e.target);
		$("#clippy").css({top:box.top, left:box.left});
		$("#clippy")[0].setText( $('#tx'+id+' .txtxt').text() );
	});
	
}	
function  langlist(r){
	lc=r;
	getlanguageNames(r,'langnames');
}
	
function langclick(e){
	var id= idx[e.target.innerHTML];
	active[id]=true;
				
	if (startmode) startmode=false;
				
	$('.tlangs .'+id).fadeTo('fast','0.5');
	$('.atran .'+id).fadeIn('fast');
	
	dotranslate();
}
function rmclick(e) {
	var id= idx[e.target.innerHTML];
	active[id]=false;
			 
	$('.atran .'+id).fadeOut('fast');
	$('.tlangs .'+id).fadeTo('fast','0.91');
	$('#tx'+id).fadeOut('fast');
	
	dotranslate();
}
function srclangclick(e){
	if (e.target.innerHTML == 'Auto-detect') {
		forcefrom='';
		$('.selectedlang').text("Auto-detect").addClass('auto');
	} else {
		forcefrom = idx[e.target.innerHTML];
		$('.selectedlang').text(e.target.innerHTML).removeClass('auto');
	}
	$('.srclangs a').css({fontWeight:'normal'});
	$(e.target).css({fontWeight:'bold'});
	
	dotranslate();
}

function getDOMObjectPosition(obj, stopObj) {
	// get absolute coordinates for dom element
	var info = {
		left: 0, 
		top: 0, 
		width: obj.width ? obj.width : obj.offsetWidth, 
		height: obj.height ? obj.height : obj.offsetHeight
	};

	while (obj && (obj != stopObj)) {
		info.left += obj.offsetLeft;
		info.top += obj.offsetTop;
		obj = obj.offsetParent;
	}

	return info;
}

function copyMouseOut(){
	$("#clippy").css({top:0, left:'-2000px'});
}
