/* VARS */

var eventStart=0;
var crossEventX=0;
var crossEventY=0;
var crossEventDir="";
var chars=" a±bcædeêfghijkl³mnñoópqrs¶tuvwxyz¼¿A¡BCÆDEFGHIJKL£MNÑOÓPQRS¦TUVWXYZ¬¯";

/* GENERAL DOM */

function clearSubnodesById(nodeId){
	for(i=nodeId.childNodes.length-1;i>=0;i--){
		nodeId.removeChild(nodeId.childNodes[i]);
	}//for
}//clearSubnodeById

function addTextById(nodeId,textToAdd){
	var entryText=document.createTextNode(textToAdd);
	nodeId.appendChild(entryText);
}//addTextById

/* CROSSWORD */

function crossBoubleOn(ev,textToAdd){
	if (navigator.appName=="Microsoft Internet Explorer"){
		localevent=window.event;
		localOffX=document.documentElement.scrollLeft;
		localOffY=document.documentElement.scrollTop;
	}//if
	else{
		localevent=ev;
		localOffX=window.pageXOffset;
		localOffY=window.pageYOffset;
	}//else
	clearSubnodesById(document.getElementById('crossBouble'));
	addTextById(document.getElementById('crossBouble'),textToAdd);
	document.getElementById('crossBouble').attributes.getNamedItem('class').value="crossBoubleVisible";
	document.getElementById('crossBouble').style.top=(localevent.clientY+20+localOffY)+"px";
	document.getElementById('crossBouble').style.left=(localevent.clientX+20+localOffX)+"px";
}//crossBoubleOn

function crossBoubleOff(ev){
	if (navigator.appName=="Microsoft Internet Explorer"){
		localevent=window.event;
	}//if
	else{
		localevent=ev;
	}//else
	document.getElementById('crossBouble').attributes.getNamedItem('class').value="crossBoubleHidden";
	document.getElementById('crossBouble').style.top=0+"px";
	document.getElementById('crossBouble').style.left=0+"px";
	clearSubnodesById(document.getElementById('crossBouble'));
}//crossBoubleOff

function crossBoubleMove(ev){
	if (navigator.appName=="Microsoft Internet Explorer"){
		localevent=window.event;
		localOffX=document.documentElement.scrollLeft;
		localOffY=document.documentElement.scrollTop;
	}//if
	else{
		localevent=ev;
		localOffX=window.pageXOffset;
		localOffY=window.pageYOffset;
	}//else
	document.getElementById('crossBouble').style.top=(localevent.clientY+20+localOffY)+"px";
	document.getElementById('crossBouble').style.left=(localevent.clientX+20+localOffX)+"px";
}//crossBoubleMove

function crossEnter(ev){
	if (eventStart!=0){
		if ((navigator.appName=="Microsoft Internet Explorer")||(navigator.appName=="Opera")){
			localevent=window.event;
			charcode=localevent.keyCode;
		}//if
		else{
			localevent=ev;
			charcode=localevent.charCode;
		}//else
		letter=String.fromCharCode(charcode);
		if (chars.indexOf(letter)>=0){
			addCellChar(letter);
			eval("currentCell=crossNext_"+crossEventDir+"_"+crossEventY+"_"+crossEventX+";");
			if (currentCell=="crossNext_"+crossEventDir+"_#_#"){
				crossClearHighlight();
			}//if
			else{
				crossArray=currentCell.split("_");
				crossSetCurrentHighlight(crossEventX,crossEventY,crossArray[3],crossArray[2]);
				crossEventY=crossArray[2];
				crossEventX=crossArray[3];
			}//else
		}//if
	}//if
}//crossEnter

function crossClearHighlight(){
	for(i=0;i<crossHeight;i++){
		for(j=0;j<crossWidth;j++){
			crossField="crossField_"+i+"_"+j;
			document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellActive","cellNormal");
			document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellCurrent","cellNormal");
			document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellSuperActive","cellSuper");
			document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellSuperCurrent","cellSuper");
		}//for
	}//for
	eventStart=0;
}//crossClearHighlight

function crossSetHighlight(startx,starty,dir){
	crossClearHighlight();
	eval("currentCell=crossNext_"+dir+"_"+starty+"_"+startx+";");
	while(1){
		if (currentCell=="crossNext_"+dir+"_#_#"){
			return;
		}//if
		crossArray=currentCell.split("_");
		currentCellY=crossArray[2];
		currentCellX=crossArray[3];
		if (eventStart==0){
			crossEventX=currentCellX;
			crossEventY=currentCellY;
			crossEventDir=dir;
		}//if
		crossField="crossField_"+currentCellY+"_"+currentCellX;
		document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellNormal","cellActive");
		document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellSuper","cellSuperActive");
		eval("currentCell=crossNext_"+dir+"_"+currentCellY+"_"+currentCellX+";");
		if (eventStart==0){
			crossSetCurrentHighlight(0,0,crossEventX,crossEventY);
			eventStart=1;
		}//if
	}//while
}//crossSetHighlight

function crossSetCurrentHighlight(prevx,prevy,currentx,currenty){
	if (eventStart==1){
		crossField="crossField_"+prevy+"_"+prevx;
		document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellCurrent","cellActive");
		document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellSuperCurrent","cellSuperActive");
	}//if
	crossField="crossField_"+currenty+"_"+currentx;
	document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellActive","cellCurrent");
	document.getElementById(crossField).attributes.getNamedItem('class').value=document.getElementById(crossField).attributes.getNamedItem('class').value.replace("cellSuperActive","cellSuperCurrent");
}//crossSetCurrentHighlight

function addCellChar(letter){
	var entryText=document.createTextNode(letter);
	crossField="crossField_"+crossEventY+"_"+crossEventX;
	clearSubnodesById(document.getElementById(crossField).firstChild);
	document.getElementById(crossField).firstChild.appendChild(entryText);
}//addCellChar

function composeResult(){
	var resultText="";
	if (crossResultAll==0){
		resultCellArray=resultCells.split(":");
		for(i=0;i<resultCellArray.length;i++){
			crossField="crossField_"+resultCellArray[i];
			dummy=i+crossField; //FF workaround
			resultText=resultText+document.getElementById(crossField).firstChild.firstChild.nodeValue;
		}//for
	}//if
	else{
		for(i=0;i<crossHeight;i++){
			for(j=0;j<crossWidth;j++){
				crossField="crossField_"+i+"_"+j;
				crossClass=document.getElementById(crossField).attributes.getNamedItem('class').value;
				if ((crossClass.indexOf("cellNormal")>=0)||(crossClass.indexOf("cellActive")>=0)||(crossClass.indexOf("cellSuper")>=0)||(crossClass.indexOf("cellSuperActive")>=0)){
					resultText=resultText+document.getElementById(crossField).firstChild.firstChild.nodeValue;
				}//if
			}//for
		}//for
	}//else
	return resultText;
}//composeResult

function addCrosswordEventHandler(){
	document.onkeypress=crossEnter;
}//addCrosswordEventHandler

function sendCrossword(formname,fieldname){
	for(i=0;i<document.forms[formname].elements.length;i++){
		if (document.forms[formname].elements[i].name==fieldname){
			document.forms[formname].elements[i].value=composeResult();
		}//if
	}//for
	document.forms[formname].submit();
	return true;
}//sendCrossword
