/* This source has been formatted by an unregistered SourceFormatX */
/* If you want to remove this info, please register this shareware */
/* Please visit http://www.textrush.com to get more information    */

// Global Javascript file for Lancaster

//version:   1.0
//author:    Paul Boag
//email:     paul.boag@headscape.co.uk
//website:   http://www.headscape.co.uk


// ADD FOOTNOTES  -------------------------------------------------------


// Collects all of the links in a page and adds them as footnotes
function footnoteLinks(containerID,targetID) { 
    if (!document.getElementById || !document.getElementsByTagName || !document.createElement) 
    {
        return false; 
    }
    if (!document.getElementById(containerID) || !document.getElementById(targetID)){
        return false; 
    }
    
    var container = document.getElementById(containerID); 
    var target = document.getElementById(targetID); 
    var h2 = document.createElement('h2'); 
    //addClass.apply(h2,['printOnly']); 
    h2.setAttribute('class', 'printOnly');
    var h2_txt = document.createTextNode('Links'); 
    h2.appendChild(h2_txt); 
    //var coll = $container.getElementsByTagName('*');
    var coll = $(container).find("a");
    
    //var coll = $("#wrapper");
    //var coll = $(container);
    //var coll1 = coll.not("li");
    
    
     
    var ol = document.createElement('ol'); 
    //addClass.apply(ol,['printOnly']); 
    ol.setAttribute('class', 'printOnly');
    var myArr = []; 
    var thisLink; var num = 1; 

    for (var i=0; i<coll.length; i++) { 
        var thisClass = coll[i].className;      

        if($(coll[i]).parents("#breadcrumb").length == 0)
        {
            if ( (coll[i].getAttribute('href') || coll[i].getAttribute('cite')) && (thisClass == '' || thisClass.indexOf('ignore') == -1)) { 
                thisLink = coll[i].getAttribute('href') ? coll[i].href : coll[i].cite; 
                var note = document.createElement('sup'); //addClass.apply(note,['printOnly']); 
                note.setAttribute('class', 'printOnly');
                var note_txt; 
                //var j = inArray.apply(myArr,[thisLink]); 
                var j = jQuery.inArray(thisLink, myArr);
                
                if (j===0 ) { 
                    note_txt = document.createTextNode(j+1);
                } 
                else { 
                    
                    var li = document.createElement('li'); 
                    var li_txt = document.createTextNode(thisLink); 
                    li.appendChild(li_txt); ol.appendChild(li); 
                    myArr.push(thisLink); 
                    note_txt = document.createTextNode(num); 
                    num++;
                } 
                note.appendChild(note_txt); 
                if (coll[i].tagName.toLowerCase() == 'blockquote') { 
                    var lastChild = lastChildContainingText.apply(coll[i]); 
                    //lastChild.appendChild(note);
                } 
                else { 
                    coll[i].parentNode.insertBefore(note, coll[i].nextSibling);
                } 
            } 
        }
    } 
    target.appendChild(h2); 
    target.appendChild(ol); 
    //addClass.apply(document.getElementsByTagName('html')[0],['noted']); 
    $(document.getElementsByTagName('html')[0]).addClass('noted');
    return true;
}

// Attches a ignore class to the img so they arent include in link list in IE
function imageClass() {
	if (!document.getElementsByTagName)
	{
	    return false;
	}
	var imageList = document.getElementsByTagName ("img");
	for (var i=0; i < imageList.length; i++) {
	    imageList[i].className = imageList[i].className + " ignore";
	}
}

function SetClass(elementId, className){
    var obj = document.getElementById(elementId);    
        
    obj.className = className; 
        
}
function SetVisibility(elementId, visibility){
    var obj = document.getElementById(elementId);
    obj.style.display = visibility;            
}

function ImageSwap(image1, image2, elementId){
    var obj = document.getElementById(elementId);        
        
    if(obj.getAttributeNode("src").value.indexOf(image1) >-1){    
        obj.getAttributeNode("src").value = image2+"?"+elementId;        
    }
    else{
        obj.getAttributeNode("src").value = image1+"?"+elementId;               
            }
    
}
// RESIZING TEXT -------------------------------------------------------



// Writes cookie
// writeCookie("myCookie", "my name", 24);
// Stores the string "my name" in the cookie "myCookie" which expires after 24 hours.

function writeCookie(name, value, hours) {
  var expire = "";
  if(hours != null)  {
    expire = new Date((new Date()).getTime() + hours * 3600000);
    expire = "; expires=" + expire.toGMTString();
  }
  document.cookie = name + "=" + escape(value) + expire;
}


// Read Cookie
// alert( readCookie("myCookie") );
function readCookie(name){
    var cookieValue = "";
    var search = name + "=";
    if(document.cookie.length > 0)  {
        offset = document.cookie.indexOf(search);
        if (offset != -1)    {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if (end == -1){
                end = document.cookie.length;
            }
            cookieValue = unescape(document.cookie.substring(offset, end));
        }
    }
  return cookieValue;
}

