// JavaScript Document

// include other JS...
document.write('<script src="/assets/fadomatic-1_2.js"><\/script>');

// preload the nav images
if (document.images)
{
	preload_image_object = new Image();
	// set image url
	image_url = new Array();
	image_url[0] = "http://jdcasting.com/assets/images/nav/nav_about-over.jpg";
	image_url[1] = "http://jdcasting.com/assets/images/nav/nav_clogin-over.jpg";
	image_url[2] = "http://jdcasting.com/assets/images/nav/nav_contact-over.jpg";
	image_url[3] = "http://jdcasting.com/assets/images/nav/nav_scasting-over.jpg";
	image_url[4] = "http://jdcasting.com/assets/images/nav/nav_work-over.jpg";
	var i = 0;
	for(i=0; i<=4; i++) 
         preload_image_object.src = image_url[i];
}

// these functions are visual ones

// 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";
}

// 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 mode
	var workingSpace = document.getElementById('portfolioDiv');
	//var fader = new Fadomatic(workingSpace, 4, 0);
	workingSpace.innerHTML = response;
	//fader.fadeIn();
  }else{
    // Input mode
	var name = document.getElementById('portfolioName' + input).value;
	document.getElementById('orangeStripeText').innerHTML = name;
    url  = '/ajax/ajaxLoadPortfolio.php?id=' + input;
    loadXMLDoc(url,'loadPorftolio');
  }
}

function populateImageForm(imageID) {
	document.getElementById('name').value = document.getElementById('imageName' + imageID).innerHTML;	
	document.getElementById('description').value = document.getElementById('imageDescription' + imageID).value;
	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 fader = new Fadomatic(imageDiv, 4, 0);
	imageDiv.innerHTML = '<img src="/assets/images/Portfolio/' + path + '" alt="' + name + '" onClick="javascript:fadeImageDiv(\'' + next + '\');" />';
	document.getElementById('orangeStripeText').innerHTML = name;
	//fader.fadeIn();
}


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 theDescription = document.getElementById('theDescription').value;
	var pid = document.getElementById('pid').value;
	workWaiting();
    url  = 
      '/ajax/ajaxAddUpdatePortfolio.php?table=' + theTable + '&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
    url  = 
      '/ajax/ajaxUpdatePortfolioSelector.php?id=' + input;
    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);
        }
    }
}