/*******************************************************************************/
/*
                    The following code is written by JamesIII.
*/
/*******************************************************************************/

var nereidFadeObjects = new Object();
var nereidFadeTimers = new Object();
var nereidScrollTimers = new Object();
var nereidScrollObjects = new Object();

var buttons = new Array();
var iWhere = -100; // -460;

var toggle = 0;

var plusGifUrl = root + "images/" + "spacer.gif";

function fireFade(id, fade) {
	nereidFade(id,fade,50,4);
}

/* DOM EVENTS */

function document_onload(e)
{
    var returnValue = true;
    
    // Unrot email addresses
    try {
        convert_emailAddresses();
    } catch(e) {
        // returnValue = false;
    }
	
	try { 
		var images = document.getElementsByTagName("img");
		var count = 0;
		var order = new Array();
		for(var m = 0; m++; m<=7) {
			order[m] = m + 1;
		}

		// Get the button images for rollover effects
		for (var i=0; i<images.length;i++) {
			if(images[i].className == "cs_rollover") {
				buttons[count] = images[i];
				var id = images[i].getAttribute("id");
				var str = "fireFade("+id+",100)";
				var fire = 700 * order[count];
				if (ie) {
					setTimeout(str, fire);
				}
				count++;
			}
		}
    } catch(e) {
        // returnValue = false;
    }

	try {
			// this function initialises all the links for the FAQS page.
			var f = 1;
			while (document.getElementById("Menu" + f) != undefined) {
				initializeMenu("Menu" + f, "Actuator" + f);
				f++;
			}


	} catch(e) {
        	returnValue = false;
    }

	/* disable the link to the current page in the submenu */
	try {
		var linkToBeDisabled = (currentPageInSubMenuId != undefined) ? 
			document.getElementById(currentPageInSubMenuId): undefined;
		if (linkToBeDisabled != undefined) {
			linkToBeDisabled.removeAttribute("href");
			var styleObj = eval(getStyleObj(currentPageInSubMenuId));
			styleObj.cursor = "default";
		}
	} catch(e) {
		returnValue = false;
	}

	try {    
		showNextHeadline("messageLink");
		setInterval('showNextHeadline("messageLink")', 7000);
	} catch(e) {
        	returnValue = false;
    }	

    try {
	var dls = document.getElementsByTagName("dl");
	for (var x=0; x<dls.length; x++) {
		if(dls[x].className == "faqsList") {
			var dds = dls[x].getElementsByTagName("dd");
			for (var y=0; y<dds.length; y++) {
				if(dds[y].parentNode.className == "faqsList") {
					dds[y].id = "faqAnswer_" + x + "_" + y;
					var styleObj = eval(getStyleObj(dds[y].id));
					styleObj.display = "none";

				}
				
			}
		}
	}
    } catch(e) {
        // returnValue = false;
    }


    return returnValue;
}
function document_onmouseout(e)
{
    var srcElement = get_srcElement(e);
    var className = srcElement.className;
    var isMore = className.indexOf("more_");
	var id = srcElement.getAttribute("id");		
    if (isMore >= 0 && ie && srcElement.tagName == "IMG") {
        var moreColor = className.split("_");
        var styleObj = eval(getStyleObj(id));
		var bgUrl =  root + "images/" + moreColor[1] + "/more_horizontal_rollover.gif";		
        styleObj.setAttribute('background','transparent url("' + bgUrl + '") no-repeat bottom left');
    } else if (className == "cs_rollover") {
		for(var i=0; i<buttons.length; i++) {
			if(buttons[i].getAttribute("id") != id) {
			   nereidFade(buttons[i],100,50,5);
			} else {
				var thisButton = i;
			}
		}

	}
}
function document_onmouseover(e)
{
    var srcElement = get_srcElement(e);
    var className = srcElement.className;    
    var isMore = className.indexOf("more_");
	var id = srcElement.getAttribute("id");	
    if (isMore >= 0 && ie && srcElement.tagName == "IMG") {
        var moreColor = className.split("_");
        var styleObj = eval(getStyleObj(id));
		var bgUrl =  root + "images/" + moreColor[1] + "/more_horizontal_rollover.gif";
		styleObj.setAttribute('background','transparent url("' + bgUrl + '") no-repeat bottom right');
    } else if (className == "cs_rollover") {
		for(var i=0; i<buttons.length; i++) {
			if(buttons[i].getAttribute("id") != id) {
			   nereidFade(buttons[i],30,50,5);
			}
		};
	} else if(id == "addbbcode0") {
		helpline("b");
    } else if(id == "addbbcode2") {
		helpline("i");
    } else if(id == "addbbcode4") {
		helpline("u");
    } else if(id == "addbbcode16") {
		helpline("w");		
    } else if(id == "preview") {
		helpline("u");
    } else if(id == "saveDraft") {
		helpline("w");	
	} 
	return true;
}