///adds image to external links to indicate they are external
function externalLinks () {
  if (!document.getElementsByTagName){
   return false;
  }
  var links = document.getElementsByTagName("a");
  for (var i=0; i < links.length; i++) {
	  	if (links[i].href.substring( 0,7) != "mailto:") {
		    var addy = links[i].href;
		    var classes = links[i].className;
			    if (addy != "") {
			       
			        if (addy.indexOf(window.location.hostname) == -1 && classes.indexOf("rss") == -1 && addy.indexOf("javascript") == -1)  
			        {
				        if (links[i].className == "") {	links[i].className = "externalLink"; 
				    }
				    else { 
				        links[i].className = links[i].className + " externalLink"; 
                    }
			        if (links[i].title == "") 
			        {
			            links[i].title = "(external site)";
			        }
			        else {
			            links[i].title = links[i].title + " (external site)";	
			        }
			    }
			}
		}
    }      
}

function contextSearchEdited (t) {
	document.getElementById('whichSearch').value = "context";
	if (t.value == "Enter your search"){
	    t.value= "";
	}
} 

function headerSearchEdited (t) {
	document.getElementById('whichSearch').value = "header";
	if (t.value == "Enter your search"){
	    t.value= "";
	}
} 


// creates an element with a defined CSS class
function CreateElementWithClass(tagName, className){
    var element = document.createElement(tagName);
    var att =  document.createAttribute("class");
    att.value = className;
    element.setAttributeNode(att);
    return element;
}

// rounds all elements that have a certain tag
function RoundCornersOnElementsByTagName(tagName){
    var elements = document.getElementsByTagName(tagName);

    for(var i = 0; i < elements.length; i++){
        RoundCornersOnElement(elements[i]);
    }
}
 
//creates alternating colour bands on a table
function GetTables(){
   var tables = document.getElementsByTagName("table");
    for(var i = 0; i < tables.length; i++){
        var currentTable = tables[i];      
        ColourBandTable(currentTable);      
        if(currentTable.className.indexOf('expandingTable') > -1){
            TableExpanderHideRows(currentTable);
        }
        
    }
}



function ColourBandTable(element){
     if(element.className.indexOf('noColourBands') == -1){
       
        for(var i = 0; i< element.rows.length; i++){
            if((i%2) == 0){
                element.rows[i].className +=" even";
            }
            else{
                element.rows[i].className +=" odd";
            }               
        }
     }
}

//hides rows on marked up tables
function TableExpanderHideRows(element){

    if(element.id == ""){
        element.id = "tbl"+Math.random();
    }
    element.id = "tbl"+Math.random();
    if(element.rows.length > 20){     
        for(var i = 20; i<element.rows.length; i++){
       
            element.rows[i].style.display='none';
        }
        
        
        element.insertRow(element.rows.length);
        
        var expandRow = element.rows[element.rows.length-1];
        var cell = document.createElement('td');
        var a = document.createElement('a');
        a.href="javascript:TableExpanderExpandRows('"+element.id+"');";
        a.innerHTML = "Expand Table";
        
        cell.appendChild(a);
        expandRow.appendChild(cell);        
        cell.colSpan = element.rows[element.rows.length-2].cells.length;
        
    }
}
function TableExpanderExpandRows(elementId){
    var element = document.getElementById(elementId);
    for(var i = 19; i<element.rows.length; i++){
            element.rows[i].style.display='';
    }
    element.rows[element.rows.length-1].style.display='none';
        
}

