// Analiza odpowiedzi slowka v2.0
// Intuiline s.c.

// poprawka 2008/04/02:
//	- nie rozroznialo przedrostkow
//	- nie uzglednialo formatu typu: el/la 

  function slowan_t(slowo){
    var t= slowo.replace(/\(.*\)/,"");
    t= t.replace(/^\s*/,"");
    t= t.replace(/\s*$/,"");
    t= t.replace(/\s+/g," ");
    return t;
  }

  function slowan_o(slowo){
    var o= "";
    var m= /\((.*)\)/.exec(slowo);
    if(m){
      o = m[1];
      o= o.replace(/^\s*/,"");
      o= o.replace(/\s*$/,"");
    }
    return o;
  }

  // usuwa prefiksy typu "the"
  function slowan_pref(slowo,tpref){
	if(tpref==null) return slowo;
	for(var i=0; i<tpref.length; i++){
	  var re = new RegExp('^\\s*'+tpref[i]+'\\s+', "i");	
	  var s= slowo.replace(re,"");
	  if(s.length != slowo.length) break;
	  slowo= s;
	}
    return s;
  }
  // wylawia prefiksy typu "the"
  function slowan_get_pref(slowo,tpref){
	if(tpref==null) return "";
	for(var i=0; i<tpref.length; i++){
	  var re = new RegExp('^\\s*'+tpref[i]+'\\s', "i");	
	  var s= slowo.replace(re,"");
	  if(s.length != slowo.length){
		return slowo.substring(0,slowo.length-s.length-1);
	  }
	}
    return "";
  }
  // analizuje slowo pod katem prefiksow typu el/la
  function ana_pref_slowo(slowo,tpref){
  	var pref= slowan_get_pref(slowo,tpref);
  	var smain= slowan_pref(slowo,tpref);
  	var tp= pref.split("/");
  	
  	var ar= new Array();
  	for(i=0; i<tp.length; i++)
  		ar[i]= tp[i]+' '+smain;
    return ar;
  }

  // porownanie 2 slow
  function slowan(tryb,slowo1,slowo2){
    return slowan(tryb,slowo1,slowo2,null);
  }
  function slowan(tryb,slowo1,slowo2,tpref){
  	var tslowo= ana_pref_slowo(slowo2,tpref);
  	for(var i in tslowo)
  		if(slowan_a(tryb,slowo1,tslowo[i],tpref))
	  		return true;
  	return false;
  }

  function slowan_a(tryb,slowo1,slowo2,tpref){
    t1p= slowan_t(slowo1);
    t1= slowan_pref(t1p,tpref);
    o1= slowan_o(slowo1);

    t2p= slowan_t(slowo2);
    t2= slowan_pref(t2p,tpref);
    o2= slowan_o(slowo2);
    
	// tylko gdy sa oba prefiksy to je uwzgledniamy
	if(t1.length != t1p.length && t2.length != t2p.length){
		t1= t1p;
		t2= t2p;	
	}

    if(tryb =="ignore"){
      t1= t1.toLowerCase();
      o1= o1.toLowerCase();
      t2= t2.toLowerCase();
      o2= o2.toLowerCase();
    }
    if (o1 == "" || o2 == "")
      return t1 == t2;
    return t1 == t2 && o1 == o2;
  }

    // wersja 'slowan' z synonimami
	function slowans(tryb,slowo1,syn){
		return slowans(tryb,slowo1,syn,null);
    }
	function slowans(tryb,slowo1,syn,tpref){
        for(var i= 0; i<syn.length; i++){
			if(slowan(tryb,slowo1,syn[i],tpref))
				return i;
        }
        return -1;
    }

    // test
    function test(){
    	//alert('Hello');
    	//var spref="a,an,the,to";
    	//var spref="der,die,das";
    	var spref="las,el,la,el/la";
	  	var tpref= spref.split(",");
    	var wyn= slowan('ignore','el ala','el/la ala (oho)',tpref);
    	alert('wyn= '+wyn);
    	//alert('pref= '+slowan_get_pref('la sala',tpref)+'$');
    	//alert('ar= '+ana_pref_slowo('el/la sala',tpref));
    }
    