/*
	sparkley corners 08/2006
  jumpstation.co.uk
*/

	var obj;
	var rndClass;

	// simply initiates thread()
	function sparkle() {
		setTimeout('thread()',randomDelay(10000));
	}

	// randomly calls getRndCorner.
	function thread() {
		rndClass='';
		switch (rndnum(4)) {
			case 0 : rndClass='tl';
			break;
			case 1 : rndClass='tr';
			break;
			case 2 : rndClass='bl';
			break;
			case 3 : rndClass='br';
			break;
		}
		// find object that will be sparkled
		obj=getRndCorner(rndClass);
		if (typeof obj == 'object') {	
			sparkleObj(1);
		} else {
			setTimeout('thread()',randomDelay(10000));
		}
	}

	// does the sparkling
	function sparkleObj(phase) {
		obj.setAttribute('class',rndClass+'S'+phase);
		obj.className = rndClass+'S'+phase;
		phase++;
		if (phase>4) {
			setTimeout('thread()',randomDelay(10000));
			obj.setAttribute('class',rndClass);
			obj.className = rndClass;
		} else {
			setTimeout('sparkleObj('+phase+')',((phase*100)*1) );
		}
	}

	// gets a random corner based on supplied class, ensures sparkling corners do not get re-sparkled
	function getRndCorner(objClass) {
		var objects = document.getElementsByTagName("DIV");
		var total=0;
		for(var i=0;i<objects.length;i++) {
			if ( (objects[i].getAttribute('class') == objClass) || (objects[i].className==objClass) ) {
				total++;
			}
		}
		var choosen=rndnum(total-1)+1;
		var current=1;
		var found='';
		objects = document.getElementsByTagName("DIV");
		for(var i=0;i<objects.length;i++) {
			if ( (objects[i].getAttribute('class') == objClass) || (objects[i].className==objClass) )  {
				if (current==choosen) {
					found=objects[i];
					i=objects.length;
				}
				current++;
			}
		}
		return(found);
	}

	// returns a random number between 0 and 'limit'-1
	function rndnum(limit) {
		return(Math.round((Math.random()*limit)));
	}

	// just makes the code a little more readable
	function randomDelay(delay) {
		return(rndnum(delay));
	}
