/* Javascript functions */

// General Useful JScript functions

function is_numeric(x) {
	// 20070707
	return (x.length > 0 && !isNaN(x));
}

function is_array(obj) {
	// 20070707
	return (!(obj.constructor.toString().indexOf("Array") == -1));
}
function number_format(a, b, c, d) {
	// 20070707
	a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
	e = a + '';
	f = e.split('.');
	if (!f[0])	f[0] = '0';
	if (!f[1]) f[1] = '';
	if (f[1].length < b) {
		g = f[1];
		for (i=f[1].length + 1; i <= b; i++)	g += '0';
		f[1] = g;
	}
	if (d != '' && f[0].length > 3) {
		h = f[0];
		f[0] = '';
		for(j = 3; j < h.length; j+=3) {
			i = h.slice(h.length - j, h.length - j + 3);
			f[0] = d + i +  f[0] + '';
		}
		j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
		f[0] = j + f[0];
	}
	c = (b <= 0) ? '' : c;
	return f[0] + c + f[1];
}	



// App specific General JScript functions
function gotoStage(stage) {
	document.getElementById('goto').value = stage;
	document.gotoForm.submit();
}

function clearSession() {
	if (confirm("This will clear all data you have entered on all pages.\nAre you sure you wish to reset this application?")) {
		document.getElementById('cSes').value = 1;
		document.clearForm.submit();
	}
	return false;
}

function populateHidden(which,val) {
	document.getElementById(which).value = val;
}

 // Easier to read ;o)
var year,month,day,c;
function populateDateField(hiddenID,yearID,monthID,dayID,c) {
	c = '/';
	
	year 	= (document.getElementById(yearID).value.length == 1) 	? '0'+document.getElementById(yearID).value 	: document.getElementById(yearID).value;
	month	= (document.getElementById(monthID).value.length == 1)	? '0'+document.getElementById(monthID).value	: document.getElementById(monthID).value;
	day		= (document.getElementById(dayID).value.length == 1)	? '0'+document.getElementById(dayID).value		: document.getElementById(dayID).value;
	
	if (day == '' || month == '' || year == '') {
		document.getElementById(hiddenID).value	= '';
		return false;
	}
	
	return document.getElementById(hiddenID).value = day + c + month + c + year;
	
}

// Concise
/*
function populateDateField(h,y,m,d,c) {
	if (document.getElementById(y).value == '' || document.getElementById(m).value == '' || document.getElementById(d).value == '')	return document.getElementById(h).value	= '';
	return document.getElementById(h).value = document.getElementById(y).value + ((c == undefined) ? '/' : c) + document.getElementById(m).value + ((c == undefined) ? '-' : c)  + document.getElementById(m).value;
}
*/

function convertToMonths(yID,mID,rID) { 
	return document.getElementById(rID).value	= ((is_numeric(document.getElementById(yID).value)) ? document.getElementById(yID).value*12 : 0)+((is_numeric(document.getElementById(mID).value)) ? document.getElementById(mID).value*1 : 0);
}

var y1,y2,m1,m2,y,m,t,d;
function diffInMonths(yID1,mID1,yID2,mID2,rID) {
	y1 = document.getElementById(yID1).value;
	y2 = document.getElementById(yID2).value;
	m1 = document.getElementById(mID1).value;
	m2 = document.getElementById(mID2).value;
	
	if (m2 == '' && y2 == '') {
		d = new Date();
		m2 = d.getMonth()+1;
		y2 = d.getFullYear();
	} 
	
	if (y1 == '' || y2 == '' || m1 == '' || m2 == '') {
		document.getElementById(rID).value = '';
		return false;
	}
	y = (y2*1)-(y1*1);
	y = y*12;
	m = (m2*1)-(m1*1);
	t = (y*1)+(m*1);
	document.getElementById(rID).value = t;
	
	return true;
}