//** this ifs fired when the page loads
$(function(){

    //Hide ASP.NET and hidden fields at top of page which disrupts print view
    $("#__VIEWSTATE").parent().css("display", "none");
    $("#__EVENTVALIDATION").parent().css("display", "none");
    $("#whichSearch").parent().css("display", "none");
    
    

    imageClass();

    externalLinks();
    
    GetTables();
    

    var cookie = new CookieManager();
     
    // START - Dynamically expand content area
    var mainNav = $("#main-nav");
    var mainNavInnerDiv = $("#main-nav > div");
    var mainContent = $("#main-content");
    var secondaryContent = $("#secondary-content");
    var secondaryContentInnerDiv = $("#secondary-content > div");
    
    var mainNavMissing = (mainNav == null) || 
            (mainNav.html() == null) ||
            (/\w/.test(mainNav.html()) == false) ||
            (mainNavInnerDiv == null) ||
            (mainNavInnerDiv.html() == null) ||
            (/\w/.test(mainNavInnerDiv.html()) == false);
            
    var secondaryContentMissing = (secondaryContent == null) ||
            (secondaryContent.html() == null) ||
            (/\w/.test(secondaryContent.html()) == false) ||
            (secondaryContentInnerDiv == null) ||
            (secondaryContentInnerDiv.html() == null) ||
            (/\w/.test(secondaryContentInnerDiv.html()) == false);
            
    if (mainNavMissing && secondaryContentMissing){
        mainContent.addClass("main-content-fullWidth");
        mainNav.css("display", "none");
        secondaryContent.css("display", "none");  
    }
    else if (mainNavMissing)
    {
        mainContent.addClass("main-content-largerWidth");
        mainNav.css("display", "none"); 
    }
    else if (secondaryContentMissing)
    {
        mainContent.addClass("main-content-largerWidth");
        secondaryContent.css("display", "none"); 
    }
    else
    {
        mainContent.addClass("main-content-normalWidth");
    }   
    // END - Dynamically expand content area 
      
    $("#stIncrease").click(function(){
        var currentFontSize = $('body').css('font-size');
        var currentFontSizeNum = parseFloat(currentFontSize, 10);
        var newFontSize = currentFontSizeNum+2;
        $('body').css('font-size', newFontSize);
        cookie.create("fontSize", newFontSize, "99");        
        return false;
        
    });
    // Decrease Font Size
    $("#stDecrease").click(function(){
        var currentFontSize = $('body').css('font-size');
        var currentFontSizeNum = parseFloat(currentFontSize, 10);
        var newFontSize = currentFontSizeNum-2;
        $('body').css('font-size', newFontSize);
        cookie.create("fontSize", newFontSize, "99");        
        return false;
    });
    $("#stReset").click(function(){
        cookie.erase("fontSize");
        window.location = window.location;
    });
    if(cookie.read("fontSize") != null){ $('body').css('font-size', parseFloat(cookie.read("fontSize"),10)); }
    
//    //fancy checkboxes
//    $('input[type=checkbox]').checkbox({
//        cls:'jquery-safari-checkbox',
//        empty: '/images/empty.png'
//    });

       // START - Rounded corner Gradiant Boxes
         $(".grad").roundedCorners({                     
            maxHeight:99,
            minHeight:1,
            backgroundClass:"grad100", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );
         $(".grad").roundedCorners({                     
            maxHeight:199,
            minHeight:100,
            backgroundClass:"grad200", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );
         $(".grad").roundedCorners({                     
            maxHeight:299,
            minHeight:200,
            backgroundClass:"grad300", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );
         $(".grad").roundedCorners({                     
            maxHeight:399,
            minHeight:300,
            backgroundClass:"grad400", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );
         $(".grad").roundedCorners({                     
            maxHeight:499,
            minHeight:400,
            backgroundClass:"grad500", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );  
         $(".grad").roundedCorners({                     
            maxHeight:599,
            minHeight:500,
            backgroundClass:"grad600", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );                        
         $(".grad").roundedCorners({                     
            maxHeight:1500,
            minHeight:600,
            backgroundClass:"grad700", 
            leftTopClass: "gradLeftTop",
            rightTopClass:"gradRightTop",
            leftBottomClass:"gradLeftBottom",
            rightBottomClass:"gradRightBottom"
            }
         );                           
         
         
    // END - Rounded corner Gradiant Boxes
      $("blockquote").roundedCorners({                     
            maxHeight:1000,
            minHeight:0,
            backgroundClass:"blockquoteBg", 
            leftTopClass: "indentTopLeft",
            rightTopClass:"indentTopRight",
            leftBottomClass:"indentBottomLeft",
            rightBottomClass:"indentBottomRight"
            }
         );
        
         
         
        $("#main-content").children("ol").bracketList();
    $(".expandingElement").expandingElement({expandText:">> show more", contractText:"<< show less"});
       
    //Generate footnotes last   
    footnoteLinks("main-content","footnotes");   
});



      

    
    

//uses jQuery
//check and uncheck checkboxes beneath and item
function CheckAllCheckboxes(selector){
    var $checkboxes = $(selector+" input[type='checkbox']");       
    $checkboxes.attr("checked","checked");        
}
function UnCheckAllCheckboxes(selector){
    var $checkboxes = $(selector+" input[type='checkbox']");   
    
    $checkboxes.removeAttr("checked");
    
   
}
(function($){
    $.fn.bracketList = function(parentLevelNumber){
        var defaults = {          
        };    
        
        if (parentLevelNumber)
        {

              }
              else
              {
              parentLevelNumber = "";
              }
        
        return this.each(function(){  
        
        var obj = $(this);
        obj.addClass("orderedList");
        
        var children = obj.children("li");
        for(var i = 0; i < children.length; i++){
            var levelValue = parentLevelNumber + (i+1);
        
            $(children[i]).children("ol").bracketList(levelValue + ".");
            $(children[i]).wrapInner("<span class=\"item\"></span>");
            $(children[i]).prepend("<span class=\"number\">" + levelValue + ")</span>");  
            
        }
        
        });//this.each
 
     }//function
     
     
})(jQuery);
