// JavaScript Document

// include other JS...
document.write('<script src="/assets/fadomatic-1_2.js"><\/script>');


// this function toggles between two visible divs
function toggleLayer(whichLayerShow, whichLayerHide)
{
	document.getElementById(whichLayerHide).style.display = "none";
	document.getElementById(whichLayerShow).style.display = "block";
}

// this function allows the visible toggle for just one div
function showHideLayer(whichLayer)
{
	theLayer = document.getElementById(whichLayer);
	theLayer.style.display = (theLayer.style.display != "none") ? "none" : "";
}

// this function hides one div
function hideLayer(whichLayer)
{
	document.getElementById(whichLayer).style.display = "none";
}

// this function hides many div
function hideLayers(whichLayers)
{
	var layersArray = whichLayers.split("::");
	for (var i = 0; i < layersArray.length; i++) {
		document.getElementById(layersArray[i]).style.display = "none";		
	}
}

// this function shows a div
function showLayer(whichLayer)
{
	document.getElementById(whichLayer).style.display = "block";
}

// this function is just for the front page, mostly... 
function menuFocus(toFocus) 
{
	document.getElementById('focusPeople').className="menu";
	document.getElementById('focusClasses').className="menu";
	document.getElementById('focusCalendar').className="menu";
	document.getElementById('focusTickets').className="menu";
	document.getElementById('focusProfile').className="menu";
	document.getElementById('focusMessages').className="menu";
	document.getElementById(toFocus).className="menuSelected";
}

// this function is just for the front page, mostly... 
function menuFocusStudent(toFocus) 
{
	document.getElementById('focusScorecard').className="menu";
	document.getElementById('focusCalendar').className="menu";
	document.getElementById('focusProfile').className="menu";
	document.getElementById('focusMessages').className="menu";
	document.getElementById(toFocus).className="menuSelected";
}

// this function simply disables right-clicking... anywhere!
var message="Function Disabled!";

///////////////////////////////////
function clickIE4(){
if (event.button==2){
return false;
}
}

function clickNS4(e){
if (document.layers||document.getElementById&&!document.all){
if (e.which==2||e.which==3){
return false;
}
}
}

if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById){
document.onmousedown=clickIE4;
}

document.oncontextmenu=new Function("return false");



// these functions, related to the fadomatic class
// http://chimpen.com/fadomatic/index.html
// adds some smooth fades to different objects
function messageFader(theMessage,theClass,theType,theHold) {
	if (!theHold)
		theHold = 4000;
	if (theType == "child") {
		// if we're trying to talk to the parent	
		var par = window.parent.document;
		//var messageFader = par.getElementById('messageFader');
		window.parent.messageFader(theMessage, theClass);
	}
	else {
		var messageFader = document.getElementById('messageFader');
		var fader = new Fadomatic(messageFader, 4, 0);
		messageFader.className = theClass;
		// process the message:  since quotes don't go through nicely, we can
		// use string replace to send them in as ]]
		theMessage = theMessage.replace(/]]/g,"\"");
		messageFader.innerHTML = theMessage;
		fader.fadeIn();
		setTimeout("messageFadeOut()",theHold);
	}
}

function messageFadeOut() {
	var messageFader = document.getElementById('messageFader');
	var fader = new Fadomatic(messageFader, 4, 100);
 	fader.fadeOut();
}

// these functions are form-specific
function checkForm(whichForm,fieldIDs) 
{
	var error = 0;
	var fieldsArray = fieldIDs.split("::");
	for (var i = 0; i < fieldsArray.length; i++) {
		if (!fieldCheck(fieldsArray[i]))
			error = 1;
	}
	if (error == "") { 
		document.getElementById(whichForm).submit();
	}
	else {
		messageFader('Please correct the errors below to submit this form.','error','child','5000');
	}	
}
function fieldCheck(fieldID) 
{
	value = document.getElementById(fieldID).value;
	var divID = fieldID + "Required";
	if (value == "") {
		showLayer(divID);
		return 0;
	}
	else {
		hideLayer(divID)
		return 1;
	}
}
function checkUsername(input, response)
{
	input = document.getElementById('username').value;
  if (response !=""){ 
    // Response mode
    if (response == 1){
      showLayer('usernameUniquenessError')
	  hideLayer('usernameRequired');
	  return 0;
    }else{
      hideLayer('usernameUniquenessError');
	  return 1;
    } 
  }else{
  	if (input == '') {
		showLayer('usernameRequired');
		hideLayer('usernameUniquenessError');
		return 0;
	}
	else {
		hideLayer('usernameRequired');
	}
    // Input mode
    url  = 
      '/ajax/ajaxUsernameCheck.php?q=' + input + '&method=checkUsername';
    loadXMLDoc(url,'checkUsername');
  }
}


function loadWork(input, response)
{
  if (response !=""){ 
    // Response mode
	var workingSpace = document.getElementById('workingSpace');
	var fader = new Fadomatic(workingSpace, 4, 0);
	workingSpace.innerHTML = response;
	fader.fadeIn();
  }else{
    // Input mode
	var pid = document.portfolioSelector.pid.options[document.portfolioSelector.pid.selectedIndex].value;
	//getElementById('pid').value;
    url  = 
      '/ajax/ajaxLoadWork.php?type=' + input + '&id=' + pid;
    loadXMLDoc(url,'loadWork');
  }
}

