
// ---------- Start E-mail a Page ---------- //
//document.onmousedown = hideEmailThis; //funny
function showEmailThis(){
  var email_pop = document.getElementById('email_pop');
  if ( email_pop ){
    email_pop.style.display = '';
  }
}
function hideEmailThis(){
  var email_pop = document.getElementById('email_pop');
  if ( email_pop ){
    email_pop.style.display = 'none';
  }
}
function checkEmailForm(email_form,base_url){
  var valid = true;

  var emailregex = /^[-_a-z0-9\.]+@[-_a-z0-9\.]+\.[-_a-z0-9]+$/;

  //if ( email_form.your_first_name.value == '' ){
  //  valid = false;
  //  alert('Please enter your first name.');
  //  email_form.your_first_name.focus();
  //}
  //else if ( email_form.your_last_name.value == '' ){
  //  valid = false;
  //  alert('Please enter your last name.');
  //  email_form.your_last_name.focus();
  //}
  //else if ( !emailregex.test(email_form.your_email.value) ){
  //  valid = false;
  //  alert('Please enter a valid e-mail address.');
  //  email_form.your_email.focus();
  //}
  //else if ( email_form.their_first_name.value == '' ){
  //  valid = false;
  //  alert('Please enter the recipient\'s first name.');
  //  email_form.their_first_name.focus();
  //}
  //else if ( email_form.their_last_name.value == '' ){
  //  valid = false;
  //  alert('Please enter the recipient\'s last name.');
  //  email_form.their_last_name.focus();
  //}
  //else
  if ( !emailregex.test(email_form.their_email.value) ){
    valid = false;
    alert('Please enter a valid e-mail address.');
    email_form.their_email.focus();
  }

  if ( valid ){
    post_response_id = 'email_this_form_div';

    makePOSTRequest(email_form,base_url+'scripts/email/email_page.php');
  }

  return false;
}
// ---------- End E-mail a Page ---------- //

// ---------- Start Emailed Form Validation ---------- //
function validateEmailedForm(form){
  var valids = 0;
  var fields = Array();

  if ( form.elements.required_fields && form.elements.required_fields.value != '' ){
    fields = form.elements.required_fields.value.split(/,/);
    for ( x in fields ){
//alert(form.elements[fields[x]].type + ' ' + fields[x])
      //if ( form.elements[fields[x]] && form.elements[fields[x]].value != '' ){
        var selection = false;
        if( form.elements[fields[x]].type == "text" || form.elements[fields[x]].type == "textarea" || form.elements[fields[x]].type == "hidden"){
          if ( form.elements[fields[x]].value != '' )
            selection = true;
        } else if (form.elements[fields[x]].type == "checkbox") {
            selection = true;
        } else if (form.elements[fields[x]].type == "select" || form.elements[fields[x]].type == "select-one") {
            if ( form.elements[fields[x]].options[form.elements[fields[x]].selectedIndex].value != '' )
              selection = true;
        }else //alert(form.elements[fields[x]].type + ' ' + fields[x]);        

        if ( selection )
          valids += 1;
      //}

    }
  }

  //alert(valids + ' ' + fields.length);

  if ( valids < fields.length ){
    alert ( 'Please enter all required fields.' );
    return false;
  }else return true;

}
// ---------- End Ballot Form Validation ---------- //

// ---------- Start Text Highlight Window ---------- //
var mousex = null;
var mousey = null;
var scrOfX = 0;
var scrOfY = 0;
var t_out; // timeout

function mouseDown(ev){
        ev           = ev || window.event;
        if(ev.pageX || ev.pageY){
                mousex = ev.pageX;
                mousey = ev.pageY;
        }
        else if ( ev.clientX || ev.clientY ){
                //mousex = ev.clientX + document.body.scrollLeft - document.body.clientLeft;
                //mousey = ev.clientY + document.body.scrollHeight  - document.body.clientTop;
                getScrollXY();
                mousex = ev.clientX + scrOfX;
                mousey = ev.clientY + scrOfY;
        }
}

function getScrollXY() {
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
}


function setVisible(id, show) {
  var el = document.getElementById(id);
	if (el) {
	//el.style.visibility = (el.style.visibility == 'visible') ? 'hidden' : 'visible';
	   el.style.visibility = show;
	}

}
function setDisplay(id, show, timeout) {
	if (timeout != null){
		t_out = setTimeout("setDisplay('"+id+"','"+show+"')",parseInt(timeout));
	} else{
		el = document.getElementById(id);
		el.style.display = show;
	}
}
function showHide(id){
	el = document.getElementById(id);
	if (el.style.display == 'none')
		el.style.display = 'inline';
	else
		el.style.display = 'none';
}
function showHideByName(name){
	el = document.getElementsByName(name);
	for (i=0; i<el.length; i++) {
		if (el[i].style.display == 'none')
			el[i].style.display = 'inline';
		else
			el[i].style.display = 'none';
	}
}

// function created by 'Fred' on Google groups
document.getElementsByClassName = function(className, parentElement) { 
  if (typeof parentElement == 'string'){ 
    parentElement = document.getElementById(parentElement); 
  } else if (typeof parentElement != 'object' || 
             typeof parentElement.tagName != 'string'){ 
    parentElement = document.body; 
  } 
  var children = parentElement.getElementsByTagName('*'); 
  var re = new RegExp('\\b' + className + '\\b'); 
  var el, elements = []; 
  var i = 0; 
  while ( (el = children[i++]) ){ 
    if ( el.className && re.test(el.className)){ 
      elements.push(el); 
    } 
  } 
  return elements; 
} 

