<!--
var MAX=300;var N=1;var MAXCAPS=.3;
var neg=new Image();neg.src="../img/sl_neg.gif";var pos=new Image();pos.src="../img/sl_pos.gif";
var isSent=false;
function em(id,st){if(document.getElementById(id))document.getElementById(id).style.border=st?'2px solid #ff0000':'0px'}
function clear(){em('readTouZn',false);em('langPairZn',false);em('mailZn',false);em('fnameZn',false);em('lnameZn',false);em('profZn',false);em('txtZn',false);em('ctxtZn',false);em('codeZn',false)}
function totLen(){return document.trq.atttrans.value.length+window.clipboardData.getData('Text').length}
function showErr(){var msg="The text was too long and has been trimmed. Please make any required modifications so that your text contains only well-formed sentences.";showStatus('trimBox',msg)}
function checkLen(f){if(f.value.length>MAX){f.value=f.value.substring(0,MAX);showErr();em('txtZn',true)}else{hideStatus('trimBox');em('txtZn',false);}updRatio(f)}
//var QfbkIsNew = true;
//function qfbkClear(form){if(QfbkIsNew == false)return;form.com.value='';QfbkIsNew=false}
//function qfbk(form){if (form.com.value.length<6){alert("Please enter some feedback first!");return false;}form.ctxt.value="JS";var u=form.action;form.action=u.replace('feedback','fbk');return true}
function updRatio(f){var l=f.value.length;var r=Math.min(Math.floor(l/MAX*10),10);for(var i=0;i<r;i++)document.images[N+i].src=neg.src; for(i=r;i<10;i++)document.images[N+i].src=pos.src;document.trq.ratio.value=100 - r * 10 + "%"}
function checkData(){clear();var form=document.trq;var msg="";
if(document.getElementById('readTou').checked==false){msg+="<br>. Read and accepted the Terms of Use";em('readTouZn',true)}
if(!form.elements['lang-pair'].value && document.getElementById('en-fr').checked==false && document.getElementById('fr-en').checked==false){msg+="<br>. Desired translation direction";em('langPairZn',true)}
if (form.attm.value.length<6 || form.attm.value.indexOf("@")==-1 || form.attm.value.indexOf(".")==-1 || form.attm.value.indexOf(" ")!=-1) {msg+="<br>. Email address";em('mailZn',true)}
var mailLow=form.attm.value.toLowerCase();
if (form.attfn.value.length<2) {msg+="<br>. First name";em('fnameZn',true)}
if (form.attln.value.length<2) {msg+="<br>. Last name";em('lnameZn',true)}
if (form.atttrans.value.length < 25) {msg+="<br>. The text to translate is too short. To translate a few words, please use a dictionary.";em('txtZn',true)}
if(toomanycaps(form.atttrans.value)){msg+="<br>. The text to translate contains too many caps. Only use capitals when required.";em('txtZn',true)}
if(hasurl(form.atttrans.value)){msg+="<br>.  The text to translate cannot contain a URL.";em('txtZn',true)}
if (form.attcom.value.length < 5) {msg+="<br>. Context information for the translator";em('ctxtZn',true)}
if (toomanycaps(form.attcom.value)) {msg+="<br>. The context information for the translator contains too many caps. Only use capitals when required.";em('ctxtZn',true)}
if(form.ckh_r.value.length!=6){msg+="<br>. Copy of the security code";em('codeZn',true)}
if (msg=="") {if(isSent) {return false;}isSent=true;document.getElementById(['sendLayer']).style.visibility='visible';window.location="#top";form.send.disable=true;form.ctxt.value="JS";set_referer();return true;} else{showStatus('msgBox',"<span style=\'color:red\'>The following inputs are invalid:<\/span>"+msg);return false;}}
function set_referer(){var str=document.referrer;var len = str.length;var min=7;if (str.indexOf("http://www.")==0) min=11;var max=str.indexOf("/",7);if (max==-1)max=len;var sstr=str.substring(min,max);document.trq.attref.value=sstr;}
function bookmark(){if ((navigator.appName.indexOf("Microsoft",0)>=0) && (parseInt(navigator.appVersion)>=4)) window.external.AddFavorite("http://sylang.com/en/","Sylang: French translation" );else alert("Press Ctrl + D to add Sylang to your favorites.")}
function foc(){document.trq.attm.focus();}
function cVal(offset){var endstr=document.cookie.indexOf (";", offset);if(endstr == -1)endstr=document.cookie.length;return unescape(document.cookie.substring(offset, endstr));}
function cValOf(name){var arg=name+"=";var alen=arg.length;var clen=document.cookie.length;var i=0;while(i<clen){var j=i+alen;if(document.cookie.substring(i,j)==arg)return cVal(j);i=document.cookie.indexOf(" ", i)+1;if(i == 0)break;}return null;}
function fillRef(){var nm=document.refr.name;var tf=document.trq;var fn=tf.attfn.value;var ln=tf.attln.value;if(fn!=""&&ln!="")nm.value=fn+" "+ln}var friends = null;var name;
function initInvite(){friends = new Array();addFriend();addFriendBtn.disabled=false}
function Friend(){this.email = '';this.getEmail=getEmail;this.setEmail=setEmail;}
function getEmail(){return this.email;}
function setEmail(email){this.email = email;}
function isValidEmail(email){var regex=/^[A-Z0-9._-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;return regex.test(email);}
function serializeEmails(){s='';last = friends.length - 1;for(var i=0; i<last; i++) s+= friends[i].getEmail()+',';s+=friends[last].getEmail();return s;}
function addFriend(){try{updateModel();if(friends.length==3)addFriendBtn.disabled=true;addBox();friends.push(new Friend());updateView();} catch (e) {alert(e.message);}}
function sendInvites(){try{name = get('name').value;if(name.length<2) throw new Error(invalidNameErr);var l=friends.length;if(l>1 && get('email-'+(l-1)).value==''){friends.pop();updatePanel();}updateModel();request();}catch(e){alert(e.message);}}
function get(id){return document.getElementById(id);}
function updateModel(){for(var i=0; i<friends.length;i++){var val = get('email-' + i).value;if(! isValidEmail(val)) throw new Error(invalidEmailErr + val);friends[i].setEmail(val);}}
function updateView(){for(var i=0; i<friends.length; i++){var box = get('email-' + i);var val = friends[i].getEmail();box.value = val;}}
function request(){var u='/invite-friend?service='+serviceId+'&name='+escape(name)+'&emails='+escape(serializeEmails());if(window.XMLHttpRequest)req=new XMLHttpRequest();else if(window.ActiveXObject)req=new ActiveXObject('Microsoft.XMLHTTP');req.onreadystatechange=confirm;req.open('GET',u,true);req.send(null);showStatus('status',sendingMsg)}
function confirm(){if(req.readyState!=4)return;if(req.status==200){resp = req.responseText;if(resp.substring(0,2)=='OK'){showStatus('status',friends.length>1?msg=sentManyMsg:sentOneMsg);clearPanel();initInvite();} else showStatus('status',resp)} else showStatus('status','Error '+req.status);}html1 = '<div><input type="text" onfocus="showStatus(\'status\',addFriendMsg)" class="field" id="';html2 = '" value="';html3 = '" size="20"><\/div>';
function hideStatus(id){var status = get(id);status.style.display='none';}
function showStatus(id, msg){var status = get(id);status.innerHTML = msg;status.style.display='block';}
function addBox(){var pos = friends.length;var panel = get('friends');panel.innerHTML += html1 + 'email-' + pos  + html2 + html3;if(pos!=0)get('email-' + pos).focus();}function updatePanel(){var pos = friends.length;var panel = get('friends');panel.innerHTML = '';for(var i=0;i<pos;i++) panel.innerHTML += html1 + 'email-' + i + html2 + friends[i].getEmail() + html3;}function clearPanel(){var panel = get('friends');panel.innerHTML = '';}
function reloadchal(){
var s=Math.random()*5;document.trq.ckh_r.value='';document.chal_img.src='../main/challenge?'+s}
var caps='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
function toomanycaps(txt) {
var len=txt.length;var cnt=0;
if(len == 0)return false;
for(i=0;i<len;i++) {if(caps.indexOf(txt.charAt(i))!=-1)cnt++;}
return cnt/len>MAXCAPS;
} 
function hasurl(txt){return txt.indexOf('http://')!=-1}
function refgo(u1,u2){
u2=unescape(u2);var v5=u1.length;var v1="";for(var v4=0;v4<v5;v4++){v1+=String.fromCharCode(u1.charCodeAt(v4)^u2.charCodeAt(v4));}window.location=v1;
}
function refprn(u1,u2,l1,l2){
l2=unescape(l2);var v5=l1.length;var v1="";for(var v4=0;v4<v5;v4++){v1+=String.fromCharCode(l1.charCodeAt(v4)^l2.charCodeAt(v4));}document.write('<a href="javascript:void(0)" onclick="refgo(\''+u1+'\',\''+u2+'\')">'+v1+'<\/a>');
}
function toggle(id){
if(!document.getElementById)return;
cont=document.getElementById(id);
if(cont.style.display=='none')cont.style.display='block';
else cont.style.display='none';
}
//-->
