var loadedScripts = {}; // included-scripts tracker
function importScriptURI( url ) {
	if ( loadedScripts[url] ) {
		return null;
	}
	loadedScripts[url] = true;
	var s = document.createElement( 'script' );
	s.setAttribute( 'src', url );
	s.setAttribute( 'type', 'text/javascript' );
	document.getElementsByTagName('head')[0].appendChild( s );
	return s;
}

function importStylesheetURI( url, media ) {
	var l = document.createElement( 'link' );
	l.type = 'text/css';
	l.rel = 'stylesheet';
	l.href = url;
	if( media ) {
		l.media = media;
	}
	document.getElementsByTagName('head')[0].appendChild( l );
	return l;
}

function appendCSS( text ) {
	var s = document.createElement( 'style' );
	s.type = 'text/css';
	s.rel = 'stylesheet';
	if ( s.styleSheet ) {
		s.styleSheet.cssText = text; // IE
	} else {
		s.appendChild( document.createTextNode( text + '' ) ); // Safari sometimes borks on null
	}
	document.getElementsByTagName('head')[0].appendChild( s );
	return s;
}

function getElementsByClassName( oElm, strTagName, oClassNames ) {
	var arrReturnElements = new Array();
	if ( typeof( oElm.getElementsByClassName ) == 'function' ) {
		/* Use a native implementation where possible FF3, Saf3.2, Opera 9.5 */
		var arrNativeReturn = oElm.getElementsByClassName( oClassNames );
		if ( strTagName == '*' ) {
			return arrNativeReturn;
		}
		for ( var h = 0; h < arrNativeReturn.length; h++ ) {
			if( arrNativeReturn[h].tagName.toLowerCase() == strTagName.toLowerCase() ) {
				arrReturnElements[arrReturnElements.length] = arrNativeReturn[h];
			}
		}
		return arrReturnElements;
	}
	var arrElements = ( strTagName == '*' && oElm.all ) ? oElm.all : oElm.getElementsByTagName( strTagName );
	var arrRegExpClassNames = new Array();
	if( typeof oClassNames == 'object' ) {
		for( var i = 0; i < oClassNames.length; i++ ) {
			arrRegExpClassNames[arrRegExpClassNames.length] =
				new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)");
		}
	} else {
		arrRegExpClassNames[arrRegExpClassNames.length] =
			new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)");
	}
	var oElement;
	var bMatchesAll;
	for( var j = 0; j < arrElements.length; j++ ) {
		oElement = arrElements[j];
		bMatchesAll = true;
		for( var k = 0; k < arrRegExpClassNames.length; k++ ) {
			if( !arrRegExpClassNames[k].test( oElement.className ) ) {
				bMatchesAll = false;
				break;
			}
		}
		if( bMatchesAll ) {
			arrReturnElements[arrReturnElements.length] = oElement;
		}
	}
	return ( arrReturnElements );
}

