/** break out of frames and bogus content-stealing sites */
/*
if (top.location != self.location) top.location = self.location.href;
if (window.location.host != "independenceave.org") {
    window.location.href = "http://independenceave.org/";
}
*/

/** preload common images (loading largest files first) */
//var imgRoot = "http://independenceave.org/";
//var imgRoot = "http://localhost/independenceave/";
var imgRoot = "http://sparqlize.org/independenceave/";
p1=new Image(); p1.src = imgRoot+"_style_buildings.jpg";
p2=new Image(); p2.src = imgRoot+"_style_paisley.gif";
p3=new Image(); p3.src = imgRoot+"_banner.gif";
p4=new Image(); p4.src = imgRoot+"_style_blue_marble.jpg";
p5=new Image(); p5.src = imgRoot+"_w3c_xhtml10.gif";
p6=new Image(); p6.src = imgRoot+"_w3c_css.gif";
p7=new Image(); p7.src = imgRoot+"_style_cue_pdf.gif";
p8=new Image(); p8.src = imgRoot+"index_fade.gif";
p9=new Image(); p9.src = imgRoot+"_style_cue_external.gif";


/** set "display:none" classes (lets non-javascript users see content) */
// TODO: set this to DOM-CSS-MANIP RULES!
/*
document.write(
    [
        '<style type="text/css" media="screen"><!-- ',
//          'DIV.guide *{display:none}',
            'DIV.guide *{color:#8E3838}',
            'DIV.guide DIV{display:none}',
            'DIV.guide .hover{color:#CE7070}',
//          'DIV.open_guide *{display:block}',
        ' --></style>'
    ].join("")
);
*/


/******************************************************************************
 * mark current menu link with "current" class
 *****************************************************************************/
function markCurrentLink() {
    var lnk = document.getElementById("menu");
    lnk = lnk ? lnk.getElementsByTagName("a") : [];
    var path = window.location.href;
    var i = lnk.length;
    while(i && path.indexOf(lnk[i-1].href)!= 0) { i-- }
    if (i) {
        lnk[i-1].className += " current"; // add class
    }
}




/******************************************************************************
 * address path breadcrumb v1.2, Shawn Brown <http://shawnbrown.com/contact>
 *
 * Defines following elements and classes:
 *   A {}
 *   SPAN.current {}
 *   SPAN.bookend {}
 *   SPAN.delimiter {}
 *****************************************************************************/
function addBreadCrumb() {
    /** formatting characters ****************************************************/
    var style = "text-transform:uppercase";
    var delim = " &#187; "; // "&#187;" is HTML code for "»"
    var l_bookend = "&#8226; "; // "&#8226;" is HTML code for ""
    var r_bookend = " &#8226;";
    var depth = 1; // sets folder-depth to turn bcrumb on

    /** simple replacements ******************************************************/
    var replace = new Array();
    replace["independenceave.org"] = "Search";
    replace["00"] = "At Large";   // cdirectory display
    replace["s1"] = "Sr Senator"; // cdirectory display
    replace["s2"] = "Jr Senator"; // cdirectory display
    replace["guide"] = "";        // advocacy folder

    /** advanced replacements ****************************************************/
    var advReplace = new Array();
    advReplace["advocacyguru_"] = "";
    advReplace["(\\d+)of(\\d+)$"] = "(page $1 of $2)";
    advReplace["^(0)([1-9])$"] = "District $2";
    advReplace["^([1-9][0-9])$"] = "District $1";

    /******************************************************************************
     * build breadcrumb links
     *****************************************************************************/
    delim = '<span class="delimiter">'+ delim +'</span>';
    l_bookend = '<span class="bookend">'+ l_bookend +'</span>';
    r_bookend = '<span class="bookend">'+ r_bookend +'</span>';

    /* parse address path */
    var crumb = decodeURI(window.location.hostname + window.location.pathname);
    crumb = crumb.match(/^(.*[^\/])[\/]?$/)[1].split("/");

    /* build nav links */
    if(crumb.length > depth) {
        function format(str) {
            for (ptrn in advReplace) {
                str = str.replace(new RegExp(ptrn,"ig"), advReplace[ptrn]);
            }
            if (replace[str] != null)
                return replace[str]; // if exists, rtrn replacement
            str = str.replace(/[_ ]/g, "&#160;"); // is decimal code for &nbsp;
            var pos = str.lastIndexOf(".");
            if (pos > -1)
                str = str.substring(0, pos);
            return str
        }
        var text = "";
        var path = window.location.protocol + "//";
        var links = crumb.length-1;
        var navPath = l_bookend;
        for (var i=0; i<links; i++) {
            path += crumb[i] + "/";
            txt = format(crumb[i]);
            if (!txt)
                continue;
            navPath += '<a href="' + path + '">' + txt + '</a>' + delim;
        }
        navPath += '<span class="current">'+format(crumb[i])+'</span>'+r_bookend;
        if(style)navPath = '<span style="'+style+'">'+navPath+'</span>';
        //document.write(navPath); // write to browser
    } else {
        var navPath = "";
    }
    /* attach breadcrumb links to DOM */
    var info_td = document.getElementById("breadcrumb");
    info_td.innerHTML = navPath;
}









