var Max=64;J=0;    
    Trans1=new Array(Max);
    Trans2=new Array(Max);
       

Trans1[J]="I'M";
Trans2[J++]="I AM";

Trans1[J]="I'VE";
Trans2[J++]="I HAVE";

Trans1[J]="I'LL";
Trans2[J++]="I WILL";

Trans1[J]="I'D";
Trans2[J++]="I WOULD";

Trans1[J]="I'D";
Trans2[J++]="I HAD";

Trans1[J]="YOU'RE";
Trans2[J++]="YOU ARE";

Trans1[J]="YOU'VE";
Trans2[J++]="YOU HAVE";

Trans1[J]="YOU'LL";
Trans2[J++]="YOU WILL";

Trans1[J]="YOU'D";
Trans2[J++]="YOU WOULD";

Trans1[J]="YOU'D";
Trans2[J++]="YOU HAD";

Trans1[J]="HE'S";
Trans2[J++]="HE IS";

Trans1[J]="HE'S";
Trans2[J++]="HE HAS";

Trans1[J]="HE'LL";
Trans2[J++]="HE WILL";

Trans1[J]="HE'D";
Trans2[J++]="HE WOULD";

Trans1[J]="HE'D";
Trans2[J++]="HE HAD";

Trans1[J]="SHE'S";
Trans2[J++]="SHE IS";

Trans1[J]="SHE'S";
Trans2[J++]="SHE HAS";

Trans1[J]="SHE'LL";
Trans2[J++]="SHE WILL";

Trans1[J]="SHE'D";
Trans2[J++]="SHE WOULD";

Trans1[J]="SHE'D";
Trans2[J++]="SHE HAD";

Trans1[J]="IT'S";
Trans2[J++]="IT IS";

Trans1[J]="IT'S";
Trans2[J++]="IT HAS";

Trans1[J]="IT'LL";
Trans2[J++]="IT WILL";

Trans1[J]="WE'RE";
Trans2[J++]="WE ARE";

Trans1[J]="WE'VE";
Trans2[J++]="WE HAVE";

Trans1[J]="WE'LL";
Trans2[J++]="WE WILL";

Trans1[J]="WE'D";
Trans2[J++]="WE WOULD";

Trans1[J]="WE'D";
Trans2[J++]="WE HAD";

Trans1[J]="THEY'RE";
Trans2[J++]="THEY ARE";

Trans1[J]="THEY'VE";
Trans2[J++]="THEY HAVE";

Trans1[J]="THEY'LL";
Trans2[J++]="THEY WILL";

Trans1[J]="THEY'D";
Trans2[J++]="THEY WOULD";

Trans1[J]="THEY'D";
Trans2[J++]="THEY HAD";

Trans1[J]="CAN'T";
Trans2[J++]="CANNOT";
                      
Trans1[J]="COULDN'T";
Trans2[J++]="COULD NOT";

Trans1[J]="DAREN'T";
Trans2[J++]="DARE NOT";

Trans1[J]="DIDN'T";
Trans2[J++]="DID NOT";

Trans1[J]="DOESN'T";
Trans2[J++]="DOES NOT";

Trans1[J]="DON'T";
Trans2[J++]="DO NOT";

Trans1[J]="HASN'T";
Trans2[J++]="HAS NOT";

Trans1[J]="HAVEN'T";
Trans2[J++]="HAVE NOT";

Trans1[J]="HADN'T";
Trans2[J++]="HAD NOT";

Trans1[J]="MIGHTN'T";
Trans2[J++]="MIGHT NOT";

Trans1[J]="MUSTN'T";
Trans2[J++]="MUST NOT";

Trans1[J]="NEEDN'T";
Trans2[J++]="NEED NOT";

Trans1[J]="OUGHTN'T";
Trans2[J++]="OUGHT NOT";

Trans1[J]="SHAN'T";
Trans2[J++]="SHALL NOT";

Trans1[J]="SHOULDN'T";
Trans2[J++]="SHOULD NOT";

Trans1[J]="WASN'T";
Trans2[J++]="WAS NOT";

Trans1[J]="WEREN'T";
Trans2[J++]="WERE NOT";

Trans1[J]="WON'T";
Trans2[J++]="WILL NOT";

Trans1[J]="WOULDN'T";
Trans2[J++]="WOULD NOT";

Trans1[J]="HERE'S";
Trans2[J++]="HERE IS";

Trans1[J]="HOW'S";
Trans2[J++]="HOW IS";

Trans1[J]="THAT'D";
Trans2[J++]="THAT WOULD";

Trans1[J]="THAT'LL";
Trans2[J++]="THAT WILL";

Trans1[J]="THAT'S";
Trans2[J++]="THAT IS";

Trans1[J]="THERE'S";
Trans2[J++]="THERE IS";

Trans1[J]="WHAT'LL";
Trans2[J++]="WHAT WILL";

Trans1[J]="WHAT'S";
Trans2[J++]="WHAT IS";

Trans1[J]="WHEN'S";
Trans2[J++]="WHEN IS";

Trans1[J]="WHERE'S";
Trans2[J++]="WHERE IS";

Trans1[J]="WHO'D";
Trans2[J++]="WHO WOULD";

Trans1[J]="WHO'LL";
Trans2[J++]="WHO WILL";

Trans1[J]="WHO'S";
Trans2[J++]="WHO IS";


function Distiler(S,M1,M2)
{ 
 var p,a,b,dbg;

 p=0;            
 while (p!=-1)
 {
  p=S.indexOf(M1,p);
  if (p!=-1)
  {
   a=S.substring(0,p);
   b=S.substring(p+M1.length,S.length);
   S=a+M2+b;
  }
 } 
 
 return S; 
};

