//
//             Copyright (c) 2002, 2003 Smartlink Corp.
//                       All rights reserved.
//

var m_form      = null;
var m_langsCtrl = null;
var m_dicCtrl   = null;
var m_data      = null;
var m_clipboard = null;

var m_sourceFrame = null, m_sourceForm = null, m_sourceText = null;
var m_targetFrame = null, m_targetForm = null;
var m_iActiveForm = 0;

var m_autodecode   = false;
var m_autospell    = false;
var m_autocheck    = false;
var m_autoback     = false;
var m_autotranslit = false;
var m_backWindow   = null;




var m_parent = getParent();

// toolbar params
var m_curEl      = "";
var m_curFrame   = "";
var m_curLang    = "";
var m_fspell     = 0;
var m_clientName = "";
var m_ln         = ""
var m_skin       = ""

var m_interval = null;

var m_options = [ "autodecode",  "autospell", "alwaysback", "autotranslit", "autoreverse"];


function onclose()
{
	//  for punchout
//  window.open("http://translation2.paralink.com/images/s.gif", "waitFrame");
	window.close();
}

function finish()
{
	if(m_backWindow)
		m_backWindow.close();
}


function init () {


   // if (isDialog ())
   //    document.body.style.padding = "10px";
   if (!m_form) {
      // adjustWindowSize ();
      window.focus ();
      m_form = document.forms ["form"];
   }
   if(m_form.clientName) {
      m_clientName	= m_form.clientName.value;
   }
   if(m_form.skin) {
    m_skin = m_form.skin.value;
   }
  if(m_form.ln) {
    m_ln = m_form.ln.value;
   }
     
   loadData ();
   loadSettings();
   
   var text = ""; // get text to translate
   if (window.opener && m_form.ctrl.value) {
      var textCtrl = m_form.ctrl.value;
      textCtrl = getDocElementById (opener.document, textCtrl);
      text = (textCtrl ? textCtrl.value : "");
   }

   else if (window.textToTranslate) {
   	text = window.textToTranslate;
   }
   else if (m_parent.textToTranslate) {
   	text = m_parent.textToTranslate;
   }
	else if(m_form.text.value) {
		text = m_form.text.value;
	}
   else if (text = getQueryParam (location.href, "text")) {
      text = unescape (text);
   }
   if(m_parent.splash) {
	 try {m_parent.splash(); m_parent.splash = null;} catch (err) {};
	} 
    if (window.splash) {
		try { splash(); } catch (err) {};
   }
   translate (text, m_form.dir.value);
    if (window.spylo)  {
		spylog_up();
	}
  
	enableSubmit ();
}

function loadSettings()
{	
	var options = m_form.options.value.split(";");
		for(var i= 0; i<options.length; i++) {
		var opt = options[i].split("=");		
		if(opt.length<2 || !m_form[opt[0]])
			continue;
		var ctrl = 	m_form[opt[0]];
		ctrl.value = opt[1];
		if(ctrl.type.toLowerCase() == "checkbox") {
			ctrl.checked = (opt[1]=="yes" ? true : false);
		}
	}
	init_backwindow();
}

function loadData () {

   var dir = getQueryParam (location.href, "dir");
   if (!dir)
      dir = m_form.dir.value;
   m_langsCtrl = m_form.langs;
   m_dicCtrl   = m_form.dic;

   m_data = m_form.data.value.split ("\t");
   var ctrLen = m_data.length;
 //   if(m_form.translit.value =="yes") {
	 ctrLen++;
 //   }

  //!!!!!!   setListLength (m_langsCtrl, ctrLen); // This line has been removed to organize the list of languages in the drop-down menu !!!!!

   for (var i = 0; i < m_data.length-1; i++) {
      m_data [i] = m_data [i].split (";");
      var values = m_data [i] [0].split (",");
      setListItem (m_langsCtrl, i, values [0], values [1]);
   }

   if(m_form.autotranslit.value =="yes") {
      setListItem (m_langsCtrl, ctrLen-1, TEXT_DIR_TRANSLIT, "ru/trl");
   }

   setDirValue (dir);   
   onFocusFrame (0);
  
  if(m_sourceForm && !slfloater)
    m_sourceForm.text.focus();
   m_form.dir.value = dir; // restore dir, if it was changed
}

