$(document).ready(function() {
	$('input.cw_input').focus(function() {
		$("td.red").removeClass('red');
		$("td.active").removeClass('active');
		$("td.error").removeClass('error');	
		$("td.once").removeClass('once');
	});
		
	$("td.input").click(function() {
		//var start = new Date();

		$("td.red").removeClass('red');
		$("td.active").removeClass('active');				
		if($("td.error").length > 0) {
			$("td.error").removeClass('error');
		} 	
		
		$(this).addClass('red');
		$("#hiddenTextarea").focus();
						
		var name = $(this).attr('name');
	    var temp = new Array();
		temp = name.split('_');
	    var x = temp[0];
	    var y = temp[1];
	    var hl = temp[2];
	    var hs = temp[3];
	    var vl = temp[4];
	    var vs = temp[5];
     
		var horizontal = hs*1 + hl*1;
     	var vertical = vs*1 + vl*1;
     	     	
     	if ($("#"+x+"_"+y).hasClass('hor')) {
     		if ($("#"+x+"_"+y).hasClass('once')) {
     			$("td.hor").removeClass('hor');
     			$("#"+x+"_"+y).addClass('ver');
   				
     			for (vs;vs<vertical;vs++) {
				  	$("#" + x + "_" +vs).addClass('active');
				  	$("#" + x + "_" +vs).addClass('ver');
				}
     		} else {
     			$("td.hor").removeClass('hor');
     			$("td.ver").removeClass('ver');
     			$("td.once").removeClass('once');
     			$("#"+x+"_"+y).addClass('once');
     			for (hs;hs<horizontal;hs++) {
				  	$("#" + hs + "_" +y).addClass('active');
				  	$("#" + hs + "_" +y).addClass('hor');
				}
     		}     		
     	} else if ($("#"+x+"_"+y).hasClass('ver')) {
     		if ($("#"+x+"_"+y).hasClass('once')) {
     			$("td.ver").removeClass('ver');
     			$("#"+x+"_"+y).addClass('hor');
     			
     			for (hs;hs<horizontal;hs++) {
				  	$("#" + hs + "_" +y).addClass('active');
				  	$("#" + hs + "_" +y).addClass('hor');
				}
     		} else {
     			$("td.hor").removeClass('hor');
     			$("td.ver").removeClass('ver');
     			$("td.once").removeClass('once');
     			$("#"+x+"_"+y).addClass('once');
     			for (vs;vs<vertical;vs++) {
				  	$("#" + x + "_" +vs).addClass('active');
				  	$("#" + x + "_" +vs).addClass('ver');
				}
     		}
     	} else {
     		$("td.hor").removeClass('hor');
     		$("td.ver").removeClass('ver');
     		$("td.once").removeClass('once');
     		
     		$("#"+x+"_"+y).addClass('once');
     		for (hs;hs<horizontal;hs++) {
			  	$("#" + hs + "_" +y).addClass('active');
			  	$("#" + hs + "_" +y).addClass('hor');
			}
     	} 
     	
     	//var stop = new Date();	
		//$("#time").html(stop-start);
	});
 });

//$(function() {
//$("#crosswordTable td.legend").tooltip({
//	
//	bodyHandler: function() {
//		var id = this.id;		
//				
//		return $("#"+id+"_imgtext").html();
//		
//	},
//	showURL: false
//});
//});


var arr = [];
for (var i=65; i<=90; i++) {
	arr.push(i);
}
//spacebar
arr.push(32);
//enter
arr.push(13);
//backspace
arr.push(8);
//sumniki
arr.push(219);
arr.push(59);
arr.push(220);
arr.push(186);
//delete key
arr.push(46);
//arrow keys
arr.push(37);
arr.push(38);
arr.push(39);
arr.push(40);
	