function CMP(Str1,Str2)
{                 
 if (!Str2)
 {
  return false;
 }
 else
 {  
  for(var i=0;i<=Max;i++)
  {
   Str1=Distiler(Str1.toUpperCase(),Trans2[i],Trans1[i]);
   Str2=Distiler(Str2.toUpperCase(),Trans2[i],Trans1[i]);
  };
  return (Str1==Str2);
 }
};

function clickHandler() {
  var srcElement, targetElement, targetEdit, Answer, targetAnswer, targetCheck;
       
  Answer=new String();

  srcElement = window.event.srcElement;
  
  if (srcElement.className == "test")
  {
   targetElement = document.all(srcElement.id + "Answer");
   targetEdit = document.all(srcElement.id + "Edit");
   
   if (targetElement.style.display == "none")
   {
    targetElement.style.display = "";

	if (targetEdit.Answer=="") targetElement.className="noanswer"
	else
 	 if ((CMP(targetEdit.value,targetEdit.Answer))||
	     (CMP(targetEdit.value,targetEdit.Answer2))||
	     (CMP(targetEdit.value,targetEdit.Answer3))) targetElement.className="goodanswer"
	 else targetElement.className="badanswer"
   }
  }

  if (srcElement.className == "multi")
  {
   for (i=0; i<document.all.length;i++)
   {
    targetElement=document.all[i];
    if ((targetElement.style.display == "none")&&
	(targetElement.id.indexOf(srcElement.id)==0))  
	{
	 targetElement.style.display = "";
     	 targetEdit = document.all(targetElement.id + "Edit");
	if (targetEdit.Answer=="") targetElement.className="noanswer"
	else
	 if((CMP(targetEdit.value,targetEdit.Answer))||
	    (CMP(targetEdit.value,targetEdit.Answer2))||
	    (CMP(targetEdit.value,targetEdit.Answer3)))targetElement.className="goodanswer"
	 else targetElement.className="badanswer"
	}
   }
  }

  if (srcElement.className == "check")
  {
   // pokazanie odpowiedzi
   targetAnswer = document.all(srcElement.id+"Answer");
   targetAnswer.style.display="";
   Answer=""; 
   
   for (i=1;i<srcElement.AnswerCount-"0"+1;i++)
   {  
     targetElement = document.all(srcElement.id+"_"+i);
     if (targetElement.checked) Answer=Answer+targetElement.value;	
   }

   if(srcElement.Answer=="") targetAnswer.className="noanswer"
   else
    if(CMP(srcElement.Answer,Answer))targetAnswer.className="goodanswer"
    else targetAnswer.className="badanswer";   
  }

  if (srcElement.className == "Outline") {
     targetId = srcElement.id + "details";
     targetElement = document.all(targetId);
     if (targetElement.style.display == "none") {
        targetElement.style.display = "";
     } else {
        targetElement.style.display = "none";
     }
  }

  if (srcElement.className == "list")
  {
    for (i=0; i<document.all.length;i++)
    {
     targetElement=document.all[i];
     if ((targetElement.id.indexOf(srcElement.id)==0)&&
  	     (targetElement.tagName == "SELECT")) 
	 {
	  targetAnswer = document.all(targetElement.id+"Answer");
   	  targetAnswer.style.display="";
      if(targetElement.Answer=="")	targetAnswer.className="noanswer";
      else
       if(CMP(targetElement.Answer,targetElement.value))targetAnswer.className="goodanswer"
       else targetAnswer.className="badanswer";   
	 }
    };
  }

  if (srcElement.className == "correction")
  {
    for (i=0; i<document.all.length;i++)
    {
     targetElement=document.all[i];
     if ((targetElement.tagName == "SPAN")&&
  	     (targetElement.id.indexOf(srcElement.id)==0)) 
	 {
	  targetAnswer = targetElement;
	  targetEdit = document.all(targetElement.id+"Edit");
	  targetCheck = document.all(targetElement.id+"Check");
   	  targetAnswer.style.display="";
	  
	  if (targetCheck.Answer=="1")
	    if (targetCheck.checked && targetEdit.value=="") targetAnswer.className="goodanswer"
	    else targetAnswer.className="badanswer"
	  else
	   if(targetCheck.checked || (!CMP(targetEdit.value,targetEdit.Answer))) targetAnswer.className="badanswer"
	   else targetAnswer.className="goodanswer";
	 }
    };
  }

// testy składa się z trzech checkboxów, każdy jest oceniany osobno 
  if (srcElement.className == "onoff")
  {
   for(i=1;i<4;i++)
   {
     targetElement=document.all[srcElement.id+"_"+i];
	 {
	  targetAnswer = targetElement;
	  targetCheck = document.all(targetElement.id+"Check");
   	  targetAnswer.style.display="";
	  
	  if (targetCheck.Answer=="1")
	    if (targetCheck.checked) targetAnswer.className="goodanswer"
	    else targetAnswer.className="badanswer"
	  else
	   if(targetCheck.checked) targetAnswer.className="badanswer"
	   else targetAnswer.className="goodanswer";
	 }
   }
  }
  
  if (srcElement.className == "multicheck")
  {
   var start,stop;
   start=srcElement.start;
   stop=srcElement.stop;
   for(i=start;i<=stop;i++)
    {
     targetAnswer = document.all(srcElement.id+i+"Answer");
     targetAnswer.style.display="";

     Answer=""; 
     for(j=1;j<=4;j++)
     {
      targetElement=document.all[srcElement.id+i+j];
      if (targetElement.checked) Answer=Answer+targetElement.value;	
     };
     if(targetAnswer.Answer=="")targetAnswer.className="noanswer"
     else
      if(targetAnswer.Answer==Answer)targetAnswer.className="goodanswer"
      else targetAnswer.className="badanswer";   
    }; 
  }
}

document.onclick = clickHandler;