function setDirValue (dirValue) {
//   m_form.dir.value = dirValue;
//  dirValue = dirValue.replace("alt_","");

 //  var dirIndex = 0;
  if(m_langsCtrl) { 
   var dirIndex = Math.max(m_langsCtrl.selectedIndex, 0);
   var dirs = m_langsCtrl.options;
   for (var i = 0; i < m_langsCtrl.length; i++) {
      if (dirs [i].value == dirValue) 
         dirIndex = i;
   }
   m_langsCtrl.selectedIndex = -1; // To prevent bug in Netscape 6.0
   m_langsCtrl.selectedIndex = dirIndex;
   onDirChanged ();
   }

}
   
function onLoadFrame (index) {
 	  if(! browser.ie && m_interval) {
 	    return;
 	  }
// virk 
   if(window.initFocus) {
		initFocus();
	} 
// end of virk


   if (index == 0) {
      m_sourceFrame = getFrame ("source");
      m_sourceForm  = m_sourceFrame.document.forms ["form"];
      m_sourceText  = m_sourceForm.text.value;
      setToolbarParams(index);
   }
   else {                    
      m_targetFrame = getFrame ("target");
      m_targetForm  = m_targetFrame.document.forms ["form"];

      if (m_targetForm.dir.value)
         setDirValue (m_targetForm.dir.value);
	  if(m_targetForm.source.value)	
	  	m_sourceForm.text.value = m_targetForm.source.value;
/*		
	  if(m_targetForm.back.value) {
	  	 if( m_form.back_translation)	
		  	m_form.back_translation.value = m_targetForm.back.value;
		 else
		 	showBackWindow(m_targetForm.back.value);
		}
*/
	  if(m_targetForm.back.value) { 

	  	 showBackWindow(m_targetForm.back.value,m_targetForm.sh.value);
		}
        enableSubmit ();

	  if(m_targetForm.actions.value == "spelldlg") {
	  	if (confirm(TEXT_MSG_SPELL_ERRORS)){
	  	  doSpell();
	  	  if(browser.ie) {
	  	    onCloseSpeller();
	  	  }
	  	  else {
	  	    	m_interval=window.setInterval(speller_closed, 100);
	  	  }
	  	}
	  	else {
		    translate();
		  }
	  }
   }
 }

function enableSubmit (enable) {
   if (m_form)
      enableControl (m_form.go, enable);
}

function onFocusFrame (index) {
   m_iActiveForm = index;

   var frameSource = getDocElementById (document, "source");
   var frameTarget = getDocElementById (document, "target");
	if(!frameSource || !frameTarget) {
		return;
	}
   frameSource.className= (index ? border_passive : border_active);
   if(browser.sfr && browser.ie)  var sourceCtrl = frameSource.document.form.text;
   else                 var sourceCtrl = frameSource.contentWindow.document.form.text;
   
var targetCtrl = null


   if(browser.sfr && browser.ie){
	var targetCtrl = frameTarget.document.form.text;

   }else{
        var targetCtrl = frameTarget.contentWindow.document.form.text;
   }

setElementStyle (sourceCtrl, "color", (index ? textcolor_passive : textcolor_active ) );
frameTarget.className= (index ?  border_active : border_passive ); 

if(targetCtrl)
   setElementStyle (targetCtrl, "color", (index ? textcolor_active : textcolor_passive ) );
   setToolbarParams(index);
}



