////////////////MATHCATS NEW_COALESCE///////////////////
////////////////DEVELOPED FOR MATH CATS/////////////////
////////////////ALL RIGHTS RESERVED/////////////////////
///This script may not be placed on any other site./////
//////(c)2004 Wendy Petti & Maurici Carbó Jordi/////////
////http://www.mathcats.com //// wpetti@mathcats.com////
////////////////OBJECTS/////////////////////////////////

function xyspeed()
{
this.m_xspeed=0;
this.m_yspeed=0;
}

function calculateSpeed (xactual, yactual, xtarget, ytarget)
{
my_xyspeed=new xyspeed();
var Angle=Math.atan2(yactual-ytarget,xactual-xtarget);
var Modul=Math.sqrt(Math.pow(yactual-ytarget,2)+Math.pow(xactual-xtarget,2));
my_xyspeed.m_xspeed=-(Modul*Math.cos(Angle))*.5;
my_xyspeed.m_yspeed=-(Modul*Math.sin(Angle))*.5;
return my_xyspeed;
}

function attraction()
{
this.m_xRightAttracts=-1;
this.m_xLeftAttracts=-1;
this.m_yTopAttracts=-1;
this.m_yBottomAttracts=-1;
this.m_xRightAttracted=-1;
this.m_xLeftAttracted=-1;
this.m_yTopAttracted=-1;
this.m_yBottomAttracted=-1;
}

function oneletter(xletter,numletter)
{
this.m_Order=numletter;
this.m_NameLetter="";
this.m_letter=xletter;
this.m_xDim=0;
this.m_yDim=0;
this.m_xPos=0;
this.m_yPos=0;
this.m_xSpeed=0;
this.m_ySpeed=0;
this.m_FixedStartingLine=0;
	this.m_xtarget=0;
	this.m_ytarget=0;
	this.m_Row=0;
this.m_DanceOrder=0;
this.m_danceAttraction=new attraction();
this.m_targetAttraction=new attraction();
}


function letters_list(stringresult, fontsize)
{
this.m_fontsize=fontsize;
this.m_listSize=stringresult.length;
this.m_TargetCharWidth=Math.floor((chalkboard_width-this.m_fontsize*5)/(this.m_fontsize/1.5));
this.m_TargetCharHeigth=Math.floor(chalkboard_height/this.m_fontsize);
this.m_ExistsTarget=0;
this.m_ltrLst= new Object(this.m_listSize);
this.m_scrambled=1;
this.AuxTabNumber=0;
this.AuxCRNumber=0;
for (x=0;x<this.m_listSize;x++)
   {
   this.m_ltrLst[x]=new oneletter(stringresult.charAt(x),x);
   this.m_ltrLst[x].m_xPos=Math.floor(Math.random()*(chalkboard_width-this.m_fontsize));
   this.m_ltrLst[x].m_yPos=Math.floor(Math.random()*(chalkboard_height-this.m_fontsize));
   this.m_ltrLst[x].m_xSpeed=Math.floor((Math.random()*8)-4);
   this.m_ltrLst[x].m_ySpeed=Math.floor((Math.random()*8)-4);
   this.m_ltrLst[x].m_NameLetter= "DCh"+x;
	if(x==0)
		{
		this.m_ltrLst[x].m_FixedStartingLine=1;
		this.m_ltrLst[x].m_xtarget=this.m_fontsize/1.5;
		this.m_ltrLst[x].m_ytarget=0;
		}
	else
		{
   	if((this.AuxTabNumber>=this.m_TargetCharWidth)&&(this.m_ltrLst[x].m_letter==" "))
   		{
   		this.AuxTabNumber=0;
   		this.AuxCRNumber++;
   		this.m_ltrLst[x].m_FixedStartingLine=1;
   		this.m_ltrLst[x].m_Row=this.AuxCRNumber;
   		this.m_ltrLst[x].m_xtarget=0;
   		this.m_ltrLst[x].m_ytarget=this.m_ltrLst[x].m_Row*(this.m_fontsize+1);
   		}
   	else
   		{
   		this.AuxTabNumber++
   		this.m_ltrLst[x].m_Row=this.AuxCRNumber;
   		this.m_ltrLst[x].m_targetAttraction.m_xLeftAttracted=x-1;		
   		}
   	}		
	}
}

//////////////MAIN INSTANCE OBJECT//////////////////////////
True_LettersList=new letters_list(result,fontsizeresult);
/////////////MAIN INSTANCE OBJECT///////////////////////////

/////////////////EXTERNAL INTERFACE/////////////////
function target(yesno)
{
True_LettersList.m_ExistsTarget=yesno;
}
/////////////END EXTERNAL INTERFACE/////////////////

