///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// 	HK510 Basic Method v5.1
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
	if(!Array.prototype.push)
	{
		Array.prototype.push = function(v)
		{
			this[this.length] = v;
			return this.length;
		};
	}

	if(!Array.prototype.splice)
	{
		Array.prototype.splice = function()
		{
			var _a0 = arguments;
			var _a1 = this;
			var _a2 = new Array();
			var _l = this.length;
			var _i = _a0[0];
			_i = (_i>_l)? _l : _i;
			var _c = _a0[1];
			_c = (_c>(_l-_i))? _l-_i : _c;
			var _p = _a0.length-2;

			this._delete = function(_i,_c,_l,_a)
			{
				for(var i = 0;i<=_l;i++)
				{
					var _x = (i>=_i+_c)? i-_c : i-_i;
					(i>=_i && i<_i+_c)? _a2[_x] = _a1[i] : this[_x] = _a[i];
				}
				this.length = _l-_c;
			};

			this._add = function(_i,_c,_p,_l,_a0,_a1)
			{
				var _a = new Array();
				var _l = (_l+_p-1);
				var _u = (_i+_p)-1;
				for(var i = 0;i<=_l;i++)
				{
					var _n = i;
					if(_n>=_i) _n = (i>_u)? i-_p : i+2-_i;
					_a[i] = (i<_i || i>_u)?_a1[_n] : _a0[_n];
				}
				for(var i = 0;i<=_a.length-1;i++) this[i] = _a[i];
				this.length = _a.length;
			};

			if(_c>0) this._delete(_i,_c,_l,this);
			if(_p>0) this._add(_i,_c,_p,this.length,_a0,this);
			return _a2;
		};
	}

	if(!Function.prototype.apply)
	{
		Function.prototype.apply = function(_p,_a0)
		{
			var _a1 = new Array();
			var _r, exec;
			if(!_p) _p = window;
			if(!_a0) _a0 = new Array();
			for(var i=0;i<_a0.length;i++)_a1[i] = "_a0["+i+"]";
			exec = "_p._HKApply(" + _a1.join(",") + ");";
			_p._HKApply = this;
			_r = eval(exec);
			delete _p._HKApply;
			return _r;
		}
	}
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// HK510 Array Utility v8.04

	Array.prototype.__searchIn = function(n)
	{
		return __analyse(this,n,null,false);
	};

	Array.prototype.__searchAndReplace = function(n,_si)
	{
		return __analyse(this,n,null,true,_si);
	};
	
	Array.prototype.__deleteIn = function(n)
	{
		return __analyse(this,n,null,true);
	};
	Array.prototype.__deleteInAtIndex = function(n,i)
	{
		return __analyse(this,n,i,true);
	};	

	function __analyse(a,n,i,b,_si)
	{
		var o	 	= new Object();
		o._found 		= false;
		o._index 		= null;
		o._item 		= null;		
		o._deleted 	= false;
		if(i!=null)
		{
			if(b)
			{
				o._found = true;
				o._index = i;
				o._item = a[i];
				a.splice(i,1);
				o._deleted = true;
			}
		}else{
			for(var i = 0;i<=a.length-1;i++)
			{
				var _i = a[i];
				if(typeof(_i)=='object')
				{
					var _b1 = o._found = (typeof(n)=='object')? true : false;
					for(var j in _i)
					{
						var x = (_b1)? n[j] : n;
						if(x != _i[j])
						{
							if(_b1)
							{
								o._found = false;
								break;
							}	
						}else{
							if(!_b1)
							{
								o._found = true;
								break;
							}
						}	
					}
				}
				if(n==_i || o._found)
				{
					o._found = true;
					o._index = i;
					o._item = _i;
					if(b)
					{
						(typeof(_si)!='undefined')? a.splice(i,1,_si) : a.splice(i,1);
						o._deleted = true;
					}	
					break;
				}	
			}
		}
		return o;
	};

//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