function onDirChanged () {

   if(m_langsCtrl.value.substring(0,3) == "ru/")  m_form.autodecode.disabled = false;
   else                                           {m_form.autodecode.checked = 0;m_form.autodecode.disabled = true;}

   if(m_langsCtrl.value.substring(2,5) == "/ru" ) m_form.autotranslit.disabled = false;
   else                                           {m_form.autotranslit.checked = 0;m_form.autotranslit.disabled = true;}

//alert(m_langsCtrl.value.substring(3,5));
   if(m_langsCtrl.value.substring(0,2) == "zh" || m_langsCtrl.value.substring(0,2) == "zt" || m_langsCtrl.value.substring(0,2) == "nl" || m_langsCtrl.value.substring(0,2) == "el" || m_langsCtrl.value.substring(0,2) == "ja" || m_langsCtrl.value.substring(0,2) == "ko"){
        if(m_langsCtrl.value.substring(4,7) == "en/" || m_langsCtrl.value.substring(4,7) == "fr/" || m_langsCtrl.value.substring(4,7) == "de/" || m_langsCtrl.value.substring(4,7) == "it/"  || m_langsCtrl.value.substring(4,7) == "pt/"){
             	m_form.autospell.disabled = false;
        }
        else
 		{m_form.autospell.checked = 0;m_form.autospell.disabled = true;}

   }
   else                                           m_form.autospell.disabled = false;



   if (m_dicCtrl) {
      var dirIndex = Math.max (m_langsCtrl.selectedIndex, 0);
      var dicValue = getListValue (m_dicCtrl);
      var dicIndex = 0;
      var dics = m_data [dirIndex].slice (1);
      setListLength (m_dicCtrl, dics.length);
      
      for (var i = 0; i < dics.length; i++) {
         var values = dics [i].split (",");
         setListItem (m_dicCtrl, i, values [1], values [0]);
         if (values [0] == dicValue)
            dicIndex = i;
      }
      m_dicCtrl.selectedIndex = dicIndex;
   }
   var lastDir = m_form.dir.value;
   m_form.dir.value = getListValue (m_langsCtrl, "");
   setToolbarParams(m_iActiveForm);
  /* if (lastDir != m_form.dir.value)
      translate();
	*/  
}




function confirmation(LIMIT,text) {
var answer = confirm(TEXT_MSG_LIMIT_START + " "+ LIMIT + " " + TEXT_MSG_LIMIT_END +"\nThe text will be trimmed.")
	if (answer){
                text = text.substring(text, LIMIT-1); 
                window.frames['source'].document.form.text.value=text;
                return text;
	}
	else{
		return -1;
	}

}

function translate (text, dir) {

   if (!m_sourceForm || !m_targetForm)
      return false;
   if (typeof (dir) == "undefined")
      dir = getListValue (m_langsCtrl, "");
   if (text)
      m_sourceForm.text.value = text;
   else
      text = m_sourceForm.text.value;
   if (strtrim (text) == "") {
      m_targetForm.text.value = "";
	  if(m_form.back_translation)
		m_form.back_translation.value = "";
      return true;
   }
	
	testAutoOptions(dir);
	setOptions();
   
   if (text.length > REDIR_LIMIT && REDIR_LIMIT < LIMIT) {
	REDIR();
   }else{

    if(text.length > LIMIT){text = confirmation(LIMIT, text); if(text==-1) return false;}
   }

   if(dir == "ru/trl") {
   		return translit(text);
   }
/*
   if(!testDir()) {
	  return true;  
	}
*/

//alert(text);	
//alert(dir);	
if(dir == "") dir = document.form.langs.options[document.form.langs.selectedIndex].value;

   TTS_OnOff(dir);

   enableSubmit (false);
   setTimeout (enableSubmit, m_form.timeout.value); //3000
   
   m_targetForm.clientID.value = m_form.clientID.value;
   m_targetForm.appID.value    = m_form.appID.value;
   m_targetForm.source.value   = text;
   m_targetForm.text.value     = "";
   m_targetForm.dir.value      = dir;

//   m_targetForm.z.value        = m_form.z.value;
//   m_targetForm.height.value   = m_form.h.value;
   m_targetForm.PX.value       = m_form.PX.value;
   m_sourceForm.PX.value       = m_form.PX.value;
//  alert(">>." + m_targetForm.height.value);
//   m_sourceForm.SRC.value       = text;

   m_targetForm.options.value  = m_form.options.value;
   m_targetForm.actions.value  = (m_autodecode? 'decode ' : '' ) + (m_autocheck? 'check ' : '' )+ (m_autospell? 'spell ' : '' )  + 'translate' + (m_autoback? ' back' : '' ) + (m_autotranslit? ' translit' : '' ) ;

provider = "PROMT";
if (dir.indexOf('zh') >= 0 || dir.indexOf('zt') >= 0 || dir.indexOf('nl') >= 0 || dir.indexOf('el') >= 0 || dir.indexOf('it') >= 0 || dir.indexOf('ja') >= 0 || dir.indexOf('ko') >= 0 || dir.indexOf('fr/de') >= 0 || dir.indexOf('de/fr') >= 0)
provider = "Altavista";
//alert(provider);

   if(m_form.back_translation)
   	m_form.back_translation.value = "";
 
	if (m_dicCtrl)

      m_targetForm.dic.value = getListValue (m_dicCtrl);
	m_targetForm.submit ();
	m_targetForm = null;  
   return true;
}