/******************************************************************************
 * EVENTX: CASCADING EVENT EXTENSIONS (ADD RULES TO ruleSets LIST)
 *****************************************************************************/
var ruleSets=[

'A.popup { onclick: return popup(this.href) }',

'DIV.guide > H2 { onclick: toggleClass(this.parentNode,"guide","open_guide") }',
'DIV.guide > H2 { oninit: this.style.cursor="pointer" }',
//'DIV.guide > H2 { oninit: this.style.cursor="pointer";  this.onclick=function(){toggleClass(this.parentNode,"guide","open_guide")} }',

'DIV.guide > H3 { onclick: toggleClass(this.parentNode,"guide","open_guide") }',
'DIV.guide > H3 { oninit: this.style.cursor="pointer" }',
//'DIV.guide > H3 { oninit: this.style.cursor="pointer";  this.onclick=function(){toggleClass(this.parentNode,"guide","open_guide")} }',

//'DIV.guide > H2 { onmouseover: if(typeof addClass=="function")addClass(this,"hover") }',
//'DIV.guide > H2 { onmouseout: if(typeof removeClass=="function")removeClass(this,"hover") }',

'A.external { onclick: return external(this) }',
'A.natlas { onclick: window.open(this.href,"","height=450,scrollbars=yes,resizable=yes");return false }',

'#full_name { onkeyup: validate(this, /^\\w+[.,]?([ .]+\\w+[.]?)+[ ]*$/) }',
'#full_name { onchange: this.onkeyup() }',
'#full_name { oninit: this.onkeyup() }',
'#email { onkeyup: validate(this, /^([a-zA-Z0-9_.\-]+([+][a-zA-Z0-9_.\-]+)?@([a-zA-Z0-9\-]+[.])+[a-zA-Z0-9]{2,}$)/) }',
'#email { oninit: this.onkeyup() }',
'#subject { onkeyup: validate(this, /^\\w.*/) }',
'#subject { oninit: this.onkeyup() }',
'#message { onkeyup: validate(this, /^\\w.*/) }',
'#message { oninit: this.onkeyup() }',
'FORM#contact { onsubmit: return checkForm(this) }'
// note: last rule not followed by comma

];

/******************************************************************************
 * ADD CUSTOM FUNCTIONS BELOW (FOR USE IN ABOVE RULES)
 *****************************************************************************/
function addClass(n,v){
    n.className+=" "+v
}
function popup(href, width, height) {
    //width = width ? "width="+width : "";
    //height = height ? "height="+height : "";
    //var size = (width ? width : "") + (width&&height ? "," : "") + (height ? height : "");
    //window.open(href, "", "toolbar=no" + (size ? ","+size : ""));
    window.open(href, "", "toolbar=no,scrollbars=yes");
    return false
}
function removeClass(n,v){
    v=new RegExp("[ ]*\\b"+v+"\\b","g");
    n.className=n.className.replace(v,"")
}
function toggleClass(n,v1,v2){
    var rgx=new RegExp("[ ]*\\b"+v1+"\\b","g");
    if(rgx.test(n.className)){
        n.className=n.className.replace(rgx," "+v2)
    }else{
        rgx=new RegExp("[ ]*\\b"+v2+"\\b","g");
        if (n.className.match(rgx)){
            n.className=n.className.replace(rgx," "+v1)
        }
    }
}
function external(n){
    return confirm("You are leaving this site. Do you want to continue?")
}

