
/*simple utility*/
function ajaxLink(event){
	if(event.target){
		var source = event.target
	} else {
		var source = event.srcElement
	}
	$("#ajaxLinkDIV").html("");
	$("#ajaxLinkDIV").load(source.href, function(){
		$("#ajaxLinkDIV").slideDown("fast");
	});
	var offset = $(source).offset();
	$("#ajaxLinkDIV").css("top", offset.top+10);
	$("#ajaxLinkDIV").css("left", offset.left + $(source).width() + 5);
	return false;
}
function hideAjaxLinkDIV(){
	$("#ajaxLinkDIV").slideUp("fast");
}
(function($) {
	/*-------------------------------> helperifier <-------------------------------*/
	/*Animation object*/
	function helperifyAnimation(text){
		var index = text.search('new [\$][\.]gameQuery[\.]Animation');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+4);
			var postfix = helperifyAnimation(helperifyAnimationOptions(text.substring(index+25)));
			return prefix + '<a class="jsdoc" href="../api/Animation.html" onclick="javascript:return ajaxLink(event)">$.gameQuery.Animation</a>' + postfix;
		}
	}
	function helperifyAnimationOptions(text){
		var startIndex = text.search("{");
		var stopIndex = text.search("}");
		var prefix = text.substring(0,startIndex);
		var work = text.substring(startIndex,stopIndex-1);
		var postfix = text.substring(stopIndex-1);
		
		work = work.replace("imageURL:", "<a class='jsdoc' href='../api/Animation_imageURL.html' onclick='javascript:return ajaxLink(event)'>imageURL</a>:");
		work = work.replace("numberOfFrame:", "<a class='jsdoc' href='../api/Animation_numberOfFrame.html' onclick='javascript:return ajaxLink(event)'>numberOfFrame</a>:");
		work = work.replace("delta:", "<a class='jsdoc' href='../api/Animation_delta.html' onclick='javascript:return ajaxLink(event)'>delta</a>:");
		work = work.replace("rate:", "<a class='jsdoc' href='../api/Animation_rate.html' onclick='javascript:return ajaxLink(event)'>rate</a>:");
		work = work.replace("type:", "<a class='jsdoc' href='../api/Animation_type.html' onclick='javascript:return ajaxLink(event)'>type</a>:");
		
		return prefix + work + postfix;
	}
	/*addGroup*/
	function helperifyAddGroup(text){
		var index = text.search('.addGroup[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyAddGroup(helperifyAddGroupOptions(text.substring(index+9)));
			return prefix + '<a class="jsdoc" href="../api/addGroup.html" onclick="javascript:return ajaxLink(event)">addGroup</a>' + postfix;
		}
	}
	function helperifyAddGroupOptions(text){
		var startIndex = text.search("{");
		var stopIndex = text.search("}");
		var prefix = text.substring(0,startIndex);
		var work = text.substring(startIndex,stopIndex-1);
		var postfix = text.substring(stopIndex-1);
		
		work = work.replace("overflow:", "<a class='jsdoc' href='../api/addGroup_overflow.html' onclick='javascript:return ajaxLink(event)'>overflow</a>:");
		work = work.replace("height:", "<a class='jsdoc' href='../api/addGroup_height.html' onclick='javascript:return ajaxLink(event)'>height</a>:");
		work = work.replace("width:", "<a class='jsdoc' href='../api/addGroup_width.html' onclick='javascript:return ajaxLink(event)'>width</a>:");
		work = work.replace("posx:", "<a class='jsdoc' href='../api/addGroup_posx.html' onclick='javascript:return ajaxLink(event)'>posx</a>:");
		work = work.replace("posy:", "<a class='jsdoc' href='../api/addGroup_posy.html' onclick='javascript:return ajaxLink(event)'>posy</a>:");
		
		return prefix + work + postfix;
	}
	/*addSprite*/
	function helperifyAddSprite(text){
		var index = text.search('.addSprite[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyAddSprite(helperifyAddSpriteOptions(text.substring(index+10)));
			return prefix + '<a class="jsdoc" href="../api/addSprite.html" onclick="javascript:return ajaxLink(event)">addSprite</a>' + postfix;
		}
	}
	function helperifyAddSpriteOptions(text){
		var startIndex = text.search("{");
		var stopIndex = text.search("}");
		var prefix = text.substring(0,startIndex);
		var work = text.substring(startIndex,stopIndex-1);
		var postfix = text.substring(stopIndex-1);
		
		work = work.replace("animation:", "<a class='jsdoc' href='../api/addSprite_animation.html' onclick='javascript:return ajaxLink(event)'>animation</a>:");
		work = work.replace("height:", "<a class='jsdoc' href='../api/addSprite_height.html' onclick='javascript:return ajaxLink(event)'>height</a>:");
		work = work.replace("width:", "<a class='jsdoc' href='../api/addSprite_width.html' onclick='javascript:return ajaxLink(event)'>width</a>:");
		work = work.replace("posx:", "<a class='jsdoc' href='../api/addSprite_posx.html' onclick='javascript:return ajaxLink(event)'>posx</a>:");
		work = work.replace("posy:", "<a class='jsdoc' href='../api/addSprite_posy.html' onclick='javascript:return ajaxLink(event)'>posy</a>:");
		work = work.replace("callback:", "<a class='jsdoc' href='../api/addSprite_animation.html' onclick='javascript:return ajaxLink(event)'>callback</a>:");
		
		return prefix + work + postfix;
	}
	/*collision*/
	function helperifyCollision(text){
		var index = text.search('.collision[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyCollision(text.substring(index+10));
			return prefix + '<a class="jsdoc" href="../api/collision.html" onclick="javascript:return ajaxLink(event)">collision</a>' + postfix;
		}
	}
	/*playground*/
	function helperifyPlayground(text){
		var index = text.search('.playground[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyPlayground(helperifyPlaygroundOptions(text.substring(index+11)));
			return prefix + '<a class="jsdoc" href="../api/playground.html" onclick="javascript:return ajaxLink(event)">playground</a>' + postfix;
		}
	}
	function helperifyPlaygroundOptions(text){
		var startIndex = text.search("{");
		var stopIndex = text.search("}");
		var prefix = text.substring(0,startIndex);
		var work = text.substring(startIndex,stopIndex-1);
		var postfix = text.substring(stopIndex-1);
		
		work = work.replace("refreshRate:", "<a class='jsdoc' href='../api/playground_refreshRate.html' onclick='javascript:return ajaxLink(event)'>refreshRate</a>:");
		work = work.replace("height:", "<a class='jsdoc' href='../api/playground_height.html' onclick='javascript:return ajaxLink(event)'>height</a>:");
		work = work.replace("width:", "<a class='jsdoc' href='../api/playground_width.html' onclick='javascript:return ajaxLink(event)'>width</a>:");
		
		return prefix + work + postfix;
	}
	/*playsound*/
	function helperifyPlaySound(text){
		var index = text.search('.playSound[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyPlaySound(text.substring(index+10));
			return prefix + '<a class="jsdoc" href="../api/playSound.html" onclick="javascript:return ajaxLink(event)">playSound</a>' + postfix;
		}
	}
	/*registerCallback*/
	function helperifyRegisterCallback(text){
		var index = text.search('.registerCallback[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyRegisterCallback(text.substring(index+17));
			return prefix + '<a class="jsdoc" href="../api/registerCallback.html" onclick="javascript:return ajaxLink(event)">registerCallback</a>' + postfix;
		}
	}
	/*addSound*/
	function helperifyAddSound(text){
		var index = text.search('.addSound[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyAddSound(text.substring(index+9));
			return prefix + '<a class="jsdoc" href="../api/addSound.html" onclick="javascript:return ajaxLink(event)">addSound</a>' + postfix;
		}
	}
	/*setAnimation*/
	function helperifySetAnimation(text){
		var index = text.search('.setAnimation[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifySetAnimation(text.substring(index+13));
			return prefix + '<a class="jsdoc" href="../api/setAnimation.html" onclick="javascript:return ajaxLink(event)">setAnimation</a>' + postfix;
		}
	}
	/*setLoadbar*/
	function helperifySetLoadbar(text){
		var index = text.search('.setLoadBar[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifySetLoadbar(text.substring(index+11));
			return prefix + '<a class="jsdoc" href="../api/setLoadbar.html" onclick="javascript:return ajaxLink(event)">setLoadBar</a>' + postfix;
		}
	}
	/*startGame*/
	function helperifyStartGame(text){
		var index = text.search('.startGame[\(]');
		if(index == -1){
			return text
		} else {
			var prefix = text.substring(0,index+1);
			var postfix = helperifyStartGame(text.substring(index+10));
			return prefix + '<a class="jsdoc" href="../api/startGame.html" onclick="javascript:return ajaxLink(event)">startGame</a>' + postfix;
		}
	}
	
	
	function helperify(text){
	 return helperifyAnimation(
				helperifyAddGroup(
					helperifyAddSprite(
						helperifyPlayground(
							helperifyRegisterCallback(
								helperifyAddSound(
									helperifyPlaySound(
										helperifySetAnimation(
											helperifySetLoadbar(
												helperifyStartGame(
													helperifyCollision(text)
												)
											)
										)
									)
								)
							)
						)
					)
				)
			);
	}

	jQuery.fn.gamequeryAPIhelperify = function() {
		$(this).each(function(){
			$(this).html(helperify($(this).html()));
		});
	};
})(jQuery);
$(function(){
	if($("#ajaxLinkDIV").length == 0){
		$("body").append("<div id='ajaxLinkDIV' style='position: absolute; display: none; width: 350px; background: #FFFF99; padding: 5px; border: solid thin #DDDD77; overflow: auto; text-align: left;-moz-border-radius: 10px;-moz-border-radius-topleft: 0px;-webkit-border-radius: 10px;-webkit-border-top-left-radius: 0px;-moz-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.9);-moz-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.9);-webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.9)' onclick='javascript:hideAjaxLinkDIV()'></div>")
	}
})