// JavaScript Document
var newsoriginal;

function initialise () {
	fader(document.getElementById('wrapper'), 0, 1, 250);
	document.getElementById('images').style.opacity="0";
	createdom('div','timer',['width=auto','height=auto','bottom=0','padding=5px 10px 5px 10px','font=bold 11px Arial','color=#FFFFFF','background=#333333','position=absolute'],document.getElementById('slidecontent'), "Loading Images");
	
	/*CAROUSEL CALLERS */
	document.getElementById('images').getElementsByTagName('img')[0].onload = function () {
		fader (document.getElementById('images'), 0, 1, 500);
	}
	loadcarousel();
	
	loadmenu();
	loadcal(now_mth, now_yr);
	newsoriginal = document.getElementById('newscontent').innerHTML;
	setTimeout(function () { loadnews(); }, 500);
	
	/* LOAD FADE GRID SCRIPT */
	//loadfadegrid('images',5,5);
	
	document.getElementById('newsheader').innerHTML='<img src="images_template/news.png" alt="Click here for the news" />';
	document.getElementById('journalheader').innerHTML='<img src="images_template/journalnews.png" alt="Click here for journal updates" />';
	document.getElementById('calheader').innerHTML='<img src="images_template/schedule.png" alt="Click here for schedule of work" />';
	
}

//GRID FADER SCRIPT
/* ------------------------------------------------------------------------------------------------------------------------------------------*/
function loadfadegrid (imgparam,xcount,ycount,alt,timer) {
	var imgint = findimgset(imgparam, img_array); /* get current and next two images to load */
	var gridobjects = setgrid(imgparam,xcount,ycount,imgint[0],imgint[1]); /* setup two main divs to contain grids */
	fader(document.getElementById(imgparam), 0, 1, 500); /* fade main parent div switch on for fade in entry */
	
	/*preload all other images */
	for (var i=0, il=img_array.length; i<il; i++) {
		var newimage = new Image();
		newimage.src = img_array[i];
	}
	
	(function (gridobjects) { setTimeout(function () { loopgridfade(gridobjects); },3500); })(gridobjects);
}
/* Loop to find new image positions in array. Produces 3 results - current, next, and last*/
function findimgset (param,array) {
	var current = document.getElementById(param).getElementsByTagName('img')[0].getAttribute('src'); 
	for (var i=0, il=array.length; i<il; i++) {
		if(array[i]==current) {
			currentint = i;
			i+1<=array.length-1 ? nextint = (i+1) : nextint = 0;
			nextint+1>array.length-1 ? lastint = 0 : lastint = nextint+1;
			break;
		}
	}
	return [currentint,nextint,lastint];
}
/* Set grid and launch */
function setgrid(param,xvalue,yvalue,currentimg,nextimg) {
	var gridtotal = xvalue * yvalue; /* Maximum grid objects */
	document.getElementById(param).innerHTML='';	 /* parent element from param */
	//GET PARENT ATTRIBUTES
	var newwidth = document.getElementById(param).clientWidth; /*width of parent object */
	var newheight = document.getElementById(param).clientHeight; /*height of parent object */
	//CREATE THE TWO DIVS FOR GRIDFADE
	var div1 = createdom('div','gridfadediv1',['width='+newwidth+'px','height='+newheight+'px','position=absolute','margin=0','zIndex=1'],document.getElementById(param));
	var div2 = createdom('div','gridfadediv2',['width='+newwidth+'px','height='+newheight+'px','position=absolute','margin=0','zIndex=2'],document.getElementById(param));
	// THE WIDTH AND HEIGHT OF EACH GRID ITEM
	var x_var = newwidth/xvalue;
	var y_var = newheight/yvalue;
	/* Create array for margin variables */
	var gridcord = gridstructure(x_var, y_var, newwidth, gridtotal);
	var x_cord = gridcord[0];
	var y_cord = gridcord[1];
	/* Create divs for image grid */
	makegrid('gridfadediv2', x_var, y_var, x_cord, y_cord, gridtotal, img_array[currentimg]);
	makegrid('gridfadediv1', x_var, y_var, x_cord, y_cord, gridtotal, img_array[nextimg]);
	return ['gridfadediv2',['gridfadediv2','gridfadediv1']];
}
function gridstructure (x_max, y_max, max_width, total) {
	var x_count = 0 - x_max;
	var y_count = 0;
	var x_cord = new Array();
	var y_cord = new Array();
	for (var i=0; i<total; i++) {
		if (x_count + x_max < max_width) {
			x_count+=x_max;
		} else {
			x_count=0;
			y_count+=y_max;
		}
		x_cord[i] = x_count;
		y_cord[i] = y_count;
	}
	return [x_cord, y_cord];
}