////////////////INTERNAL INTERFACE////////////////
function PaintOnChalkboard()
{
for(x=0;x<True_LettersList.m_listSize;x++)
   {
//   alert(True_LettersList.m_ltrLst[x].m_NameLetter);
   xxx=chalboardxOffset+True_LettersList.m_ltrLst[x].m_xPos;
   yyy=chalboardyOffset+True_LettersList.m_ltrLst[x].m_yPos;
   document.write('<div id="'+True_LettersList.m_ltrLst[x].m_NameLetter+'" style="position:absolute;left:'+xxx+';top:'+yyy+';">');
   document.write(True_LettersList.m_ltrLst[x].m_letter);
   document.write('</div>');
//   alert(True_LettersList.m_ltrLst[x].m_xPos);
   }
}

function getChalkboardOffset()
{
objecteChalkboard=document.getElementById("MathCatAnswer");
chalboardxOffset=objecteChalkboard.offsetLeft;
chalboardyOffset=objecteChalkboard.offsetTop;
//alert(chalboardxOffset+" "+chalboardyOffset);
}

function RepaintChalkboard()
{
for(x=0;x<True_LettersList.m_listSize;x++)
   {
	var AuxID="DCh"+x;
	var AuxObjDiv=document.getElementById(AuxID); 
	
	AuxObjDiv.style.left=Math.floor(chalboardxOffset+True_LettersList.m_ltrLst[x].m_xPos);
	AuxObjDiv.style.top=Math.floor(chalboardyOffset+True_LettersList.m_ltrLst[x].m_yPos);
	///////////posar aqui funcions de dimensio//////////////////
	}
}

function resit()
{
for(x=0;x<True_LettersList.m_listSize;x++)
	{
	var newPosx=True_LettersList.m_ltrLst[x].m_xPos + True_LettersList.m_ltrLst[x].m_xSpeed;
	if (newPosx<=0){True_LettersList.m_ltrLst[x].m_xSpeed=Math.abs(True_LettersList.m_ltrLst[x].m_xSpeed);}
	if (newPosx>=chalkboard_width-fontsizeresult){True_LettersList.m_ltrLst[x].m_xSpeed=-Math.abs(True_LettersList.m_ltrLst[x].m_xSpeed);}

	True_LettersList.m_ltrLst[x].m_xPos+=True_LettersList.m_ltrLst[x].m_xSpeed;
	
	if((True_LettersList.m_ltrLst[x].m_xPos>chalkboard_width-fontsizeresult)||(True_LettersList.m_ltrLst[x].m_xPos<0)){True_LettersList.m_ltrLst[x].m_xSpeed*=(-1);}
	True_LettersList.m_ltrLst[x].m_yPos+=True_LettersList.m_ltrLst[x].m_ySpeed;
	if((True_LettersList.m_ltrLst[x].m_yPos>chalkboard_height)||(True_LettersList.m_ltrLst[x].m_yPos<0)){True_LettersList.m_ltrLst[x].m_ySpeed*=(-1);}
	}
RepaintChalkboard();

if(True_LettersList.m_ExistsTarget==1)
	{
	for (x=0;x<True_LettersList.m_listSize;x++)
		{
       if(True_LettersList.m_ltrLst[x].m_FixedStartingLine==1)
         {
      	var auxSpeed=calculateSpeed(True_LettersList.m_ltrLst[x].m_xPos,True_LettersList.m_ltrLst[x].m_yPos,True_LettersList.m_ltrLst[x].m_xtarget, True_LettersList.m_ltrLst[x].m_ytarget); 
         True_LettersList.m_ltrLst[x].m_xSpeed=auxSpeed.m_xspeed;
         True_LettersList.m_ltrLst[x].m_ySpeed=auxSpeed.m_yspeed;
         }
		else
			{
      	var auxSpeed=calculateSpeed(True_LettersList.m_ltrLst[x].m_xPos,True_LettersList.m_ltrLst[x].m_yPos,True_LettersList.m_ltrLst[x-1].m_xPos+fontsizeresult/1.5, True_LettersList.m_ltrLst[x-1].m_yPos); 
         True_LettersList.m_ltrLst[x].m_xSpeed=auxSpeed.m_xspeed;
         True_LettersList.m_ltrLst[x].m_ySpeed=auxSpeed.m_yspeed;
			}
		}
	True_LettersList.m_scrambled=0;
	}
else
	{
	if(True_LettersList.m_scrambled==0)
		{
      for (x=0;x<True_LettersList.m_listSize;x++)
         {
         True_LettersList.m_ltrLst[x].m_xSpeed=Math.floor((Math.random()*8)-4);
         True_LettersList.m_ltrLst[x].m_ySpeed=Math.floor((Math.random()*8)-4);
   		}   
		True_LettersList.m_scrambled=1;
		}
   }

}



//////////////////INIT//////7///////////////////
function init()
{
getChalkboardOffset();
RepaintChalkboard();
setInterval("resit()",100);
}
function reallocChalkboard()
{
getChalkboardOffset();
RepaintChalkboard();
}
///////////////MAIN NAMESPACE//////////////////////
window.onresize=reallocChalkboard;
window.onload=init;
//////////////END MAIN NAMESPACE///////////////////