/* validate() v0.8b (by Shawn Brown, www.shawnbrown.com) */
function validate(x,d){if(!x.type||(d&&!d.test))return null;var f=false;
switch(x.type){case'text':case'textarea':case'password':case'file':if(
d.test(x.value))f=true;break;case'checkbox':if(x.checked)f=true;break;case
'select-one':if(d.test(x.options[x.selectedIndex].text))f=true;break;case
'radio':var j=x.form[x.name];for(var i=0,c=j.length;i<c;i++){if(j[i].checked
)f=true;if(!j[i].onclick)j[i].onclick=function(){h(this)}}break;default:
return null}if(!j)var j=new Array(x);for(var i=0,c=j.length;i<c;i++){var
r=new RegExp('\\s*\\b(invalid|alert)\\b','g');if(f)j[i].className=
j[i].className.replace(r,'');else if(!r.test(j[i].className))j[i].className
+=' invalid'}}

/* checkForm() v0.8b (by Shawn Brown, www.shawnbrown.com) */
function checkForm(f){f=(f.all)?f.all:f.getElementsByTagName('*');for(var i
=0,d=f.length;i<d;i++){var x=f[i];var g=new RegExp('\\binvalid\\b');if(
g.test(x.className)){if(x.createTextRange&&(x.type=='text'||x.type==
'textarea'||x.type=='password')){var c=x.createTextRange();c.collapse(false);
c.select()}else if(x.h&&(x.type=='text'||x.type=='textarea'||x.type==
'password')){x.focus();var c=x.value.length;x.h(c,c)}else{x.focus()}alert(
'Please correct the highlighted area.');x.className+=' alert';return false}}
for(var i=0,d=f.length;i<d;i++){if(f[i].type&&f[i].type=='submit'){
f[i].disabled=true}}return true}


function popCue(n){
    n.title=n.title?n.title+" - ":"";
    n.title+="Opens in New Window";
    n.innerHTML+='<img src="_behavior_cue_pop.gif" />' // TODO: set to absolute
}
function addImg(n,s){
    n.innerHTML+='<img src="'+s+'" />';
}



/******************************************************************************
 * BEGIN EventX v0.9 (build 1) - TO EDIT, SEE EVENTX_FULL_COMMENT.TXT
 * Copyright 2005 Shawn Brown - http://shawnbrown.com/contact
 * License - http://creativecommons.org/licenses/by/2.5/
 * Manner of Attribution - don't remove the copyright notice or contact info
 *****************************************************************************/
var autoRun = true; // if true, eventxMain() runs at onload
var syntaxAlert = false; // if true, alert box displays rule with error

