/* Compressed with jstidy.sh */
/* Which in turn uses jsmin from http://www.crockford.com/javascript/jsmin.html */
/* And some perl magic */
/* This code is copyright (C) W-Create, http://www.w-create.com/ */
/* And copyright (C) Joel Yliluoma - http://iki.fi/bisqwit/ */

function rgel(root,id){return root.getElementById(id)}
function gel(id){return rgel(document,id)}
function id(id){return gel(id).selectedIndex}
function ids(id,v){gel(id).selectedIndex=v}
function ch(id){return gel(id).checked?1:0}
function chs(id,v){gel(id).checked=v>0}
function tx(id){return gel(id).value}
function txs(id,v){gel(id).value=v}
function dom_wipe(block){var a,k=block.childNodes,b=k.length;for(a=b;a-->0;)block.removeChild(k[a])
return block}
var clearBlock=dom_wipe;var dom_is_event_activator_name={onkeydown:1,onmouseover:1,onclick:1,onblur:1,onfocus:1,onmouseout:1,ondblclick:1,onmouseup:1,onmousedown:1,onkeypress:1,onkeyup:1,onchange:1,onload:1,onmousemove:1,onselect:1,onsubmit:1,onunload:1,onerror:1,className:1}
function dom_tag_finish_with(t,params){for(var i in params)
if(dom_is_event_activator_name[i])
t[i]=params[i];else
t.setAttribute(i,params[i]);return t}
function dom_add_children(t,children){var a,b=children.length;for(a=0;a<b;++a)dom_append(t,children[a])
return t}
function dom_tag(t){return document.createElement(t)}
function dom_text(content){return document.createTextNode(content)}
function dom_tag_with(t,params){return dom_tag_finish_with(dom_tag(t),params)}
function dom_tag_class(t,cls){return dom_tag_with(t,{className:cls})}
function dom_tag_class_with(t,cls,params){return dom_tag_finish_with(dom_tag_class(t,cls),params)}
function dom_tag_with_children(t,children){return dom_add_children(dom_tag(t),children)}
function dom_tag_attr_with_children(t,params,children){return dom_add_children(dom_tag_with(t,params),children)}
function dom_tag_class_with_children(t,cls,children){return dom_add_children(dom_tag_class(t,cls),children)}
function dom_tag_text(t,text){return dom_tag_with_children(t,[dom_text(text)])}
function dom_tag_attr_text(t,params,text){return dom_finish_with(dom_tag_text(t,text),params)}
function dom_append(root,t){return root.appendChild(t)}
function dom_rtext(t){var c=t.childNodes;if(!c)throw'dom_rtext';var result='',a,b=c.length;for(a=0;a<b;++a)result+=c[a].nodeValue;return result}
function dom_rtags(root,t){return root.getElementsByTagName(t)}
function dom_ftag(root,t){var l=dom_rtags(root,t);if(l.length==0)throw'tag '+t+' missing';if(l.length>1)throw'tag '+t+' is ambiguous';return l[0]}
Array.prototype.is_array=true;function is_array(obj){return obj.is_array}
function cloneObject(what){for(var i in what){if(is_array(what[i]))
this[i]=cloneArray(what[i])
else if(typeof what[i]=='object')
this[i]=new cloneObject(what[i])
else
this[i]=what[i]}}
function cloneArray(what){var result=what.slice(0),a,b=result.length;for(a=0;a<b;++a)
if(!is_array(result[a])&&typeof result[a]=='object')
result[a]=new cloneObject(result[a]);return result}
function serialize(what){if(what.is_array)return serializeArray(what)
if(typeof what=='object')return serializeObject(what)
if(typeof what=='string')return serializeString(what)
return what}
function _serzA(c1,c2,func){return c1+(func().join(','))+c2}
function serializeObject(what){return _serzA('{','}',function(){var res=[],i;for(i in what)res.push(serialize(i)+':'+serialize(what[i]));return res})}
function serializeArray(what){return _serzA('[',']',function(){var res=[],b=what.length,a;for(a=0;a<b;++a)res.push(serialize(what[a]));return res})}
function serializeString(s){var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};return'"'+
s.replace(/([^ !#-[\]-~])/g,function(a,b){var c=m[b],h='000'+b.charCodeAt().toString(16);return c?c:('\\u'+h.slice(h.length-4,4))})+'"'}
function unserialize(what){return eval('('+what+')')}
var displayObject=serialize,displayArray=serialize;function propObject(props){for(var i in props)this[i]=props[i];return this}
function protoObj(func,props){propObject.call(func.prototype,props);return func}
function declObj(params,varructorcode,elements,memberfunctions){var f;eval('f=function('+params+') { propObject.call(this, elements); '+varructorcode+'; }');return protoObj(f,memberfunctions)}
var soap_available=false,trans_cache={},sugg_cache={};if(navigator.vendor&&navigator.vendor.indexOf('Apple')>=0)soap_available=false;function renderQ(target,q,resp){var topic=gel(target.id+'word');var topicprefix=gel(target.id+'wordprefix');var topicsuffix=gel(target.id+'wordsuffix');dom_wipe(topic);topic.appendChild(dom_text(q));dom_wipe(topicprefix);dom_wipe(topicsuffix);if(!resp.success)throw soaploadtagtext(xml,'errorMessage');dom_wipe(target);var do_links=true,type=resp.result_type,stride=1*resp.result_width,items=resp.results,onclick=target.id=='suggest'?function(){return hintclick(this,dom_rtext(this))}:function(){return true},baseurl=target.id=='suggest'?sugg_base:opposite_base,b=items.length,a,onclick;switch(b/stride){case 0:topicprefix.appendChild(dom_text('Ei käännöksiä sanalle '));break;case 1:topicprefix.appendChild(dom_text('1 käännös sanalle '));break;default:topicprefix.appendChild(dom_text((b/stride)+' käännöstä sanalle '));break}
for(a=0;a<b;a+=stride){var trans_node,title='',sk=(items[a]),la=sk;switch(stride){case 3:{var ji=la,ka=(items[a+1]);title=(items[a+2]);if(ji!=ka)la=ka+' ('+ji+')';break}}
trans_node=dom_text(la);if(do_links){trans_node=dom_tag_finish_with(dom_tag_with_children('a',[trans_node]),{title:title,href:baseurl.replace(/_sugg_word_/g,encodeURIComponent(sk)),onclick:onclick})}
else if(title.length>0){trans_node=dom_tag_finish_with(dom_tag_with_children('span',[trans_node]),{title:title})}
target.appendChild(dom_tag_with_children('li',[trans_node,dom_tag('br')]))}}
function dictsoap(t,v,ok,nok){SOAP.q_async_json('http://www.ilmainensanakirja.fi/api?out=json','FreeDictionaryQuery',t,v,ok,nok)}
function pop_col(q,k1,func,v,nok,ca){var ok=function(r){trans_cache[q]=r;try
{renderQ(gel(k1),q,r);var fc=gel('q');if(fc)fc.focus()}
catch(er){nok(er)}};if(trans_cache[q])return ok(trans_cache[q]);v.from_lang=from_lang;v.to_lang=to_lang;v.max_results=15;v.key=soap_key;dictsoap(func,v,ok,function(x){return nok()})}
function load_translist(q,nok){return pop_col(q,'trans','doTrans',{word:q,min_src_length:1,min_dest_length:1},nok,trans_cache)}
function load_sugglist(q,nok){trans_cache={}
return pop_col(q,'suggest','doSuggest',{word:q,min_src_length:1,min_like_length:2},nok,sugg_cache)}
function searchsubmit(form){if(!soap_available)return true;var nok=function(){form.submit()}
load_sugglist(tx('q'),nok);load_translist(tx('q'),nok);return false}
function transclick(a,result_word){return true}
function hintclick(a,suggestion_word){var nok=function(){document.location=a.href}
if(!soap_available){nok();return true}
load_translist(suggestion_word,nok)
return false}
function eng_only_lang(lang,obj){var F=gel('F');var T=gel('T');for(var n=0;n<2;++n){if((obj==F)==(n!=1))
if(F.options[F.selectedIndex].value==lang&&T.selectedIndex!=0&&T.options[T.selectedIndex].value!='eng')T.selectedIndex=1;if((obj==T)==(n!=1))
if(T.options[T.selectedIndex].value==lang&&F.selectedIndex!=0&&F.options[F.selectedIndex].value!='eng')F.selectedIndex=1}}
function langpair_changed(obj){soap_available=false}
setTimeout('soap_available=false;',600e3);