function document_onclick(e) {
    var srcElement = get_srcElement(e);
	if (srcElement.className == "jLink") {
	    if (srcElement.getAttribute("id") == "showHideText1" || srcElement.getAttribute("id") == "showHideText2") {
			showHideText();

		}
        }


	if (srcElement.tagName == "DT" && srcElement.parentNode.className == "faqsList") {
		var id = (srcElement.nextSibling.nodeType == 3) ? srcElement.nextSibling.nextSibling.id : srcElement.nextSibling.id;
		var currentDisplayValue = eval(getCurrentStyleProperty(id, "display"));
		var styleObj = eval(getStyleObj(id));
		styleObj.display = (currentDisplayValue == "block") ? "none" : "block";
		// srcElement.parentNode.style.background = "url(images/plus.gif) no-repeat 2px 7px";

	}


}





/*******************************************************************************/
/*                      End of code from JamesIII                              */
/*******************************************************************************/



/*******************************************************************************/
/*
    The following code and functions between the astericks markers comes from
    A list Apart article Zebra Tables by David F. Miller
*/
/*******************************************************************************/

 // this function is needed to work around 
  // a bug in IE related to element attributes
  function hasClass(obj) {
     var result = false;
     if (obj.getAttributeNode("class") != null) {
         result = obj.getAttributeNode("class").value;
     }
     return false;
  }   

 function stripe(id, ignoreClass) {

    // the flag we'll use to keep track of 
    // whether the current row is odd or even
    var even = false;
  
    // if arguments are provided to specify the colours
    // of the even & odd rows, then use the them;
    // otherwise use the following defaults:
    var evenColor = arguments[1] ? arguments[1] : "#E5F2F5"; // F5F5F5
    var oddColor = arguments[2] ? arguments[2] : "#fff";
  
    // obtain a reference to the desired table
    // if no such table exists, abort
    var table = document.getElementById(id);
    if (! table) { return; }
    
    // by definition, tables can have more than one tbody
    // element, so we'll have to get the list of child
    // &lt;tbody&gt;s 
    var tbodies = table.getElementsByTagName("tbody");

    // and iterate through them...
    for (var h = 0; h < tbodies.length; h++) {
    
     // find all the &lt;tr&gt; elements... 
      var trs = tbodies[h].getElementsByTagName("tr");
      
      // ... and iterate through them
      for (var i = 0; i < trs.length; i++) {

        // avoid rows that have a class attribute
        // or backgroundColor style
        if (! hasClass(trs[i]) &&
            ! trs[i].style.backgroundColor) {
 		  
          // get all the cells in this row...
          var tds = trs[i].getElementsByTagName("td");
        
          // and iterate through them...
          for (var j = 0; j < tds.length; j++) {
        
            var mytd = tds[j];

            // avoid cells that have a class attribute
            // or backgroundColor style
            if ((! hasClass(mytd) &&
                ! mytd.style.backgroundColor))  {
        
              mytd.style.backgroundColor =
                even ? evenColor : oddColor;
            
            }
          }
        }
        // flip from odd to even, or vice-versa
        even =  ! even;
      }
    }
  }
/*******************************************************************************/
/*        End of code from A  David F. Miller                                  */
/*******************************************************************************/

/*******************************************************************************/
/*
    The following code and functions between the astericks markers comes from
    JavaScript + Css + DOM Magic by Makiko Itoh
*/
/*******************************************************************************/

/* Find out operating system */
function getOS() {
    var userPlat = "unknown";
    var navInfo = navigator.userAgent;

    if ((navInfo.indexOf("windows NT") != -1)
            || (navInfo.indexOf("Windows 95") != -1 )
            || (navInfo.indexOf("Windows 98") != -1 )
            || (navInfo.indexOf("WinNT") != -1 )
            || (navInfo.indexOf("Win95") != -1 )
            || (navInfo.indexOf("Win98") != -1 )) {
        userPlat = "Win32";
    } else if (navInfo.indexOf("Win16") != -1) {
        userPlat = "Win16";
    } else if (navInfo.indexOf("Macintosh") != -1) {
        userPlat = "PPC";
    } else if (navInfo.indexOf("68K") != -1) {
        userPlat = "68K";
    }
    return userPlat;
}

