// JavaScript Document

var morpheus_mFD = new Array();


Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

function translator(){

	this.translatePartial=morpheus_translate;
	this.fullPart=fullPart;
	this.swapLang=morpheus_swapLang;
	
}

function morpheus_swapLang(arMFD,lang,cbFunc){
	jQuery('#morpheus_overlayInfo').html('Translating 0 %');
	var arMFDT = new Array();
	for(var i=0;i<arMFD.length;i++){
		arMFDT.push({'selection' : arMFD[i].selection,'content' : arMFD[i].content,'lang' : lang});	
	}
	cbFunc(arMFDT);
	return;
}

function fullPart(idxPart,lang,translateFunction){
	fullPart.fullData;
	
	m_sourceIdVal = '.translate:eq(' + idxPart + ')';
		
		if(jQuery(m_sourceIdVal).html() == null || jQuery(m_sourceIdVal).html() == ''){
			translateFunction(morpheus_mFD);
			morpheus_hBT=1;
			return;
		}
	
	if(morpheus_mFD == null){
		morpheus_mFD = new Array();
	}
	
	morpheus_mFD.push({'selection' : m_sourceIdVal,'content' : jQuery(m_sourceIdVal).html(),'lang' : lang});	
	

	
	fullPart(idxPart + 1,lang,translateFunction);
	

	return;	

}
var morpheuspath = '/modules/mod_MorpheusTranslator/MT.php'
function morpheus_translate(idx,dataM,cbfunction){
	
	if(idx >= dataM.length){
		cbfunction();
		return;	
	}
	//alert(dataM[0].content);
	morpheus_translate_parsial(0,idx,dataM[idx],'',function(data){
															//alert('data : ' + data );
															if(data == 'success'){
																morpheus_translate(idx+1,dataM,cbfunction);
															} else {
																alert("Sorry a problem occured while translating. Please refresh your browser and repeat action.");
																cbfunction();
																return;
															}
														 });
	
	return;
}

function morpheus_translate_parsial(idx,idxM,dataMS,translated,morphFunction){
	if(morpheus_mFD[idxM].lang == dataMS.lang){
		jQuery(morpheus_mFD[idxM].selection).html(morpheus_mFD[idxM].content);			 
		morphFunction("success");
		return;
	}
	partiallength = 1200;
	//alert(idx + ' ' + dataMS.content.length);
	if(dataMS.content.length>partiallength || idx > 0){
		if(dataMS.content.length > partiallength){
			partialString = dataMS.content.substring(0,partiallength-1);
			lastrack = partialString.lastIndexOf('>');
		
			if(lastrack > 0){
				partialString = partialString.substring(0,lastrack+1);
				//alert('dataMS: <br/>' + dataMS.content + 'partialString: <br/>' + partialString );
				//alert(partialString);
				dataMS.content = dataMS.content.substring(lastrack+1,dataMS.content.length);
				//alert(dataMS.content);
			}else{
				dataMS.content = dataMS.content.substring(partiallength,dataMS.content.length);
			}
			
			jQuery.getJSON(morpheuspath,{id:idxM,s:partialString,ds:dataMS.lang,sl:morpheus_mFD[idxM].lang},function(data,textstatus){
																				//alert(textstatus);
																				if(textstatus == "success"){
	  																				jQuery('#morpheus_overlayInfo').html('Translating ' + idx * 3 + ' %');
																					morpheus_translate_parsial(idx+1,idxM,dataMS,translated + data[0].translated,morphFunction);
																				} else {
																					morphFunction(textstatus);
																				}

																			return;
																		  });
		} else {
			jQuery.getJSON(morpheuspath,{id:idxM,s:dataMS.content,ds:dataMS.lang,sl:morpheus_mFD[idxM].lang},function(data,textstatus){
																			//alert(textstatus);
																			if(textstatus == "success"){
																				jQuery('#morpheus_overlayInfo').html('Translating 100 %');
																				jQuery(morpheus_mFD[data[0].id].selection).html(translated+data[0].translated);			  
																				morphFunction(textstatus);
																			} else {
																					morphFunction(textstatus);
																			}
																			return;
																		  });
		}

		return;
	} else {
		jQuery.getJSON(morpheuspath,{id:idxM,s:dataMS.content,ds:dataMS.lang,sl:morpheus_mFD[idxM].lang},function(data,textstatus){
																			//alert("test");
																			//alert(textstatus);
																			if(textstatus == "success"){
																				jQuery('#morpheus_overlayInfo').html('Translating 100 %');
																				jQuery(morpheus_mFD[data[0].id].selection).html(data[0].translated);			  
																				morphFunction(textstatus);
																			} else {
																					morphFunction(textstatus);
																			}
																			return;
																		  });
	}
}
