//
//             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);
   for (var i = 0; i < m_data.length; 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.translit.value =="yes") {
      setListItem (m_langsCtrl, ctrLen-1, TEXT_DIR_TRANSLIT, "ru/tr");
//   }

   setDirValue (dir);   
   onFocusFrame (0);
  if(m_sourceForm)
    m_sourceForm.text.focus();
   m_form.dir.value = dir; // restore dir, if it was changed
}

function setDirValue (dirValue) {
//   m_form.dir.value = dirValue;

 //  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);
		}
        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);
   var sourceCtrl = browser.ns ? frameSource.contentWindow.document.form.text : frameSource.document.form.text;
var targetCtrl = null
if(browser.ns ? frameTarget.contentWindow.document.form : frameTarget.document.form) {
   targetCtrl = browser.ns ? frameTarget.contentWindow.document.form.text : frameTarget.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_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 translate (text, dir) {
// debugProperties(m_targetForm)
// alert("m_sourceForm = " + m_sourceForm);
// alert("m_targetForm = " + m_targetForm);
   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;
   }
	m_targetForm.limit.value = m_form.limit.value;
	
	testAutoOptions(dir);
	setOptions();
   if (text.length > m_targetForm.limit.value) {
      alert (TEXT_MSG_LIMIT_START + " "+ m_targetForm.limit.value + " " + TEXT_MSG_LIMIT_END);
      text = text.substring (text, m_targetForm.limit.value);
   }
   if(dir == "ru/tr") {
   		return translit(text);
   }
/*
   if(!testDir()) {
	  return true;  
	}
*/
   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.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' : '' ) ;
   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; 
        alert("finished");
   return true;
}


function getSrcLang(dir)
{
	var langs = dir.split("/");
	if(langs.length >  0) {
		return langs[0];
	}
	return "en";
}

function getTargetLang(dir)
{
	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));
	}
	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/tr";
   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;

   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 = "";
	}
}