/* Get the browser IE or netscape */


var ie = (navigator.appName.indexOf('Microsoft Internet Explorer') > -1);
var ns = (navigator.appName.indexOf('Netscape') > -1);
var opera = (navigator.userAgent.indexOf('Opera') > -1);

// var os = getOS();

/* Get the browser version */
var ver = 0;
var findIndex;
if (ie) {
    ver = navigator.userAgent;
    findIndex = ver.indexOf("MSIE") + 5;
    ver = parseInt(ver.substring(findIndex, findIndex + 1));
} else {
    ver = parseInt(navigator.appVersion.substring(0,1));
}

/* Get the window dimensions */

// the variables for the window dimensions
var win_width,win_height;
var centerhor, centerver;


//Get dimensions of the window
function dimensions() {

    if (ns) {
        win_width=window.innerWidth;
        win_height=window.innerHeight;
    } else if (ie) {
        win_width=document.body.clientWidth;
        win_height=document.body.clientHeight;
    }
    centerhor = win_width/2;
    centerver = win_height/2;
}


/* These are re-usable dom object functions */

/*
    returns the dom object by its id
    call using:
    variablename = eval(getDocObj(elementidvalue));
*/

function getDocObj(elem,parent) {

    if (document.layers) {
        if (parent) {
            return "document."+parent+".document."+elem;
        }   else {
            return "document."+elem;
        }
    } else if (document.all) {
        return "document.all."+elem;
    } else if (document.getElementById) {
        return "document.getElementById('"+elem+"')";
    }
}

/*
    returns the dom style object by its id
    call using
    variablename = eval(getStyleObj(elementidvalue));
*/

function getStyleObj(elem,parent) {

    if (document.layers) {
        if (parent) {
            return "document."+parent+".document."+elem;
        } else {
            return "document."+elem + ".style";
        }
    } else if (document.all) {
        return "document.all."+elem + ".style";
    } else if (document.getElementById) {
        return "document.getElementById('"+elem+"').style";
    }
}

function getCurrentStyleProperty(elem, prop) {

    if (document.layers) {
        return false;
    } else if (document.all) {
        return "document.all."+elem + ".currentStyle." + prop;
    } else if (document.getElementById) {
        return "document.defaultView.getComputedStyle(document.getElementById('" + elem + "'), '').getPropertyValue('" + prop +"')";
    }
}

function placeIt(elem, leftPos, topPos) {

    docObj = eval(getStyleObj(elem));
    if (document.all) {
        docObj.pixelLeft = parseInt(leftPos);
        docObj.pixelTop = parseInt(topPos);
    } else {
        docObj.left = leftPos;
        docObj.top= topPos;
    }
}
/*******************************************************************************/
/*        End of code from JavaScript + Css + DOM Magic by Makiko Itoh         */
/*******************************************************************************/


/*******************************************************************************/
/*
    Rot13 Object
    This object comes from:
    http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/
    and was written by Scott Yang but I have used it in a slightly different way
    than he suggests using it instead with the function convert_emailAddresses() 
*/
/*******************************************************************************/

var Rot13 = {
    map: null,

    convert: function(a) {
        Rot13.init();

        var s = "";
        for (i=0; i < a.length; i++) {
            var b = a.charAt(i);
            s += ((b>='A' && b<='Z') || (b>='a' && b<='z') ? Rot13.map[b] : b);
        }
        return s;
    },

    init: function() {
        if (Rot13.map != null) {
            return;
        }
        var map = new Array();
        var s   = "abcdefghijklmnopqrstuvwxyz";

        for (i=0; i<s.length; i++) {
            map[s.charAt(i)] = s.charAt((i+13)%26);
        }
        for (i=0; i<s.length; i++) {
            map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();
        }
        Rot13.map = map;
    },

    write: function(a) {
        document.write(Rot13.convert(a));
    }
}

/*******************************************************************************/
/*                      End of code from JScott Yang                           */
/*******************************************************************************/


/*******************************************************************************/
/*
                    The following code is written by JamesIII.
*/
/*******************************************************************************/