var t,nH,cB;
function timeoutShift(newHeight,targetHeight,which,speed,expand,cB) {
	if (cB == undefined)	cB = 10;
	if ((expand && newHeight < targetHeight+cB) || (!expand && newHeight > targetHeight-cB)) {
		document.getElementById(which).style.height = newHeight+'px';
		nH = (expand) ? (newHeight+cB) : (newHeight-cB)
		t = setTimeout("timeoutShift("+nH+","+targetHeight+",'"+which+"',"+speed+","+expand+")",speed);
	} else {
		if (expand)	nH = (newHeight+cB > targetHeight)	? targetHeight : (newHeight+cB);
		else		nH = (newHeight-cB < targetHeight) 	? targetHeight : (newHeight-cB);
		document.getElementById(which).style.height = nH+'px';
	}
}

function expand (value,whichDiv,startHeight,endHeight,speed) {
	if (value == '')	timeoutShift(startHeight+1,endHeight,whichDiv,speed,true);
}

function contract (value,whichDiv,startHeight,endHeight,speed) {
	if (value == '')	timeoutShift(startHeight+1,endHeight,whichDiv,speed,false);
}


function raiseOpac(opacity, id, timeout) {
	if (opacity < 10) {
		document.getElementById(id).style.filter = 'alpha(opacity=' + opacity + '0)';
		document.getElementById(id).style.opacity = '0.' + opacity;
		document.getElementById(id).style['-moz-opacity'] = '0.' + opacity;
		setTimeout('raiseOpac(' + (opacity+1) + ", '" + id + "', " + timeout + ')', timeout);
	} else {
		document.getElementById(id).style.filter = 'alpha(opacity=100)';
		document.getElementById(id).style.opacity = '1';
		document.getElementById(id).style['-moz-opacity'] = '1';
		//fadeColor(74, id, 1, true);
	}
}
	
function lowerOpac(opacity, id, timeout) {
	if (opacity > 1) {
		document.getElementById(id).style.filter = 'alpha(opacity=' + opacity + '0)';
		document.getElementById(id).style.opacity = '0.' + opacity;
		document.getElementById(id).style['-moz-opacity'] = '0.' + opacity;
		
		setTimeout('lowerOpac(' + (opacity-1) + ", '" + id + "', " + timeout + ')', timeout);
	} else {
		document.getElementById(id).style.filter = 'alpha(opacity=0)';
		document.getElementById(id).style.opacity = '0';
		document.getElementById(id).style['-moz-opacity'] = '0';
		
	//	fadeColor(74, id, 1, true);
	}
}

function toggleBugs() {
	if (document.getElementById('errorHandler').style.display == 'none') {
		document.getElementById('errorHandlerHolder').style.width 	= '99%';
		document.getElementById('errorHandlerH').style.position		= 'relative';
		document.getElementById('errorHandlerH').style.textAlign 	= 'right';
		document.getElementById('errorHandler').style.display		= 'inline';	
	} else {
		document.getElementById('errorHandlerHolder').style.width 	= '50px';
		document.getElementById('errorHandlerH').style.position		= 'absolute';
		document.getElementById('errorHandler').style.display		= 'none';	
	}
}
function checkUserName(username) {
	username = username.replace(/^\s+|\s+$/g,"");
	if (username == '') {
		alert ('Please enter a username to check.');
		return false;
	}
	if (!username.match(/^[0-9a-z\-_]+$/i)) {
		alert ('The username must only contains alphanumeric characters, underscores (_) or hyphens(-)');
		return false;
	}
	
	window.open('username_lookup.php?username='+username,'username_lookup','status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,scrollbars=0,height=250,width=400');
	return false;
}

	var toggle	= new Array('Status','StatusCode');
	function doStatusToggle(ref,val) {
		if (val == "")	{
			for (i=0;i<toggle.length;i++) {
				document.getElementById(toggle[i]).disabled = false;
			}
			document.getElementById('FilterOnSort').value = 'false';
			document.getElementById('order_by').disabled = false;
		} else {
			for (i=0;i<toggle.length;i++) {
				document.getElementById(toggle[i]).disabled = !(ref == toggle[i]);
				if (ref != toggle[i])	document.getElementById(toggle[i]).value = '';
			}
			document.getElementById('FilterOnSort').value = 'true';
			document.getElementById('order_by').disabled = true;
			document.getElementById('order_by').value = ref;
			document.getElementById('order_by2').value = ref;
		}
	}