function placeIt(id, x, y, show) {
	var offset = 5;
	el = document.getElementById(id);
/*
	if (document.documentElement) {
		theLeft = document.documentElement.scrollLeft;
		theTop = document.documentElement.scrollTop;
	}
	else if (document.body) {
		theLeft = document.body.scrollLeft;
		theTop = document.body.scrollTop;
	}
	//alert('top: '+theTop+'\nleft: '+theLeft);
	theLeft += x + 340;
	theTop += y + 260;
	//alert('height: '+window.innerHeight+'\nwidth: '+window.innerWidth);
  box_width = document.getElementById(id).offsetWidth;
	//alert('theLeft: '+theLeft+'\nbox_width: '+box_width+'\nwidth: '+window.innerWidth);
	if ( (theLeft + box_width) > window.innerWidth ){
    theLeft -= (theLeft + box_width) - window.innerWidth;
  }
*/
	theLeft = x + offset;
	theTop = y + offset;


	el.style.left = theLeft + 'px' ;
	el.style.top = theTop + 'px' ;

	setDisplay(id, show);
}

//function showGlossary(text, id, x, y, show) {
function showGlossary(text, id, ev, show) {
//	placeIt(id, x, y, show);
	mouseDown(ev);
	clearTimeout(t_out);
	placeIt(id, mousex, mousey, show);
	el = document.getElementById(id);
	el.innerHTML = text;
}
// ---------- End Text Highlight Window ---------- //

// ---------- Start Navigation Drop Downs ---------- //
var DropDowns = Array;
function showDropDown(id){
  if ( id ){
    DropDowns[id] = 'open';
    document.getElementById(id).style.visibility = 'visible';
  }
}
function hideDropDown(id){
  if ( id && DropDowns[id] && DropDowns[id] == 'open' ){
    DropDowns[id] = 'closed';
    //setTimeout('document.getElementById(\''+id+'\').style.visibility = \'hidden\';',500);
    document.getElementById(id).style.visibility = 'hidden';
  }
}
function hideOpenDropDowns(){
  for ( x in DropDowns ){
    hideDropDown(x);
  }
}

function showDropDownChild(id,top_level){
  if ( id ){
    line_height = 24;
    document.getElementById(id).style.top  = (top_level*line_height)+"px";
    setVisible(id,'visible');
  }
}
function hideDropDownChild(id){
  if ( id ){
    setVisible(id,'hidden');
  }
}
// ---------- End Navigation Drop Downs ---------- //

// ---------- Start Homepage Logo Scrolling ---------- // 
function startLeftScroll(id){
  var box = document.getElementById(id);
  var box2 = document.createElement('div');
  box2.id = id+'_virtual';
  box2.innerHTML = box.innerHTML;
  box2.className = 'logo_box';
  box.parentNode.appendChild(box2);
  moveABit(id,0);
}
function moveABit(id,position){
    var keepscrolling = true;
    var box = document.getElementById(id);
    var other_box = document.getElementById(id+'_virtual');
    var width = box.offsetWidth;
    position = position - 1;
    box.style.left = position+'px';
    var other_position = position + width;
    other_box.style.left = other_position +'px';
     // if main box is completely hidden, move behind virtual
    var diff = (width) + position;
    if ( diff <= 1 ){
      position = 0;
    }
    if ( keepscrolling )
      setTimeout("moveABit('"+id+"','"+position+"');",100);
}
// ---------- End Homepage Logo Scrolling ---------- //


// ---------- Make POST Request ---------- //
var post_response_id;
function makePOSTRequest(obj,url){
  var poststr = "";
  var amp = '';
  var apoststr = '';
  for( var x=0;  x<obj.length;x++ ){
    try{
      if ( obj.elements[x].type && obj.elements[x].name ){
        apoststr = '';
        if(obj.elements[x].type == "text" || obj.elements[x].type == "textarea" || obj.elements[x].type == "hidden"){
          apoststr += amp+obj.elements[x].name+"="+encodeURIComponent(obj.elements[x].value);
        } else if (obj.elements[x].type == "checkbox") {
          apoststr += amp+obj.elements[x].name+"="+obj.elements[x].checked;
        } else if (obj.elements[x].type == "select" || obj.elements[x].type == "select-one") {
          apoststr += amp+obj.elements[x].name+"="+obj.elements[x].options[obj.elements[x].selectedIndex].value;
        }
        amp = '&';
        poststr += apoststr;
      }
    }catch(e){}
  }
  executePOSTRequest(url, poststr);
}

var http_request = false;
function executePOSTRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
       // set type accordingly to anticipated content type
       //http_request.overrideMimeType('text/xml');
      http_request.overrideMimeType('text/html');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_request) {
    alert('Cannot create XMLHTTP instance');
    return false;
  }

  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
  return true;
}

function alertContents() {
  if (http_request.readyState == 4) {
    if (http_request.status == 200) {
       //alert(http_request.responseText);
      result = http_request.responseText;
      if ( document.getElementById(post_response_id) ) {
        //var text = document.createTextNode(result);
        //document.getElementById(post_response_id).appendChild(text); 
        document.getElementById(post_response_id).innerHTML = result; 
      }
    } else {
      //alert(http_request.status);
      //alert('There was a problem with the request.');
    }
  }
}
