if(typeof cmsinclude == 'undefined') {
cmsinclude = true;
if(typeof cms == 'undefined') {cms = {};}


cms_js_includes = [];
cms_js_includes_pop = false;
__ci_getAjaxTransport=function() {
	if(window.ActiveXObject){
		try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){
			try{new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}
		}
	}else{
		try{return new XMLHttpRequest();} catch(e) {}
	}
	return null;
};
__ci_createElement=function(tag) {
	var ns, de = document.documentElement;
	ns = (de ? de.namespaceURI : false);
	if (ns) { return document.createElementNS(ns, tag);} 
	else { return document.createElement(tag); }
};
cms.populateJSIncludes = function() {
        cms_js_includes_pop=true;
		var h, script, asl = document.scripts;
		if( !asl ){asl=document.getElementsByTagName("script");}
		for(h=0; h<asl.length;h++) {
			script = asl[h];
			script.loaded = true;
			cms_js_includes.push(script);
		}
    if(window.detachEvent){window.detachEvent("onload", cms.populateJSIncludes);
    } else {window.removeEventListener("load", cms.populateJSIncludes, true);}
};
if(window.attachEvent){window.attachEvent("onload", cms.populateJSIncludes);
} else {window.addEventListener("load", cms.populateJSIncludes, true);}

cms.addJSInclude = function(url) { // Add the URL only -- don't add to page
    var i, found=false;
    for(i=0; i < cms_js_includes.length; i++) {
        if(cms_js_includes[i].src == url){
            found = true;
            break;
        }
    }
	if(!found) {
	    var script = __ci_createElement("script");
	    script.setAttribute("type", "text/javascript");
	    script.setAttribute("src", url);
	    script.loaded = true;
		cms_js_includes.push(script);
	}
};
cms.includeJS = function(url, allowDuplicates) {
	var src, h, bound, allowDups = (allowDuplicates == 'true') || allowDuplicates === true || false;
    var rx = /https?:\/\/[A-Za-z0-9.\-]+(:[0-9]+)?/;
	if(!allowDups) { // Check for existing ref.
    	var js_list = (cms_js_includes_pop ? cms_js_includes : document.getElementsByTagName("script"));
		for(h = 0; h < js_list.length; h++) {
			var script = js_list[h];
			if(!script.src) {continue;}
			src=script.src;
			url = url.replace(rx, '');
			src = src.replace(rx, '');
			if(src == url || ('/' + src) == url) {
				return script;
			}
		}
	}
    var scr = __ci_createElement("script");
    scr.setAttribute("type", "text/javascript");
    scr.setAttribute("src", url);
    cms_js_includes.push(scr);
	scr.loaded = false;
	var ajax = __ci_getAjaxTransport();
    if(ajax){
    	ajax.open("GET", scr.src, false);
    	try {
    		ajax.send('');
    		if(ajax.status == 200 || ajax.status === 0) {
    	    	if(typeof execScript != 'undefined') {execScript(ajax.responseText, "JavaScript");}
    	    	else {window.eval(ajax.responseText);}
    	    	scr.loaded = true;
    		}
    	} catch(e) { 
            if(typeof console != 'undefined'){
                console.error("Unable to load and parse javascript: " + scr.src + "\n" + e.stackTrace);
            } 
        }
    }
	if(!scr.loaded) {
		document.getElementsByTagName("head")[0].appendChild(scr);
        scr.loaded=true;
	}
    return scr;
};

/**
* Include a CSS file.
* @param type optional type of stylesheet. Either "stylesheet" or "alternate stylesheet".
* @param mediaType optional media type. Defaults to "all".
* @param url the url of the CSS file.
* @return the created link tag or an existing link tag if the CSS is already included or null if it could not be created.
*/
cms.includeCSS = function(url, type, mediaType) {
	var rel = "stylesheet", media="all";
	if(type) {rel = type.toLowerCase();}
	if(mediaType) {media = mediaType;}
	var head = document.getElementsByTagName("head")[0]; 
	var base = cms.getBaseURL();
	// Check for existing ref.
	var allCSS = [];
	allCSS.pushAll(document.getElementsByTagName("link"));
	for(var h = 0; h < allCSS.length; h++) {
		var el = allCSS[h];
		if(!el.href || !el.rel){continue;}
		var src = el.href;
		if(src.indexOf(base)===0){src=src.substring(base.length);}
		if(el.rel.toLowerCase()==rel && (src==url || ('/'+src)==url)){return el;}
	}
    var link = __ci_createElement("link");
    link.setAttribute("rel", rel);
    link.setAttribute("type", "text/css");
    link.setAttribute("href", url);
    link.setAttribute("media", media);
    head.appendChild(link);
    return link;
};

}// End conditional eval