function loadPorftolio(input, response)
{
  if (response !="" && response !="portfolio" && response !="logo" && response !="tshirts"){ 
    // Response mode
	var workingSpace = document.getElementById('portfolioDiv');
	//var fader = new Fadomatic(workingSpace, 4, 0);
	workingSpace.innerHTML = response;
	workingSpace.style.zIndex=10;
	//fader.fadeIn();
  }else{
    // Input mode
	var name = document.getElementById('portfolioName' + input).value;
	// if we were putting in the porftolio name
	//document.getElementById('titleText').innerHTML = name;
    url  = '/ajax/ajaxLoadPortfolio.php?id=' + input + '&type=' + response;
    loadXMLDoc(url,'loadPorftolio');
  }
}

function populateImageForm(imageID) {
	document.getElementById('name').value = document.getElementById('imageName' + imageID).innerHTML;	
	document.getElementById('description').value = document.getElementById('imageDescription' + imageID).value;
	if (document.getElementById('imageFeatured' + imageID).value == 1) {
		document.getElementById('featured').checked = true;
	}
	else {
		document.getElementById('featured').checked = false;
	}
	document.getElementById('displayOrder').value = document.getElementById('imageDisplayOrder' + imageID).value;
	if (imageID !='Add') {
		document.getElementById('id').value = imageID;
	}
	else {
		document.getElementById('id').value = '';
	}
}

function fadeImageDiv(imageID) {
	var imageDiv = document.getElementById('imageDiv');
	var path = document.getElementById('imagePath' + imageID).value;
	var name = document.getElementById('imageName' + imageID).value;
	var next = document.getElementById('imageNext' + imageID).value;
	var prev = document.getElementById('imagePrev' + imageID).value;
	//var fader = new Fadomatic(imageDiv, 4, 0);
	imageDiv.innerHTML = '<img src="/assets/images/Portfolio/' + path + '" alt="' + name + '" onClick="javascript:fadeImageDiv(\'' + next + '\');" />';
	document.getElementById('buttonPrevNext').innerHTML = '<table width="90"><tr><td><img src="/assets/images/back.jpg" alt="previous image" onClick="javascript:fadeImageDiv(\'' + prev + '\');" /></td><td>&nbsp;&nbsp;</td><td align="right"><img src="/assets/images/next.jpg" alt="next image" onClick="javascript:fadeImageDiv(\'' + next + '\');" /></td></tr></table>';
	
	// if we wanted to give title text
	//document.getElementById('titleText').innerHTML = name;
	//fader.fadeIn();
}

// global varuable for the current slideshow image id
var current = 0;
// gloabal variable for the images
var imageObj = new Array();

function slideshow() {
	// start by loading the first image
	document.getElementById('slideshowFrame').innerHTML = '<img src="/assets/images/Portfolio/'+ imagesArray[current] +'" alt="'+ captionsArray[current] +'" id="slideshowImage" />';
	current = current + 1;
	if (current == 1) {
		// preload all the images
		for (var i=1;i < imagesArray.length;i++) {
			 imageObj[i] = new Image();
			 imageObj[i].src = '/assets/images/Portfolio/'+imagesArray[i];
		}
	}
	else {
		if (current == imagesArray.length)
		current = 1;
	}
	setTimeout("slideshow()",7000);
}


function addUpdatePortfolio(input, response)
{
  if (response !=""){ 
    // Response mode
	updatePortfolioSelector('','');
	var workingSpace = document.getElementById('workingSpace');
	var fader = new Fadomatic(workingSpace, 4, 0);
	workingSpace.innerHTML = response;
	fader.fadeIn();
  }else{
    // Input mode
	var theTable = document.getElementById('theTable').value;
	var theName = document.getElementById('theName').value;
	var theType = document.getElementById('theType').value;
	theID = theType;
	var theDescription = document.getElementById('theDescription').value;
	var pid = document.getElementById('pid').value;
	workWaiting();
    url  = 
      '/ajax/ajaxAddUpdatePortfolio.php?table=' + theTable + '&type=' + theType + '&name=' + theName + '&description=' + theDescription + '&id=' + pid;
    loadXMLDoc(url,'addUpdatePortfolio');
  }
}

function updatePortfolioSelector(input, response) 
{
  if (response !=""){ 
    // Response mode
	var workingSpace = document.getElementById('portfolioSelector');
	workingSpace.innerHTML = response;
  }else{
    // Input mode
		var type = theID;
    url  = 
      '/ajax/ajaxUpdatePortfolioSelector.php?id=' + input + '&type=' + type;
    loadXMLDoc(url,'updatePortfolioSelector');
  }
}

function workWaiting() 
{
	document.getElementById('workingSpace').innerHTML = '<img src="/assets/images/spinner.gif" /><br /><br />Your request is being processed... ';
}



var theID = "";

// AJAX calls
// these are generic AJAX functions
var req;
// global variable method - too annoying to do otherwise... 
var method;
function loadXMLDoc(url,theMethod) 
{
	method = theMethod;
	// branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.open("GET", url, true);
        req.send(null);
        req.onreadystatechange = processReqChange;
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}
function processReqChange() 
{
	// only if req shows "complete"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
			result  = req.responseText;
  	    	eval(method + '(\'\', result)');
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}