function getInnerText( el ) {
	if ( typeof el == 'string' ) {
		return el;
	}
	if ( typeof el == 'undefined' ) {
		return el;
	}
	if ( el.textContent ) {
		return el.textContent; // not needed but it is faster
	}
	if ( el.innerText ) {
		return el.innerText; // IE doesn't have textContent
	}
	var str = '';

	var cs = el.childNodes;
	var l = cs.length;
	for ( var i = 0; i < l; i++ ) {
		switch ( cs[i].nodeType ) {
			case 1: // ELEMENT_NODE
				str += ts_getInnerText( cs[i] );
				break;
			case 3:	// TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
	}
	return str;
}

/**
 * Add an event handler to an element
 *
 * @param Element element Element to add handler to
 * @param String attach Event to attach to
 * @param callable handler Event handler callback
 */
function addHandler( element, attach, handler ) {
	if( window.addEventListener ) {
		element.addEventListener( attach, handler, false );
	} else if( window.attachEvent ) {
		element.attachEvent( 'on' + attach, handler );
	}
}

/**
 * Add a click event handler to an element
 *
 * @param Element element Element to add handler to
 * @param callable handler Event handler callback
 */
function addClickHandler( element, handler ) {
	addHandler( element, 'click', handler );
}

/**
 * Removes an event handler from an element
 *
 * @param Element element Element to remove handler from
 * @param String remove Event to remove
 * @param callable handler Event handler callback to remove
 */
function removeHandler( element, remove, handler ) {
	if( window.removeEventListener ) {
		element.removeEventListener( remove, handler, false );
	} else if( window.detachEvent ) {
		element.detachEvent( 'on' + remove, handler );
	}
}

// structured listing with site-map begins
function removeFolderLinkAndIcon(rootNode){
  if(!rootNode)rootNode = document.getElementById("content");
  if(rootNode)if(rootNode.innerHTML){
    rootNode.id = "index_map";
    rootNode.className = "sitemapredlink";
    var imgs=$("img[alt^='Level ']",rootNode).not("[alt='Level 1 Item']");
    imgs.attr('width','24');imgs.parent().attr('width','24');imgs.show();
    $("img[alt='Level 1 Item']",rootNode).hide();
    var o1 = rootNode.getElementsByTagName("td");
    if(o1)for(n1 in o1)if(o1[n1])if(o1[n1].innerHTML){
      var o2 = o1[n1].getElementsByTagName("script");
      if(o2)for(n2 in o2)if(o2[n2])if(o2[n2].innerHTML){
        var innerStr = o2[n2].innerHTML;
        var o3 = o2[n2].parentNode.childNodes;
        if(innerStr.toLowerCase().indexOf("/asset_types/folder/")!=-1){
          if(o3)for(n3 in o3)if(o3[n3])if(o3[n3].tagName)if(o3[n3].tagName.toLowerCase()=="a"&&o3[n3].innerHTML)o3[n3].parentNode.innerHTML = "<span style='font-size:12px;font-weight:bold;'>"+o3[n3].innerHTML+"</span>";
        }
        else if(innerStr.toLowerCase().indexOf("/asset_types/")!=-1){
          if(o3)for(n3 in o3)if(o3[n3])if(o3[n3].tagName)if(o3[n3].tagName.toLowerCase()=="img")o3[n3].style.display="none";
        }
      }
    }
  }
}
function formatAjaxSitemap(rootNode){
  if(!rootNode)rootNode = document.getElementById("content");
  if(rootNode){rootNode.id="index_map";rootNode.className = "sitemapredlink";}
  var mapNode = document.getElementById("site-map-output");
  if(mapNode){
    var o1=$("img.sq-icon[alt='folder']",mapNode).get();
    for(var i=0;i<o1.length;i++)if(o1[i])o1[i].parentNode.parentNode.innerHTML = "<span style='font-size:12px;font-weight:bold;'>"+o1[i].parentNode.innerHTML+"</span>";
  }
}
function formatSitemap(rootNode){
  if(!rootNode)rootNode = document.getElementById("content");
  if(rootNode){
    rootNode.id = "index_map";
    rootNode.className = "sitemapredlink";
    var imgs=$("img[alt^='Level ']",rootNode).not("[alt='Level 1 Item']");
    imgs.attr('width','24');imgs.parent().attr('width','24');imgs.show();
    $("img[alt='Level 1 Item']",rootNode).hide();
    var o1=$("img.sq-icon[alt='folder']",rootNode).get();
    for(var i=0;i<o1.length;i++)if(o1[i])o1[i].parentNode.parentNode.innerHTML = "<span style='font-size:12px;font-weight:bold;'>"+o1[i].parentNode.innerHTML+"</span>";
  }
}
function resetMapLayout(rootNode){
  if(!rootNode)rootNode = document.getElementById("content");
  if(rootNode){rootNode.id = "index_map";rootNode.className = "sitemapredlink";}
  var mapNode = document.getElementById("site-map-output");
  if(mapNode){
    var imgs=$("img[alt^='Level ']",mapNode).not("[alt='Level 1 Item']");
    imgs.attr('width','24');imgs.parent().attr('width','24');imgs.show();
    $("img[alt='Level 1 Item']",mapNode).hide();
    var o1=$("img.sq-icon[alt='folder']",mapNode).get();
    for(var i=0;i<o1.length;i++)if(o1[i])o1[i].parentNode.parentNode.innerHTML = "<span style='font-size:12px;font-weight:bold;'>"+o1[i].parentNode.innerHTML+"</span>";
  }
}
// structured listing with site-map ends

function showOrHideObj(objId){
  var theObj=document.getElementById(objId);
  if(theObj){
    if(theObj.style.display=="none")theObj.style.display="block";
    else theObj.style.display="none";
  }
}
var isVisible=false;
function showOrHideBySelector(selectorStr,buttonObj,buttonOff,buttonOn){
  if(buttonObj)if(buttonObj.innerHTML){
    if(buttonObj.innerHTML==buttonOff){$(selectorStr).show();buttonObj.innerHTML=buttonOn;}
    else{$(selectorStr).hide();buttonObj.innerHTML=buttonOff;}
  }
  else if(!isVisible){$(selectorStr).show();isVisible=true;}
  else{$(selectorStr).hide();isVisible=false;}
}

if(self.name=="ees_modePreviewFrame")self.frameElement.style.height="720px";
//if(window.document.title.indexOf("globals_site_name")!=-1)window.document.title=location.href;
if(location.href.lastIndexOf("_login?")==location.href.length-7)location.href=location.href.substring(0,location.href.length-7);else if(location.href.indexOf("_login?SQ_ACTION=logout")!=-1)location.href=location.href.substring(0,location.href.indexOf("_login?SQ_ACTION=logout"));
var pageTitle=window.document.title?window.document.title:window.location.href;function sendurl(){mail_str="mailto:?subject="+encodeURIComponent(pageTitle);mail_str+="&body="+encodeURIComponent("Hi, \n\nA friend or colleague of yours thought you might be interested in the information from this webpage: \n"+window.location.href);window.location.href=mail_str;}
if(document.location.href.indexOf("-index")!=-1||document.location.href.indexOf("/index")!=-1||document.location.href.indexOf("site-map")!=-1)formatSitemap();

/*
 A basic content toggler plugin (c) 2011 Gavin Botica < gbotica@gmail.com >
 Usage: Add class="toggle" to an element, then wrap the adjacent content you want to toggle in: <div class="toggle-content"> ... </div>.
 		Then fire up the plugin: $('.toggle').toggle();
		Also, use class="toggle open" to have the toggled content open on page load.
*/
(function(a){a.fn.toggle=function(){jQuery().qtip&&this.qtip({content:{text:"Click to toggle content"},style:{classes:" ui-tooltip-blue ui-tooltip-shadow ui-tooltip-rounded"},position:{my:"bottom center",at:"top right",target:"mouse",viewport:a(window),adjust:{y:-10}}});this.click(function(b){b.preventDefault();a(this).next(".toggle-content").slideToggle(500,"swing",function(){a(this).css("display")!=="none"?a(this).css("opacity",1).prev().find("span[rel=toggleFlag]").css("display","none"):a(this).prev().find("span[rel=toggleFlag]").css("display", "inline")})}).hover(function(){a(this).css({cursor:"pointer",opacity:0.9}).next(".toggle-content").css("opacity",0.4)},function(){a(this).css({opacity:1}).next(".toggle-content").css("opacity",1)}).each(function(){el=a(this);el.append(' <span rel="toggleFlag" style="font-size:21px;line-height:10px;position:relative;top:2px;display:none"> &raquo;</span>');el.hasClass("open")||el.find("span[rel=toggleFlag]").css({display:"inline"}).parent().next(".toggle-content").hide()})}})(jQuery);

(function($){
  $(document).ready(function(){
    $('#home_img').hide();
    $('#slideshow').show();
    $('#slideshowHints').show();
    $('#slideshowWrapper').show();
    $("ul.sf-vertical li:has('ul') > a").addClass("sf-with-ul").append("<span class=\"sf-sub-indicator\"> »</span>");
    // initialise plugins
    $('#slideshow').after('<div id="slideshowHints"><span id="pager" title="Slide"></span></div>').cycle({next:'#slideshow',pager:'#pager',cleartype:1,pause:1,timeout:5000});
    $(function(){$(".popupwindow").popupwindow();});

    // init content togglers
    if (jQuery().toggle) $('.toggle').toggle();

    // init tooltips
    if (jQuery().qtip) {
      $('a[title], input[title]').qtip({
        style: {
          classes: ' ui-tooltip-blue ui-tooltip-shadow ui-tooltip-rounded'
        },
        position: {
          my: 'bottom center',
          at: 'top center',
          viewport: $(window),
          adjust: {
            y: -10
          }
        }
      });
    }

    // style form select controls
    $('select').selectBox({
      menuTransition: 'slide',
      menuSpeed: 'fast'
    });

    // handler for groups of radio button and checkbox form controls
    $('form.vForm p.group input:checked').parent('label').addClass('selected');
    $('form.vForm p.group input[type=radio]').click(function () {
      $('p.group label input[type=radio]').parent().removeClass('selected');
      $(this).parent('label').addClass('selected');
    });
    $('form.vForm p.group input[type=checkbox]').click(function () {
      $(this).parent('label').toggleClass('selected');
    });

  });
})(jQuery);