function eventxMain(){if(!document.getElementsByTagName)return null;for(
var i=0,aq=ruleSets.length;i<aq;i++){var al=ruleSets[i].match(av);if(al)af(
al[1],al[2],'function(){'+al[4]+'}',document);else if(syntaxAlert)alert(
'Syntax error in following EventX rule:\n\n'+ruleSets[i])}if(
navigator.userAgent.toLowerCase().indexOf('msie')>-1&&
navigator.userAgent.toLowerCase().indexOf('opera')==-1){if(typeof
window.onunload!='function'){window.onunload=ah}else{var as=window.onunload;
window.onunload=function(){as();ah()}}}}function ah(){for(var i=
ruleSets.length;i;i--){var al=ruleSets[i-1].match(av);if(al)af(al[1],al[2],
'null',document)}}try{var av=new RegExp().compile('^[ ]*([\\w\\d*#+>. ]+)[ ]'
+'*\\{[ ]*([\\w]+)[ ]*:[ ]*(["\']?)(.*)[ ]*\\3[ ]*\\}[ ]*$')}catch(e){var av
=/^[ ]*([\w\d*#+>. ]+)[ ]*\{[ ]*([\w]+)[ ]*:[ ]*(["\']?)(.*)[ ]*\3[ ]*\}[ ]*$/
}function af(an,ap,ab,ak){if(an.lastIndexOf('#')>-1){an=an.substring(
an.lastIndexOf('#'),an.length)}var ac,au;if(an.indexOf(' ')>-1){ac=
an.substring(0,an.indexOf(' '));au=an.substring(an.indexOf(' ')+1,an.length)}
else{ac=an;au=''}if(ac.indexOf('.')>-1){var ad=ac.substring(ac.indexOf('.')
+1,ac.length);ac=ac.substring(0,ac.indexOf('.'))}var aw=[];switch(
ac.substring(0,1)){case'#':ac=ac.substring(1,ac.length);aw[0]=
ak.getElementById(ac);if(!aw[0])return null;break;case'>':ac=ac.substring(
1,ac.length);aw=ak.childNodes;var ax=[];for(var i=0,aq=aw.length;i<aq;i++){
if(aw[i].tagName==ac||ac=='*'){ax[ax.length]=aw[i]}}aw=ax;break;case'+':ac=
ac.substring(1,ac.length);while(ak.nextSibling&&ak.nextSibling.nodeType!=1){
ak=ak.nextSibling}if(ak.nextSibling&&(ak.nextSibling.tagName==ac||ac=='*')){
aw[0]=ak.nextSibling}break;default:if(ac=='*'||(ad&&!ac)){aw=ak.all?ak.all:
ak.getElementsByTagName('*')}else{aw=ak.getElementsByTagName(ac)}}if(ad){var
ax=[];var at=new RegExp('\\b'+ad+'\\b');for(var i=0,aq=aw.length;i<aq;i++){
if(at.test(aw[i].className)){ax[ax.length]=aw[i]}}aw=ax}if(au){for(var i=0,
aq=aw.length;i<aq;i++){af(au,ap,ab,aw[i])}}else{if(ap!='oninit'){for(var i
=0,aq=aw.length;i<aq;i++){eval('aw[i].'+ap+'='+ab)}}
// IF ERROR ON THIS LINE, CHECK YOUR RULE BEHAVIOUR CODE (IN ruleSets[] ARRAY)
else{for(var i=0,aq=aw.length;i<aq;i++){eval('aw[i].aa='+ab);aw[i].aa()}}}}
ag:{try{var ao=new RegExp().compile('[ ][ ]+','g');var aj=new
RegExp().compile('[ ]?>[ ]?','g');var am=new RegExp().compile('[ ]?\\+[ ]?',
'g');var bc=new RegExp().compile('#','g');var az=new RegExp().compile('[.]',
'g');var ba=new RegExp().compile('(^|[ ])[\\w+>*]','g');var bb=new
RegExp().compile('[ ]*[!][ ]*(important|first)[ ]*}$')}catch(e){var ao
=/[ ][ ]+/g;var aj=/[ ]?>[ ]?/g;var am=/[ ]?\+[ ]?/g;var bc=/#/g;var az
=/[.]/g;var ba=/(^|[ ])[\w+>*]/g;var bb=/[ ]*[!][ ]*(important|first)[ ]*}$/
}for(var i=0,aq=ruleSets.length;i<aq;i++){var al=ruleSets[i];var an=
al.substring(0,al.indexOf('{'));var ae=al.substring(al.indexOf('{'),
al.length);an=an.replace(ao,' ');an=an.replace(aj,' >');an=an.replace(am,
' +');function ar(ay){return ay?(ay.length<9?ay.length.toString():'9'):'0'};
var ai=ar(an.match(bc));ai+=ar(an.match(az));ai+=ar(an.match(ba));ai+='-'+
'00000'.substring(0,5-i.toString().length)+i.toString()+'~';var at=ae.match(
bb);if(at){ai=((at[1]=='important')?'X':'%')+ai;ae=ae.substring(0,
ae.lastIndexOf('!'))+'}'}ruleSets[i]=ai+an+ae}ruleSets.sort();for(var i
=ruleSets.length;i;i--){var al=ruleSets[i-1];ruleSets[i-1]=al.substring(
al.indexOf('~')+1,al.length)}}
/******************************************************************************
 * If autorun is true, add eventxMain() to onload.
 * The following code adapted from Simon Willison's addLoadEvent() function -
 * http://simon.incutio.com/archive/2004/05/26/addLoadEvent
 *****************************************************************************/
function onLoadTasks() {
    eventxMain();
    addBreadCrumb();
    markCurrentLink();
}
if(autoRun===true){
    if(typeof window.onload!='function'){
        window.onload=onLoadTasks
    }else{
        var oldonload=window.onload;
        window.onload=function(){oldonload();onLoadTasks()}
    }
}