function getSrcLang(dir)
{
//  dir = dir.replace("alt_","");
	var langs = dir.split("/");
	if(langs.length >  0) {
		return langs[0];
	}
	return "en";
}

function getTargetLang(dir)
{
//  dir = dir.replace("alt_","");
	var langs = dir.split("/");
	if(langs.length >  1) {
		return langs[1];
	}		
	return "en";
}

function decode () {
   onFocusFrame (0);
   kbdShowHide (false);
   if (!m_sourceForm || !m_sourceForm.text.value)
      return false;
      
   if (m_sourceForm.text.value != m_sourceText) {
      // Source text was changed
      m_sourceForm.encoding.value = "";
      m_sourceForm.decode.value = "";
   }
   if (m_sourceForm.encoding.value != "") {
      var encodings = m_sourceForm.encoding.value.split (";");
      encodings.push (encodings.shift ());
      m_sourceForm.encoding.value = encodings.join (";");
   }
   if (!m_sourceForm.decode.value)
      m_sourceForm.decode.value = m_sourceForm.text.value;
	m_fspell = 0;
    m_sourceForm.submit ();
}

function clearToolbarParams()
{
	m_curEl    = "";
	m_curFrame = "";
	m_curLang  = "";
	m_fspell   = 0;
}

function setToolbarParams(index)
{
	if (index == 0 && m_sourceForm) {
		m_curEl = m_sourceForm.text;
		m_curFrame = "source";
	}
	if(index ==1 && m_targetForm){
		m_curEl = m_targetForm.text;
		m_curFrame = "target";
	}
	if( m_langsCtrl) {
		var dir = getListValue (m_langsCtrl, "");
    	m_curLang = (index == 0 ?  getSrcLang(dir) : getTargetLang(dir));
    	//alert(m_curLang);
	}
	m_fspell = 1;

}

function testDir()
{
	var dir = getListValue (m_langsCtrl, "");
	if(dir.indexOf("ru") == -1 && dir.indexOf("fr")!= -1)	{
		alert(TEXT_MSG_NOFRENCH_1 + "\n" + TEXT_MSG_NOFRENCH_2 + "\n\n" + TEXT_MSG_NOFRENCH_3+ "\n\n" + TEXT_MSG_NOFRENCH_4);
		//top.location = "http://www.free_translation.imtranslator.com/index.html";
		return false;
	}
  return true;	
}

function setOptions()
{
	var str = ""
	for(var i=0; i < m_options.length; i++) {
		str += m_options[i] +  "=" + ( m_form[m_options[i]] ? m_form[m_options[i]].value: "");
		if(i < m_options.length - 1) 
			str += ";"
	}
	m_form.options.value = str;
}