function makegrid (param, x_var, y_var, x_pos, y_pos, total, img) {
	for (var i=0; i<total; i++) {
		var char = param.charAt(param.length-1);
		createdom('div','div'+char+'_'+i,['width='+x_var+'px','height='+y_var+'px','position=absolute','margin='+y_pos[i]+'px 0 0 '+x_pos[i]+'px','overflow=hidden'],document.getElementById(param));
		createdom('img',img,['margin=-'+y_pos[i]+'px 0 0 -'+x_pos[i]+'px'], document.getElementById('div'+char+'_'+i));
		
	}
}

function gridorder_diagonal (param) {
	var parent = document.getElementById(param);
	var child = parent.getElementsByTagName('div')[0];
	var x_row = Math.floor(parent.clientWidth / child.clientWidth);
	var y_row = Math.floor(parent.clientHeight / child.clientHeight);
	var totalunits = x_row * y_row;
	var var_arraynum = (x_row-2) + (y_row-3);
	var array_total = var_arraynum + 4;
	var arraycountmax = x_row;
	var int_array = new Array();
	var firstint = 0;
	//CREATE ARRAYS TILL COLUMN MAX LIMIT IS HIT//
	x_row > y_row ? loopcontrollerA = y_row : loopcontrollerA = x_row;
	for (var a=0; a<loopcontrollerA; a++) {
		var temp_arrayA = new Array();
		temp_arrayA[0] = firstint;
		for (var p=1; p<=a; p++) {
			temp_arrayA[p] = (firstint+x_row*p-p);
		}
		int_array[a] = temp_arrayA;
		if (a!=(loopcontrollerA-1)) firstint+=1;
	}
	//CREATE MIDDLE RANGE ARRAYS//
	x_row > y_row ? loopcontrollerB = x_row : loopcontrollerB = y_row;
	for (var b=loopcontrollerA; b<loopcontrollerB; b++) {	
		var temp_arrayB = new Array();
		firstint+1 < x_row ? firstint+=1 : firstint+=x_row;
		temp_arrayB[0] = firstint;
		for (var i=1; i<loopcontrollerA; i++) {
			temp_arrayB[i] = (firstint+x_row*i-i);
		}
		int_array[b] = temp_arrayB;
	}
	//CREATE END RANGE ARRAYS
	for (var c=int_array.length; c<array_total; c++) {
		firstint+=x_row;
		var temp_arrayC = new Array();	
		temp_arrayC[0] = firstint;
		var remainderrows = ((y_row*x_row) - (firstint+1))/x_row;
		for (var i=1; i<=remainderrows; i++) {
			temp_arrayC[i] = firstint+(x_row-1)*i;
		}
		int_array[c] = temp_arrayC;
	}
	return int_array;
}

// PRIMARY GRID FADE LOOPING FUNCTIONS
function loopgridfade (array) {
	var tgtdiv = array[0]; /* current top div */
	var tgtchar = tgtdiv.charAt(tgtdiv.length-1); /* find if it is div 1 or 2 */
	var orderarray = gridorder_diagonal(tgtdiv); /*recreate the diagonal array */
	for (var i=0, il=orderarray.length; i<il; i++) {
		for (var k=0, kl=orderarray[i].length; k<kl; k++) {
			var parsetgt = document.getElementById('div'+tgtchar+'_'+orderarray[i][k]);
			(function (parsetgt) { setTimeout(function () { fader(parsetgt,1,0,250); }, i*100); })(parsetgt); // Parses fade settimeout */
		}
	}
	(function (array) { setTimeout(function () { cleargrid(array); }, orderarray.length*100+250); })(array); /* Delayed till animation is complete. */
}
function cleargrid (array) {
	var tgtdiv = document.getElementById(array[0]);
	array[0] == array[1][0] ? nextdiv = array[1][1] : nextdiv = array[1][0];
	
	var tgtchild = tgtdiv.getElementsByTagName('div');
	var imgset = findimgset(array[0],img_array);/*gets current dataset */
	
	document.getElementById(nextdiv).style.zIndex="2";
	document.getElementById('slidetext').innerHTML = alt_array[imgset[1]];
	
	for (var i=0, il=tgtchild.length; i<il; i++) {
		tgtchild[i].getElementsByTagName('img')[0].setAttribute('src', img_array[imgset[2]]);
		tgtchild[i].getElementsByTagName('img')[0].setAttribute('alt', alt_array[imgset[2]]);
		tgtchild[i].style.opacity="1";
		tgtdiv.style.zIndex="1";
	}
	var parsearray = new Array(nextdiv, [nextdiv,array[0]]);
	
	(function (parsearray) { setTimeout(function () { loopgridfade(parsearray); },3000); })(parsearray);
}
/* ------------------------------------------------------------------------------------------------------------------------------------------*/
//End of Grid Fade Script



