function copyProps(to, from) {
	for (var prop in from)
		to[prop] = from[prop];
}
/* Modules */
/*function Marine(props) {
	copyProps(this, props);
}

Marine.prototype = {
	step: function() {
		
	}
};*/
/* Modules */
function NinjonXs(mods) {
	this.Mod = new Object();
	
	eval(mods)
	
	this.now = 0;
	
	this.sender = new Object();
	this.debugOutput = '';
}


var pSent = 0;
var pComplete = 0;

NinjonXs.prototype = {
	step: function(dt) {
		$j.each(NinjonX.Mod, function(i, mod) {
			mod.step();
		});
		
		NinjonX.post();
	},
	post: function(dt) {
		var senderObj = '';
		var st = new Date();
		st = st.getTime();
		
		$j.each(NinjonX.sender, function(i, val) {
			senderObj += '&' + i + '=' + val;
			delete NinjonX.sender[i];
	    });
		
		if(senderObj) {

			/*NinjonX.sender['t'] = st;
			$j.post("/Vale/_ninjonx.php?a=1", NinjonX.sender );
			
			fC = '';
			if(NinjonX.sender['m']) {
				NinjonX.sender['m'] = '';	
			}*/

			$j.ajax({
			  type: "POST",
			  url: "/_ninjonx.php?a=1&p=" + NinjonX.settings.INDEXPAGE.replace('/', '').replace('/', ''),
			  dataType: "jsonp",
			  cache: false,
			  beforeSend: function(xhr) {
					
					
			},
			  data: "t=" + st + senderObj,
			  success: function(msg){
				  //alert(msg);
//					$j('#pComplete').html('Complete : ' + (++pComplete));
//					$j('#pReturned').html(msg);
					fC = '';
					if(NinjonX.sender['m']) {
						NinjonX.sender['m'] = '';	
					}
					
//					document.getElementById('pReturned').innerHTML = msg;
			  }
		
			});
		}
		
		
	},
	parseData: function(debug) {
		if(!debug) {
			debug = '[]';	
		}
		
		var data = eval('(' + debug + ')');
		//$j("#ninjetdeb").html('');
		
		var myObj;
		
		$j.each(data, function(i, val) {
			if(parseInt(i.substr(0, 1)) > -1) {
				switch(typeof(val)) {
					case 'object':
						//var tempObject = eval(val);
						$j.each(val, function(tempi, tempval) {
							eval(tempval);		  
							//myObj =  myObj + "-" + typeof(tempval) + " - ";
							
						});
						
						//$j("#ninjetdeb").html($j("#ninjetdeb").html() + myObj);
						
					break;
					default:
						eval(val);
						//$j("#ninjetdeb").html(NinjonX.now);
					break;
				}
			}
			
	    });
		
		//debug = debug.replace(/}/gi, '').replace(/{"/, '{ ').replace(':{"', ' }<br />').replace(/,"/gi, '<br />').replace(/"/gi, '').replace(/:/gi, ': ');
		debug = debug.replace(/":"/gi, '<br />:').replace(/","/gi, ',<br />').replace(/"/gi, '<br />').replace(/<br \/>:{/gi, ' = Array<br />').replace(/<br \/>:/gi, ': ').replace(/{/gi, '').replace(/}/gi, '').replace(/,/gi, '');
		
		switch(NinjonX.settings.OUTPUT) {
			case '0.5':
				$j("#ninjetdeb").html(debug);
			break;
			case '1':
			case '2':
				$j("#ninjetdeb").html(debug);
			break;
			default:
				$j("#ninjetdeb").remove();
			break;	
		}
		
	},
	t: function(t) {
		var et = new Date();
		et = et.getTime();
		
		if(parseInt(parseInt(et) - parseInt(t)) > 0 && parseInt(parseInt(et) - parseInt(t)) < 300) {
//			$j('#d3').append("." + parseInt(parseInt(et) - parseInt(t)));
//			$j('#d2').html('d2: ');
//			$j('#d3').html('d3: ');

			return true;
		} else {
//			$j('#d2').append("." + parseInt(parseInt(et) - parseInt(t)));
			return false;
		}
		
	}
};

var NinjonX = new NinjonXs(startModules);
	NinjonX.startup = "NinjonXStartup();";
	NinjonX.drawData = "NinjonXDrawData(NinjonX);";
	
	NinjonX.settings = settings;

$j(document).ready(function()
{	
	eval(NinjonX.startup);

	var timeout;

	var dt = 100;
		
	var timeoutBody = function() {
		NinjonX.step(dt);
		
		eval(NinjonX.drawData);
		
		switch(NinjonX.settings.OUTPUT) {
			case '0.5':
				$j("#ninjonxdeb").html(NinjonX.debugOutput);
				NinjonX.debugOutput = '';
			break;
			case '1':
			case '2':
				$j("#ninjonxdeb").html(NinjonX.debugOutput);
				NinjonX.debugOutput = '';
			break;
			default:
				$j("#ninjonxdeb").remove();
			break;	
		}

		timeout = setTimeout(timeoutBody, dt);
	};

	timeoutBody();
});