﻿<!-- //
Array.prototype.inarray = function(vItem)
    {
    var nIndex;
    for(nIndex = 0; nIndex < this.length; nIndex++)
        {
        if(this[nIndex] === vItem) return nIndex;
        }
        
    return -1;
    }
    
if(!Array.prototype.push)    
    {
    Array.prototype.push = function(vItem)
        {
	    this[this.length] = vItem;
        }
    }

Array.prototype.subarr = function(nStart, nLength)
    {
	if(nStart >= this.length || (nLength != null && nLength <= 0))
	    return [];
	else if(nStart < 0)
	    {
		if(Math.abs(nStart) > this.length)
		    nStart = 0;
		else
		    nStart = this.length + nStart;
	    }
	    
	if(nLength == null || nLength + nStart > this.length)
	    nLength = this.length - nStart;

	var aReturn = new Array();
	for(var nIndex = nStart; nIndex < nStart + nLength; nIndex++)
		aReturn.push(this[nIndex]);
	    
	return aReturn;
    }

Array.prototype.subarray = function(nIndexA, nIndexB)
    {
	if(nIndexA < 0) nIndexA = 0;
	if(nIndexB == null || nIndexB > this.length) nIndexB = this.length;
	if(nIndexA == nIndexB) return [];
	
	var aReturn = new Array();
	for(var nIndex = nIndexA; nIndex < nIndexB; nIndex++)
		aReturn.push(this[nIndex]);
	    
	return aReturn;
    }

if(!Array.prototype.splice)
    {
    Array.prototype.splice = function(nStart, nLength)
        {
	    if(nLength < 0) nLength = 0;
            
        var nIndex;
	    var aInsert = new Array();
	    if(arguments.length > 2)
	        {
		    for(nIndex = 2; nIndex < arguments.length; nIndex++)
		        {
			    aInsert.push(arguments[i]);
		        }
	        }

	    var aHead = this.subarray(0, nStart);
	    var aDelete = this.subarr(nStart, nLength);
	    var aTail = this.subarray(nStart + nLength);
	    var aNew = aHead.concat(aInsert, aTail);

	    this.length = 0;
	    for(nIndex = 0; nIndex < aNew.length; nIndex++)
	        {
		    this.push(aNew[nIndex]);
	        }

	    return aDelete;
        }
    }
// -->