//BASIC SLIDESHOW
function loadcarousel () {
	for (var i in img_array) {
		var preloadimg = new Image();
		preloadimg.src = img_array[i];
		if (i==img_array.length-1) {
			setTimeout(function() { startcarousel(); }, 1000);
			document.getElementById('timer').innerHTML = "5";
		}
	}
}

function startcarousel () {
	var currentcount = document.getElementById('timer').innerHTML;
	var nownumber = currentcount.match('[0-9]');
	var newcount = Number(nownumber)-1;
	
	if (newcount>0) { 
		document.getElementById('timer').innerHTML = newcount;
		setTimeout(function () { startcarousel(); },1000);
	} else {
		document.getElementById('timer').innerHTML = "5";
		setTimeout(function () { playcarousel(); }, 1000);
	}
	
}
function playcarousel () {
	var currimg = document.getElementById('images').getElementsByTagName('img')[0].src;
	for (var i in img_array) {
		if (currimg == "http://"+window.location.hostname+"/"+img_array[i]) {
			i==(img_array.length-1) ? newpos = 0 : newpos = Number(i)+1;
		}
	}
	if (newpos!=null && newpos!=undefined) {
		document.getElementById('images').getElementsByTagName('img')[0].src = img_array[newpos];
		document.getElementById('images').getElementsByTagName('img')[0].alt = alt_array[newpos];
		document.getElementById('slidetext').innerHTML = alt_array[newpos];
		setTimeout(function () { startcarousel(); },1250);
		document.getElementById('images').style.opacity="0";
	}
}







//CALENDAR

var mth_array = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'];
	
function find_mth (newvar) {
	var int = Number(newvar);
	var current_mth = document.getElementById('calendar').getElementsByTagName('div')[1].innerHTML;
		
	for (var i=0; i<mth_array.length; i++) {
		if (current_mth==mth_array[i]) {
			var temp_int = i+int;
			if (temp_int==mth_array.length) {
				var new_int = 0;
				var add_year = 1;
			} else if (temp_int<0) {
				var new_int = mth_array.length-1;
				var add_year = -1;
			} else {
				var new_int = temp_int;
				var add_year = 0;
			}
			break;
		}
	}
	
	//UPDATE INNERHTML FOR MTH AND YEAR
	document.getElementById('calendar').getElementsByTagName('div')[1].innerHTML = mth_array[new_int];
		
	var current_yr = document.getElementById('calendar').getElementsByTagName('div')[2].innerHTML;
	var new_yr = Number(current_yr) + add_year;
	document.getElementById('calendar').getElementsByTagName('div')[2].innerHTML = new_yr;
	var m_php = new_int+1;
	var y_php = new_yr;
	loadcal(m_php, y_php);
}

function loadcal (m,y) {
	var http;
	if (window.XMLHttpRequest) { 
		http = new XMLHttpRequest(); //Non IE Browsers
	} else {
		try { 
			http = new ActiveXObject ("Microsoft.XMLHTTP"); 
		} //IE 7 and upp Broswers
		catch (e) {
			try { http = new ActiveXObject ("Msxml2.XMLHTTP"); } //IE 5 to 6 Browsers
			catch (e2) {
			// ERROR HANDLER
			http=null;
			alert('Your browser does not support the required functions to view this page. Please either upgrade or switch to another browser. Thank you.');
					return;
			}
		}
	}
	
	http.onreadystatechange = function () {
		if (http.readyState==4 && http.status == 200) {
			document.getElementById('datetable').innerHTML = http.responseText;
		}
	}
	var ajaxurl = "scripts/cal_app.php?new_m="+m+"&new_y="+y+"&stamp="+Date();
	http.open('GET', ajaxurl, true);// Creates new page request
	http.send(null);	//Sends Page request//
}



function loadnews () {
	var newsdiv = document.getElementById('newscontent');
	var charcount = newsdiv.innerHTML.length;
	if (charcount>0) {
		scrollprompt();
	} else {
		newsdiv.innerHTML = newsoriginal;
		setTimeout(function () { scrollprompt(); }, 500);
	}
}
function scrollprompt () {
	var newstext = 	document.getElementById('newscontent').innerHTML;
	document.getElementById('newscontent').innerHTML = newstext.substr(1);
	setTimeout(function () { loadnews(); }, 150);
}