function keyDownCrossword (e) {
	//var start = new Date();
	if (jQuery.inArray(e.keyCode, arr) != -1) {
		var selected = $(".red");
				
		//enter
		if (e.keyCode == 13) {
			$("td.red").removeClass('red');
			$("td.active").removeClass('active');
			$("td.error").removeClass('error');	
			$("td.once").removeClass('once');		
		} else {
			$("td.once").removeClass('once');	
			if (selected.hasClass('active')) {
				var name = selected.attr('name');
				var temp = new Array();
				temp = name.split('_');
			    var x = temp[0];
			    var y = temp[1];
			    var hl = temp[2];
			    var hs = temp[3];
			    var vl = temp[4];
			    var vs = temp[5];
				var horizontal = hs*1 + hl*1;
		     	var vertical = vs*1 + vl*1;	
		     		     		     			     	
		     	// backspace
		     	if(e.keyCode == 8) { 
		     		$("#"+name).html(""); 
		     		
		     		if ($("#"+x+"_"+y).hasClass('hor')) {
		     			var id = x*1-1 + "_" +y;			    		
			    	} else if ($("#"+x+"_"+y).hasClass('ver')) {
			    		var id = x+ "_" + (y*1-1) ;
			    	}
		     	} else if (e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 39 || e.keyCode == 40) {
		     		var id = skipFields(x,y,e.keyCode,5);
		     		
		     	} else if (e.keyCode == 32) {
		     		var id = x+ "_" + y;
		     		$("#"+id).addClass("once");
		     	} else if (e.keyCode == 46) {
		     		$("#"+name).html("");
		     		$("#cw_"+name).attr({value: ""});  
		     		
		     		if ($("#"+x+"_"+y).hasClass('hor')) {
		     			var id = ((x * 1) + 1) + "_" +y;			    		
			    	} else if ($("#"+x+"_"+y).hasClass('ver')) {
			    		var id = x+ "_" + (y*1+1) ;
			    	}
		     	}
		     	else {
		     		
		     		var char = String.fromCharCode(e.keyCode);
		     		
		     		if (e.keyCode == 219) {
		     			char = "š";
		     		} else if (e.keyCode == 59) {
		     			char = "č";
		     		} else if (e.keyCode == 186) {
		     			char = "č";
		     		}else if (e.keyCode == 220) {
		     			char = "ž";
		     		}
		     				     		
		     		$("#"+name).html(char);
		     		$("#cw_"+name).attr({value: char});
		     		
		     				     		     		 
		     		if ($("#"+x+"_"+y).hasClass('hor')) {
		     			var id = x*1+1 + "_" +y;			    		
			    	} else if ($("#"+x+"_"+y).hasClass('ver')) {
			    		var id = x+ "_" + (y*1+1) ;
			    	}	
		     		
		     		if ($("#"+x+"_"+y).hasClass('geslo')){
		     			var string = "";
		     			$("td.geslo").each(function () {
		     				var id = $(this).attr("name")
		     				string = string + $("div#"+id).html();
		     			});
		     			$("#f_solution").attr({value: string});
		     		}
		     	}
		     	
		     	if (e.keyCode == 32) {
		     		if($("#"+id).hasClass("input")) {
		     			if ($(selected).hasClass("hor")) {
	    					moveKeys(id,"hor");
	    				} else if ($(selected).hasClass("ver")) {
	    					moveKeys(id,"ver");
	    				}
		     		}
		     	} else if($("#"+id).hasClass('active')) {
	    			$("#"+x+"_"+y).removeClass('red')
	    			$("#"+id).addClass("red");
	    		} else {	    			
	    			if($("#"+id).hasClass("input")) {
	    				if ($(selected).hasClass("hor")) {
	    					moveKeys(id,"hor");
	    				} else if ($(selected).hasClass("ver")) {
	    					moveKeys(id,"ver");
	    				}
	    			} else {
	    				
	    			}
	    			
	    		}
			}  
		}
	}
	//var stop = new Date();	
	//$("#timekey").html(stop-start);
}	


function skipFields (x,y,keyCode,length) {
	var id = x+"_"+y;
		
	for (var i=1; i<=length; i++) {
		switch (keyCode) {
			case 37:
				id = x*1-i + "_" + y;
				break;
			case 38:
				var id = x+ "_" + (y*1-i);
				break;
			case 39:
				var id = x*1+i + "_" + y;
				break;
			case 40:
				var id = x+ "_" + (y*1+i);
				break;
		}
		
		if($("#"+id).hasClass("input")){
			return id;	
		}
	}
	return id;
}

function openSubmitForm () {
	$("p.crossword_submit_button").addClass("hide");
	$("div.crossword_submit").removeClass("hide");
}


function moveKeys (id, direction) {
	
	//var start = new Date();

	$("td.red").removeClass('red');
	$("td.active").removeClass('active');				
	if($("td.error").length > 0) {
		$("td.error").removeClass('error');
	} 	
	
	$("#"+id).addClass('red');
	$("#hiddenTextarea").focus();
					
	var name = $("#"+id).attr('name');
    var temp = new Array();
	temp = name.split('_');
    var x = temp[0];
    var y = temp[1];
    var hl = temp[2];
    var hs = temp[3];
    var vl = temp[4];
    var vs = temp[5];
    
	var horizontal = hs*1 + hl*1;
   	var vertical = vs*1 + vl*1;
   	
   	$("#"+x+"_"+y).addClass(direction);
   	   	
   	if ($("#"+x+"_"+y).hasClass('hor')) {
   		if ($("#"+x+"_"+y).hasClass('once')) {
   			$("td.hor").removeClass('hor');
   			$("#"+x+"_"+y).addClass('ver');
 				
   			for (vs;vs<vertical;vs++) {
			  	$("#" + x + "_" +vs).addClass('active');
			  	$("#" + x + "_" +vs).addClass('ver');
			}
   		} else {
   			$("td.hor").removeClass('hor');
   			$("td.ver").removeClass('ver');
   			$("td.once").removeClass('once');
   			$("#"+x+"_"+y).addClass('once');
   			for (hs;hs<horizontal;hs++) {
			  	$("#" + hs + "_" +y).addClass('active');
			  	$("#" + hs + "_" +y).addClass('hor');
			}
   		}     		
   	} else if ($("#"+x+"_"+y).hasClass('ver')) {
   		if ($("#"+x+"_"+y).hasClass('once')) {
   			$("td.ver").removeClass('ver');
   			$("#"+x+"_"+y).addClass('hor');
   			
   			for (hs;hs<horizontal;hs++) {
			  	$("#" + hs + "_" +y).addClass('active');
			  	$("#" + hs + "_" +y).addClass('hor');
			}
   		} else {
   			$("td.hor").removeClass('hor');
   			$("td.ver").removeClass('ver');
   			$("td.once").removeClass('once');
   			$("#"+x+"_"+y).addClass('once');
   			for (vs;vs<vertical;vs++) {
			  	$("#" + x + "_" +vs).addClass('active');
			  	$("#" + x + "_" +vs).addClass('ver');
			}
   		}
   	} else {
   		$("td.hor").removeClass('hor');
   		$("td.ver").removeClass('ver');
   		$("td.once").removeClass('once');
   		
   		$("#"+x+"_"+y).addClass('once');
   		for (hs;hs<horizontal;hs++) {
		  	$("#" + hs + "_" +y).addClass('active');
		  	$("#" + hs + "_" +y).addClass('hor');
		}
   	} 
   	
   	//var stop = new Date();	
	//$("#time").html(stop-start);
}
