
//GLOBALS


//preloads
var preloadfiles = new Array;
var preloadimgs =  new Array;
var preloadindex=0;


// init
window.onload= function () {

	//mailto protectors
	convertmail();

	//rotation and nav preloads
	dopreloads();
}



function setopacity(obj, x) {
	x=Math.round(x*100)/100;
	if (x>0.99) x=0.99;
	if (x<0) x=0;
	obj.style.opacity = x;
	obj.style.MozOpacity = x;
	obj.style.filter = "alpha(opacity=" + (x*100) + ")";
}




//preload functions
//create a queue

function preload(file) {
	preloadfiles[preloadindex] =  file;
	preloadindex++;
}
//action the preload queue on window load so that normal images load first
function dopreloads() {
	var c;
	for (c=0;c<preloadindex;c++){
		preloadimgs[c] = new Image;
		preloadimgs[c].src = preloadfiles[c];
	}
}




//rotator functions
//rotates div content
//slide show globals
var slidefadercounts=    new Array();
var slidefaderpositions= new Array();
var slidefaderstepnos=   new Array();
var slidefaderprimaryinc;
var slidefadersecondaryinc;
var slidefadersecondarysteps;
var slidefaderautoplay;
var slidefaderfadein;

//init slidefader
function rotateslide(id,r) {
	//slidefaderprimaryinc=r;
	
	//config check
	slidefaderprimaryinc= Math.round(slidefaderprimaryinc);
	if (!slidefaderprimaryinc)                 {alert('slidefader config error 1'); return;}
	if (!document.getElementById(id))      {alert('slidefader config error 2'); return;}
	if ((slidefadersecondaryinc * slidefadersecondarysteps) >= (0.7 *slidefaderprimaryinc)) {alert('slidefader config error 3'); return;}
	
	//see how many images there are
	var cc = 1;
	while (document.getElementById(id+'_'+cc)) { 
		//zero all opacitys
		setopacity(document.getElementById(id+'_'+cc), 0);
		cc++; 
	}
	slidefadercounts[id]=cc-1;
	
	//define start pt
	slidefaderpositions[id]=  0;
	doslidefader(id,1); //1 means repeat
}

//slidefader main iterater
function doslidefader(id, repeatflag) {
	
	//init secondary step
	slidefaderstepnos[id]=  1; //the first step is 1/slidefadersecondarysteps
	
	//inc primary shift
	slidefaderpositions[id]++;	
	if (slidefaderpositions[id] > slidefadercounts[id])  slidefaderpositions[id]=1;
	
	//iterate secondary shift until one slide is complete
	doslidefaderstep(id);
		
	//repeat primarys forever
	if (repeatflag && slidefaderautoplay) setTimeout("doslidefader('"+id+"',1)",slidefaderprimaryinc);
}

//slidefader step iterater
function doslidefaderstep(id) {
	
	//work out prev slide
	var step=slidefaderstepnos[id];
	var pos =slidefaderpositions[id];	
	var prevpos=pos-1;
	if (prevpos<1) prevpos =slidefadercounts[id];
		
	//fade in step
	var o=Math.round(step/slidefadersecondarysteps*100)/100; 
	setopacity(document.getElementById(id+'_'+pos),o);
	

	//fade out step
	setopacity(document.getElementById(id+'_'+prevpos), 1-o);
	
	
	//inc step and repeat unless done
	slidefaderstepnos[id]++;  	
	if (slidefaderstepnos[id] <= slidefadersecondarysteps) 	setTimeout("doslidefaderstep('"+id+"')",slidefadersecondaryinc);
}


/*
function setrotatedelay(nn) {
	rotatedelay=nn*1000;
}
//inits a show
function rotateslide(rid,rotatedelay) {
	if (!rid) return;
	if (!rotatedelay) rotatedelay=6000;
	
	if (!document.getElementById(rid)) return;
	if (!document.getElementById(rid+'_0')) return;
	dorotate(rid,0,0);
}
//handles rotations
function dorotate(rid,rno,rprev) {
	//hide prev iteration
	if (rno+rprev)	document.getElementById(rid+'_'+rprev).style.display = 'none';
	//set the iteration to show
	document.getElementById(rid+'_'+rno).style.display = 'block';

	rprev=rno;
	rno++;
	if (!document.getElementById(rid+'_'+rno)) rno=0;
	
	setTimeout("dorotate('"+rid+"',"+rno+","+rprev+")",rotatedelay);
}
*/


//add antispam event handlers, and mailto tag in two seperate very very paranoid steps
//mail protector
//converts mail class to mailto: href

function convertmail(){
	var elements= document.all?document.all:document.getElementsByTagName('span');
	var i,obj,email;
	for (i=0; i< elements.length; i++) {
		if (elements[i].className =='mail'){
			obj=elements[i];
			email= obj.innerHTML;
			email= email.replace(/blablabla/ig,'');
			obj.innerHTML= email.replace(/ /g,'');
			obj.onmouseover= function (){ insertmailto(this);}
		}
	}
}
function insertmailto(obj) {
	var email = obj.innerHTML;
	email = email.replace(/blablabla/ig,'');
	email = email.replace(/ /g,'');
	obj.innerHTML = '<a href="mailto:'+email+'">'+email+'</a>';
	obj.onmouseover= function (){};
}



function subtexthandlers () {
	//add subtext event handlers

	elements= document.all?document.all:document.getElementsByTagName('a');
	for (i=0; i< elements.length; i++) {
		if (elements[i].className =='subhead'){
			obj=elements[i];
			obj.onmouseover= function (){ rollon(this);}
			obj.onmouseout=  function (){ rolloff(this);}
		}
	}
}




//subtext tooltip

function rollon(obj) {
	var subtextobj= document.getElementById('subtext');

	//move the link objs title attribute to empty subtext div
	subtextobj.innerHTML=obj.getAttribute('title');
	obj.setAttribute('title','');

	//set position of subtext div
	var placement = findPos(obj);
	subtextobj.style.left = placement[0] + 19+"px";
	subtextobj.style.top =  placement[1] + 19+"px";

	//turn on subtext div
	subtextobj.className='subtexton';
}
function rolloff(obj) {
	var subtextobj= document.getElementById('subtext');

	//copy subtext back to title
	obj.setAttribute('title',subtextobj.innerHTML);

	//turn off subtext div
	subtextobj.className='subtextoff';
}


//lib function for subtext popups

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}


//popups

function showpopup(label) {
	document.getElementById(label).className='popupon';
}
function hidepopup(label) {
	document.getElementById(label).className='popupoff';
}


// textarea inserter

function insertBB(i,o) {
	if(o == undefined) { o=''; }
	var myField = document.getElementById('textfield');
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		if (sel.text.length > 0) {
			sel.text = i + sel.text + o;
		} else {
			sel.text = i + o;
		}
		myField.focus();
	}
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		var scrollTop = myField.scrollTop;
		if (startPos != endPos) {
			myField.value = myField.value.substring(0, startPos)
				+ i + myField.value.substring(startPos, endPos)
				+ o + myField.value.substring(endPos, myField.value.length);
			cursorPos = cursorPos + i.length + o.length;
		}
		else {
			myField.value = myField.value.substring(0, startPos)
				+ i + o
				+ myField.value.substring(endPos, myField.value.length);
			cursorPos = startPos + i.length;
		}
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
		myField.scrollTop = scrollTop;
	}
	else {
		myField.value += i+o;
		myField.focus();
	}
}

