function $(v){return(document.getElementById(v))}function getEventSrc(e){return window.event?window.event.srcElement:e.target}function CancelEvent(e){if((typeof(e)=="undefined")&&(typeof(window.event)!="undefined")){e=window.event}if(typeof(window.event)!="undefined"){e.cancelBubble=true;}else{e.stopPropagation();}}function AjaxCreate(){try{return new XMLHttpRequest()}catch(e){}try{return new ActiveXObject("MSXML2.XMLHTTP")}catch(e){}try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}return false}function AjaxExecute(url,data,funct){var xhr=AjaxCreate();xhr.onreadystatechange=function(){if((xhr.readyState==4)&&(xhr.status==200)){funct(xhr.responseText)}};xhr.open("POST",url,true);xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send(data)}function AjaxDummy(data){}function ltrim(s){return s.replace(/^\s*/,"")}function rtrim(s){return s.replace(/\s*$/,"")}function trim(s){return rtrim(ltrim(s))}function setFavorite(iURL,iTitle){if(navigator.appVersion.indexOf("Mac",0)>0){alert("This function is not available on Macintosh.\n\nUse instead the key combination \"Apple-D\".");return}if((navigator.appName.indexOf("Microsoft",0)>=0)&&(parseInt(navigator.appVersion)>=4)){window.external.AddFavorite(iURL,iTitle)}else{alert("This function is only available on Internet Explorer.\n\nFor Netscape, you can use instead the key combination \"Control-D\".");}}function showHelp(iShow){$("help").style.display=(iShow?"block":"none");return false}function __Query(iQueryId,iPath){window.location.href="http://"+window.location.hostname+iPath+"/"+$("__query_"+iQueryId).value;return false;}


/*
HTMLElement.prototype.click = function() {
var evt = this.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
} 
*/

	var	ButtonPressed = false;
	var	Changed		  = false;
	var	Class		  = "c1" ;


	function nextClass(c)	{ return (c=="c1")?"c0":(c=="cX"||EditMode)?"c1":"cX";}

	function MouseDown(e)	{ o = getEventSrc(e);  if (o.tagName=="TD")  { ButtonPressed=true ; Class=o.className=nextClass(o.className);}}
	function MouseUp  (e)	{ o = getEventSrc(e);  if (o.tagName=="TD")  { ButtonPressed=false; }}
	function MouseOver(e)	{ o = getEventSrc(e);  if (o.tagName=="TD")  { if (ButtonPressed)	o.className=Class; }
							  if (window.event)
									  window.event.cancelBubble = true;
								else  e.cancelBubble = true;
							}


	function hasChanged()
		{
		Changed = true;



		}


	var aTDs;


	function getBitMap()
		{
		var iResult="";

		for (var i=0; i<aTDs.length; i++)
			{
			iResult+=aTDs[i].className.substr(1,2)
			}

		return iResult
		}



	function submit()
		{
		$("bitmap"  ).value = getBitMap()
		$("f_bitmap").submit()
		}



	function save(iNum)
		{
		AjaxExecute ("http://nonograms.net/save.php", "code="+Code+"&work="+getBitMap()+"&num="+iNum, onSaveReturn);
		return false;
		}



	function onSaveReturn()
		{
		alert('Nonogram saved...');
		Changed	= false;
		}



	function init()
		{
		aTDs = $("grid").getElementsByTagName("TD");

		for (var i=0; i<aTDs.length; i++)
			{
			if (!aTDs[i].className)
				 aTDs[i].className="c0";
			}

		if (Message!=null)
			alert(Message);
		}



	function action(iAction, iBitmap, iCode, iNum)
		{
		$("f").action .value = iAction;
		$("f").bitmap .value = iBitmap;
		$("f").code   .value = iCode;
		$("f").saveNum.value = iNum;
		$("f").submit()
		}




	function closeAll(iBlock)
		{
		var x=[0,1,2,3,4,5];

		if ($('LoadSave'   ))	$('LoadSave'   ).style.display='none';
		if ($('showAddress'))	$('showAddress').style.display='none';
		if ($('createNew'  ))	$('createNew'  ).style.display='none';
		if ($('playRandom' ))	$('playRandom' ).style.display='none';
		if ($('store'	   ))	$('store'	   ).style.display='none';
		}



	function _toggleBlock (iBlock)
		{
		closeAll(iBlock);

		$(iBlock).style.display = ($(iBlock).style.display=='block'?'none':'block');

		return false;
		}


	function toggleLoadSave	  ()	{ return _toggleBlock ('LoadSave'	);	}
	function toggleShowAddress()	{ return _toggleBlock ('showAddress');	}
	function toggleCreateNew  ()	{ return _toggleBlock ('createNew'	);	}
	function togglePlayRandom ()	{ return _toggleBlock ('playRandom' );	}
	function toggleStore	  ()	{ return _toggleBlock ('store'		);	}



	//						
	//	Actions				
	//						

	function doShowSolution()
		{
		window.open("/solution.php?code="+Code, "nonogram", "width=600,height=700,resizable=yes,scrollbars=no,status=yes");

		return false;
		}



	function doEditEncode()		{ action("editEncode"	,getBitMap(), ""	, ""	);  return false;}
	function doCheckCells()		{ action("checkCells"	,getBitMap(), Code	, ""	);  return false;}
	function doLoad(iNum)		{ action("playSaved"	,""			, ""	, iNum	);  return false;}





	function onRowColChange(Id)
		{
		iValue = $("rows"+Id).value+"x"+$("cols"+Id).value;

		for (var i=0, l=$("size"+Id).length; i<l; i++)
			{
			if ($("size"+Id).options[i].value==iValue)
				{
				$("size"+Id).selectedIndex=i
				$("size"+Id).style.backgroundColor="#FFFFFF"
				return;
				}
			}

		$("size"+Id).style.backgroundColor="#F0F0F0"
		}


	function onSizeChange(Id)
		{
		$("size"+Id).style.backgroundColor="#FFFFFF"

		var iSize = $("size"+Id).value.split("x",2);

		$("rows"+Id).value = iSize[0];
		$("cols"+Id).value = iSize[1];

		}