function testAutoOptions(dir)
{

	if(m_targetForm.actions.value == "spelldlg"){
		m_autodecode   = false;
		m_autospell    = false;
		m_autocheck    = false;
		
	}
	else {
		m_autodecode   = (m_form.autodecode && m_form.autodecode.checked && dir.indexOf("ru")==0)? true:false;
		m_autospell    = m_form.autospell? m_form.autospell.checked : false;
//		m_autocheck    = m_form.autospell? m_form.autospell.checked : false;
}		
		var backCtrl   = m_form.alwaysback? m_form.alwaysback : m_form.autoreverse;
		m_autoback     = backCtrl? backCtrl.checked : false;
		m_autotranslit = m_form.autotranslit? m_form.autotranslit.checked : false;


	if(!m_autoback)
		closeBackWindow();
}

function onClickCheckbox(obj)
{
	obj.value = (obj.value == "yes" ? "no": "yes");
}

function onReverse()
{

	var dir = getListValue (m_langsCtrl, "");
	var langs = dir.split("/");
	dir = langs[1] + "/" + langs[0];
	setDirValue (dir);
	return false;
}

function changeLang(ln)
{
	if(!m_form) 
		return;
	if(typeof(RES_LN)== 'undefined' || RES_LN == ln)
		return;
	m_form.ln.value = ln;
	reloadMainPage();
}


function reloadMainPage()
{
	setOptions();
	m_form.method="post"
	m_form.target = "_self"
	var str = document.location.pathname;
	m_form.text.value = m_sourceForm.text.value;
	m_form.ctrl.value = "";
	m_form.action = str.substr(str.lastIndexOf("/") + 1, str.length); // "translator.asp";
	m_form.submit();
}


function translit(text)
{
   var dir = "ru/trl";
   if (!text)
      text = m_sourceForm.text.value;
   closeBackWindow();
   m_targetForm.source.value = text;
   m_targetForm.text.value = "";
   m_targetForm.dir.value = dir;
   m_targetForm.options.value = m_form.options.value;
   m_targetForm.actions.value = "translit";
   if(m_form.back_translation)
   	m_form.back_translation.value = "";
 
	m_targetForm.submit();
	m_targetForm = null;
   //alert(document.target.form.actions.value);
   return true;
}


function webtranslate()
{
	var webfrm = document.forms["webform"];
	webfrm.url.value = m_form.url.value;
	webfrm.dir.value = getListValue (m_langsCtrl, "");
	webfrm.dic.value = "general"; //m_form.dic.value;
	enableSubmit(false)
    setTimeout (enableSubmit, m_form.htmltimeout.value); //3000
	webfrm.submit();
	return false;
}

function showDlg(href)
{

	window.showModalDialog (href, {opener:window}, 'dialogWidth:180px; dialogHeight:210px;scroll:no;help:no;status:no;');
}


function speller_closed()
{
  if(spellSession == null || spellSession.dialog.closed){
    window.clearInterval(m_interval);
    m_interval = null;
    onCloseSpeller();
  }
}


function onCloseSpeller()
{
   if(confirm(TEXT_MSG_CONTINUE_TR)){
    translate();
  } 
  else { 
	  if(m_targetForm)
	    m_targetForm.actions.value = "";
	}
}


function REDIR(){
  var frame = document.getElementById('redir');
  if(frame)	frame.parentNode.removeChild(frame);
  if (!document.getElementById('redir'))
  {
    var die = document.createElement("iframe");
    die.src = "len_msg_div/body2.asp";
    die.name = "redir";
    die.id="redir";
    die.width="585";
    die.height="275";
    die.scrolling="no";
    die.frameBorder="0";    
    selects(0);
    document.getElementById('redir_container').appendChild(die);
  }
document.getElementById('fog').style.display = "block";
document.getElementById('redir_container').style.display = "block";
}


function selects(status,except)
{
var allselects = document.getElementsByTagName("select");
for (var i = 0; i < allselects.length; i++) {
status ? allselects[i].style.visibility="visible" : allselects[i].style.visibility="hidden";
}
return true;
}

