// created 28/06/2007#MA
function randomiseArray ( myArray )
{
/*	var i = myArray.length;
	if ( i == 0 )
		return false;
		
	while ( --i )
	{
		var j = Math.floor( Math.random() * ( i + 1 ) );
		var tempi = myArray[i];
		var tempj = myArray[j];
		myArray[i] = tempj;
		myArray[j] = tempi;
	}
*/
/*
  for (var i = 0; i < this.length; i++)
  {
    // Random item in this array.
    var r = parseInt(Math.random() * this.length);
    var obj = this[r];
 
    // Swap.
    this[r] = this[i];
    this[i] = obj;
  }
  alert('Done');
*/

	var aTemp = new Array(myArray.length);
	for (i = 0; i< myArray.length; i++)
	{
		aTemp[i] = myArray[i];
	}
	//aTemp.concat(myArray);
	var aintSeed = new Array(myArray.length);
	aintSeed.randomize(0, myArray.length - 1, true);
	for (i = 0; i< myArray.length; i++)
	{
		//document.getElementById('Test').innerHTML += '<p>' + aintSeed[i] + '</p>';
		myArray[i] = aTemp[ aintSeed[i] ];
		//document.getElementById('Test').innerHTML += '<p>' + myArray[i].substr(9, 9) + '</p>';
	}

/*	myArray.shuffle();
	for (i=1; i<= myArray.length; i++)
	{
		document.getElementById('Test').innerHTML += '<p>' + myArray[i].substr(1, 10) + '</p>';
	}
*/
}

Array.prototype.shuffle = function (){ 
	for(var rnd, tmp, i=this.length; i; rnd=parseInt(Math.random()*i), tmp=this[--i], this[i]=this[rnd], this[rnd]=tmp);
};

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function Default(value, defaultValue) {
	return (value == undefined ? defaultValue : value);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Array.prototype.random = function (remove) {
		remove = Default(remove, true);
		var item = Math.floor(Math.random() * this.length);
		if (remove) {
			this.swap(item, this.length - 1);
		}
		return (remove ? this.pop() : this[item]);
	}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Array.prototype.randomize = function (min, max, ensureUnique) {
		min = Default(min, 1);
		max = Default(max, 100);
		ensureUnique = Default(ensureUnique, false);
		var values = new Array();
		if (ensureUnique) {
			min = Math.min(min, max);
			max = Math.max(min, max);
			for (var i = min; i <= max; i++) {
				values[values.length] = i;
			}
			ensureUnique = (values.length >= this.length);
		}
		for (var i = 0; i < this.length; i++) {
			var value = Number.random(min, max);
			if (ensureUnique) {
				value = values.random();
			}
			this[i] = value;
		}
		return this;
	}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Array.prototype.swap = function (first, second) {
		first = Default(first, 0);
		second = Default(second, 0);
		var temp = this[first];
		this[first] = this[second];
		this[second] = temp;
	}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Number.random = function (min, max) {
		min = Default(min, 1);
		max = Default(max, 100);
		return Math.floor((max - min + 1) * Math.random() + min);
	}