/*
    create ie/ns compatibale function for getting the source element which fired the event.
    param @e the event reference 
*/

function get_srcElement(e)      {

    // Handle the difference between Netscape and IE event handling
    var srcElement = ns ? e.target : event.srcElement;
    // Check if it is a text node, if so get the parent of the text node.
    if (srcElement.nodeType == 3) {
            srcElement = e.target.parentNode;
    }
    return srcElement;

}

/*
    This function searches for links with a class name containing the @ symbol.
    e.g. class="vasb@oevgvfu-fghql.pbz". These are email address that have been
    rot13-ed. It then changes these links to valid mailto links with the class
    name rot13-ed to give the proper email address.
    This is so that spanbots don't harvest printed email addresses.

*/

function convert_emailAddresses() {

    // Get all the a elements
    var links = document.getElementsByTagName('a');
    var noOfLinks = links.length;
    for (var j = 0; j < noOfLinks; j++) {
        // if they have a class name
        if(links[j].className) {
            var classStr = new String(links[j].className);
            // Check to see if it has the @ char
            if (classStr.indexOf("@") > 0) {
                // Rot13 the email address
                var address = Rot13.convert(classStr);
                // Change link to valid email link
                links[j].setAttribute("href", "mailto:" + address);
                links[j].firstChild.nodeValue = address;
            }
        }
    }
    return true;
}

/*
    This function takes an array of link ids and changes their text to the arrays text proterity
    It is used to mark links to invalid xhtml pages etc. as 'invalid'.

    param @pages is a multidimensional array of page ids and their text. e.g
    pages[n]['id'] = 'bobby_contact_menu_6';
    pages[n]['text'] = bobbyText;
    where id is the id of a HTML element and text is the new text for that element
*/    

function set_invalid(pages) {

    max = pages.length;
    // For each @page
    for (i = 0; i < max; i++) {
        // get the HTML DOM by its id
        var linkNode = document.getElementById(pages[i]['id']);
        // Get the parent of the element. This is need if the browser is NN4
        var linkParent = linkNode.parentNode;
        /*
            our element looks like this <a><span class="hide">text1</span> text2</a>
            and we want to change only text2 so check to see can we find the textNode
            taking into account the difference between IE and mozilla
        */
        if(linkNode.firstChild.nextSibling.nodeType == 3) {
            linkNode.firstChild.nextSibling.nodeValue = pages[i]['text'];        
        } else {
            linkNode.firstChild.nextSibling.nextSibling.nodeValue = pages[i]['text'];                        
        }
        // Finally make the style of element available for us to change.
        var styleObj = eval(getStyleObj(linkNode.id, linkParent.id));
        styleObj.color = "red";
    }

    return true;
}

/*******************************************************************************/
/*                      End of code from JamesIII                              */
/*******************************************************************************/





function firdom(tagName)
{
	if (document.getElementsByTagName && document.createElement) {
        var els = document.getElementsByTagName(tagName);
		scanandreplace(els);
	}
}

function scanandreplace(els)
{
	for (i=0; i<els.length; i++) {
	    if (els[i].className == "title" ) {
            var id = els[i].getAttribute("id")
            var el = els[i].firstChild;
			var altText;
            //alert(el.firstChild.nodeValue);
            if(el.firstChild.nodeType == 3) {
                altText = el.firstChild.nodeValue;        
            } else {
                altText = el.firstChild.firstChild.nodeValue;                        
            }
            //if (els[i].tagName == "DT") {
            //   var source = root + "images/" + directoryColor + "/" + id + ".gif";
            //} else {
                var source = root + "images/" + id + ".gif";
                
            //}            
            var classAttribute = "resize";
    		newImg=document.createElement('img');
		    newImg.setAttribute('src', source);
        	newImg.setAttribute('alt', altText);
		    newImg.setAttribute('id', classAttribute + "_" + i);		    
		    newImg.setAttribute('class', classAttribute);
            el.replaceChild(newImg, el.firstChild);
		    //resize(newImg, 30);
        }
    }
}


function nereidFade(object, destOp, rate, delta){
	
	// content completely removed. - puvi 10/10/2007
	}


