/* arrayprototype.js
 * by Peter Belesis. v1.0 000516
 * Copyright (c) 2000 Peter Belesis. All Rights Reserved.
 * Originally published and documented at http://www.dhtmlab.com/
 * License to use is granted if and only if this entire copyright notice
 * is included.
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
*/

// This code breaks on a Mac
// Only write it if it is not a Mac
if (!navigator || (navigator && !navigator["appVersion"].search(/mac/gi))) {
	if(Array.prototype.push && ([0].push(true)==true))Array.prototype.push = null;
	if(Array.prototype.splice && typeof([0].splice(0))=="number")Array.prototype.splice = null;
	if(!Array.prototype.shift) {
	    function array_shift() {
	        firstElement = this[0];
	        this.reverse();
	        this.length = Math.max(this.length-1,0);
	        this.reverse();
	        return firstElement;
	    }
	    Array.prototype.shift = array_shift;
	}
	
	if(!Array.prototype.unshift) {
	    function array_unshift() {
	        this.reverse();
	        for(var i=arguments.length-1;i>=0;i--){
	            this[this.length]=arguments[i]
	        }
	        this.reverse();
	        return this.length
	    }
	    Array.prototype.unshift = array_unshift;
	}
	
	if(!Array.prototype.push) {
	    function array_push() {
	        for(var i=0;i<arguments.length;i++){
	            this[this.length]=arguments[i]
	        };
	        return this.length;
	    }
	    Array.prototype.push = array_push;
	}
	
	if(!Array.prototype.pop) {
	    function array_pop(){
	        lastElement = this[this.length-1];
	        this.length = Math.max(this.length-1,0);
	        return lastElement;
	    }
	
	    Array.prototype.pop = array_pop;
	}
	
	if(!Array.prototype.splice) {
	    function array_splice(ind,cnt){
	        if(arguments.length == 0) return ind;
	        if(typeof ind != "number") ind = 0;
	        if(ind < 0) ind = Math.max(0,this.length + ind);
	        if(ind > this.length) {
	            if(arguments.length > 2) ind = this.length;
	            else return [];
	        }
	        if(arguments.length < 2) cnt = this.length-ind;
	        cnt = (typeof cnt == "number") ? Math.max(0,cnt) : 0;
	        removeArray = this.slice(ind,ind+cnt);
	        endArray = this.slice(ind+cnt);
	        this.length = ind;
	        for(var i=2;i<arguments.length;i++){
	            this[this.length] = arguments[i];
	        }
	        for(var i=0;i<endArray.length;i++){
	            this[this.length] = endArray[i];
	        }
	        return removeArray;
	    }
	    Array.prototype.splice = array_splice;
	}
	//end
}