function nereidScroll(object, howQuick, goingTo){
	if (!document.all) {
		return false;
	}
    if (object != "[object]"){  //do this so I can take a string too
        setTimeout("nereidScroll("+object+","+howQuick+","+goingTo+")",0);
        return true;
    }

	clearTimeout(nereidScrollTimers[object.sourceIndex]);
	if(iWhere < goingTo) {
		iWhere++;		
	} else if(iWhere > goingTo) {
		iWhere--;
	} else {
		return true;
	}
	object.style.backgroundPosition = iWhere + " 0";
	nereidScrollObjects[object.sourceIndex]=object;
	nereidScrollTimers[object.sourceIndex]=setTimeout("nereidScroll(nereidScrollObjects["+object.sourceIndex+"],"+howQuick+","+goingTo+")",howQuick);
	return true;
}


// ** News object ** // 

var headlines = new Array();
var n = 0;

headlines[n] = new Array();
headlines[n]["text"] = "BBA in Business and Finance offered from July 2008...";
headlines[n]["link"] = root + "news.php#story_12";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "Top rock band 'Razorlight' play at ISH";
headlines[n]["link"] = root + "news.php#story_11";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "Wi-Fi has arrived at WLC!..";
headlines[n]["link"] = root + "news.php#story_10";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "West London College of Fashion opened in Jan '08...";
headlines[n]["link"] = root + "news.php#story_09";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "College's BAC Accreditation extended to April 2010...";
headlines[n]["link"] = root + "news.php#story_06";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "Meet WLC staff visiting your country...";
headlines[n]["link"] = root + "news.php#story_01";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "ABE student receives President's Prize...";
headlines[n]["link"] = root + "news.php#story_05";
n++;

headlines[n] = new Array();
headlines[n]["text"] = "Fidelio hotel booking system installed...";
headlines[n]["link"] = root + "news.php#story_02";




var nextHeadlineNumber = 0;

function showNextHeadline(linkId)
{
	nextHeadlineNumber = (nextHeadlineNumber < headlines.length) ? nextHeadlineNumber : 0;
	var linkText = headlines[nextHeadlineNumber]["text"];

	var linkEl = document.getElementById(linkId);
	linkEl.href = headlines[nextHeadlineNumber]["link"];
	var length = linkText.length;
	for (var i = 1; i <= length; i++) {
		
		setTimeout('showtext("' + linkId + '", "' +  linkText  + '", "' + i + '")', 50 * i);
	}
	
	nextHeadlineNumber++;
	
}

function showtext(linkId, linkText, currentPosition)
{
	var linkEl = document.getElementById(linkId);
	var currentText = linkText.substring(0, currentPosition);
	currentText = (currentPosition % 2 == 0) ? currentText + "_" : currentText + "-";
	currentText = (currentPosition == linkText.length) ? currentText.substring(0, currentText.length - 1) : currentText;
	while (linkEl.hasChildNodes(linkEl)) { linkEl.removeChild(linkEl.lastChild);}
	var textNode = document.createTextNode(currentText); 
	linkEl.appendChild(textNode); 
	

}


function showHideText() {
	toggle = toggle ? 0 : 1;
    var dls = document.getElementsByTagName("dl");

    for (var i = 0; i < dls.length; i++) {
        if (dls[i].className == "staff") {
        
            var displayValue = toggle ? "block" : "none";
            var dlWidthValue = toggle ? "350px" : "70px";
            
            var styleObj = eval(getStyleObj(dls[i].getAttribute("id")));
            styleObj.width = dlWidthValue;

            var nameEl = (ie && !opera) ? dls[i].firstChild : dls[i].firstChild.nextSibling;
            styleObj = eval(getStyleObj(nameEl.getAttribute("id")));
            styleObj.display = displayValue;


            var titleEl =  (ie && !opera) ? nameEl.nextSibling : nameEl.nextSibling.nextSibling;               
            styleObj = eval(getStyleObj(titleEl.getAttribute("id")));
            styleObj.display = displayValue;

            var departmentEl =  (ie && !opera) ? titleEl.nextSibling : titleEl.nextSibling.nextSibling;               
            styleObj = eval(getStyleObj(departmentEl.getAttribute("id")));
            styleObj.display = displayValue;
            
            var photoEl =  (ie && !opera) ? departmentEl.nextSibling : departmentEl.nextSibling.nextSibling;   
            styleObj = eval(getStyleObj(photoEl.getAttribute("id")));
           
        }
    }
    return true;
}



function highlight(id, state) {
	var el = document.getElementById(id);
	var srcStr = root + "images/" + id + "_" + state + ".gif";
	el.src = srcStr;
}// JavaScript Document