﻿// PRELOAD IMAGES --------------------------------------------------------//
img1 = new Image();
img1.src = "/images/pageElements/bgd_sidenav_on.jpg";
img2 = new Image();
img2.src = "/images/uploadFile_on.jpg";


function getDateNow() { 
	// ---- M/dd/yyyy hh:mm:ssa ---- //
	var d = new Date();
	var t = new Date();
	var curDate = d.getMonth() + "/" + d.getDate() + "/" + d.getFullYear();
	
	//time finding
	var curHour = t.getHours();
	var curMin = t.getMinutes();
	var curSec = t.getSeconds();
	var curAMPM = " AM";
	var curTime = "";
	if (curHour >= 12) {
		curHour -= 12;
		curAMPM = " PM";
	}
	if (curHour == 0) curHour = 12
	curTime = curHour + ":" 
		+ ((curMin < 10) ? "0" : "") + curMin + ":" 
		+ ((curSec < 10) ? "0" : "") + curSec 
		+ curAMPM;
	
	var curr_time = t.toLocaleString();
	
	//var curr_time = d.getHours() + ":" + d.getMinutes() + ":";

	return curDate + " " + curTime;
}

function abortion() {
	alert("There was an error with the request.");
}

// returns an array of all elements of a given class.--------------------//
//		oElm - optional, originator element, function returns only children of this element
//		strTagName - optional, filters elements to those of type strTagName
//		strClassName - required, class name to search for
//	Written by Jonathan Snook, http://www.snook.ca/jonathan

function getElementsByClassName(oElm, strTagName, strClassName) {
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}


// from quirksmode.com --------------------------------------------------//
function getPosition(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}


// add these methods to all strings -------------------------------------//
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}


// used in event delegation --------------------------------------------//
function getTarget(e) {
    e = e || window.event;
    return e.target || e.srcElement;
} 

function getTargetClass(e, strClassName) {
	var target = getTarget(e);
	
	strClassName = strClassName.replace(/\-/g, "\\-");
	var regex = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	
	while (target!=document) {
		if (target.className && regex.test(target.className)) return target;
		else target = target.parentNode;
	}
	
	return null;
}


// replace all instances of given substring -----------------------------//
 String.prototype.replaceAll = function(strTarget, strSubString ){
    var strText = this;
    var intIndexOfMatch = strText.indexOf( strTarget );
    while (intIndexOfMatch != -1){
        strText = strText.replace( strTarget, strSubString )
        intIndexOfMatch = strText.indexOf( strTarget );
    }
    return( strText );
 }
 

//returns an array of Key,Value strings from any given query string ----//
//even numbered items represent Keys ... odd numbered items represent Values
function parseKeyValues(queryString) { 
  if (queryString.charAt(0) == "?") {
      queryString = queryString.substring(1); //removes '?' from string 
  }
 
  var pairs = queryString.split("&"); //array of strings key=value
  var elements = new Array();
 
  for(var i=0; i<pairs.length; i++) {
      var keyVal = pairs[i].split("=");
      elements[i * 2] = keyVal[0];
      elements[i * 2 + 1] = keyVal[1];
   }
  return elements;
}


//returns an array of Key,Value strings from any given query string ----//
function getValue(elements,key) {         
  for(var i=0; i<elements.length ; i+=2) {
      if (elements[i] == key) {
          return elements[i+1]
      }
   }
return null; //if key doesn't exist, returns null
}

function redirectPage(pageName) {
	location.href = pageName;
}


// jQuery Auto anchor smooth scrolling ---------------------------------//
$(document).ready(function() {
  function filterPath(string) {
	return string
	  .replace(/^\//,'')
	  .replace(/(index|default).[a-zA-Z]{3,4}$/,'')
	  .replace(/\/$/,'');
  }
  $('a[href*=#]').each(function() {
	if ( filterPath(location.pathname) == filterPath(this.pathname)
	&& location.hostname == this.hostname
	&& this.hash.replace(/#/,'') ) {
	  var $targetId = $(this.hash), $targetAnchor = $('[name=' + this.hash.slice(1) +']');
	  var $target = $targetId.length ? $targetId : $targetAnchor.length ? $targetAnchor : false;
	   if ($target) {
		 var targetOffset = $target.offset().top;
		 $(this).click(function() {
		   $('html, body').animate({scrollTop: targetOffset}, 400);
		   return false;
		 });
	  }
	}
  });
});


// jQuery Accordion effects ---------------------------------------//
function AccordionThis() {
	jQuery().ready(function(){	
		jQuery('.acc').Accordion({
			header: 'a.head', 
			active: 'a.activated', 
			selectedClass: 'activated', 
			alwaysOpen: false, 
			animated: true, 
			showSpeed: 350, 
			hideSpeed: 270
		});
	});
}


// jQuery effects --------------------------------------------------//
function fadeOut(target) {
  $(target).fadeOut("fast");    
}
function fadeIn(target) {
  $(target).fadeIn("fast");    
}
function slideUp(target) {
  $(target).slideUp("fast");    
}
function slideDown(target) {
  $(target).slideDown("fast");
}   
function quickHide(target) {
  $(target).hide();    
}
function quickShow(target) {
  $(target).show();
}

// div toggler
function toggleDiv(targetDiv) {
	if (document.getElementById(targetDiv)) {
		var theDiv = document.getElementById(targetDiv);
		(theDiv.style.display == "block") ? "none" : "block";
	}
}


// Fill Category Dropdown on page with Categories --------------- //
function populateCategoriesDD() {
	PageMethods.retrieveCategories(populateCategoriesDD_CB);
}
function populateCategoriesDD_CB(result) {
	//alert(result);
	var json = eval("(" + result + ")");
	categorySelector.options.length = 0;
	//categorySelector.options.add(new Option("Select a Category", "0"), 0);
	for (var i = 0; i < json.length; i++) {
		categorySelector.options.add(new Option(
		            json[i].name, //text
		            json[i].id //value
	            )
	            , i + 1);
	}
}

function fillContent(contentID) {
	if (contentID != "0") {
		loading_bar.style.display = "inline";
		PageMethods.fillContent(contentID, fillContent_CB);
	}
}
function fillContent_CB(result) {
	var contentTitle = categorySelector.options[categorySelector.selectedIndex].text;
	content.innerHTML = 
		"<h2>" + contentTitle + "</h2>" + 
		result;
	loading_bar.style.display = "none";
}


/* ========== populates states with available KML ========== */
function populateStatesDD() {
	PageMethods.FwdToControl_getStates(populateStates_CB);
}
function populateStates_CB(result) {
	var json = eval("(" + result + ")");
	statesDD.options.length = 0;
	statesDD.options.add(new Option("Select a State", "-1"), 0);
	for (var i = 0; i < json.length; i++) {
		statesDD.options.add(new Option(
			json[i].st, //text
			json[i].st //value
		)
		, i+1);
	}
}


/* ============= populates sub projects DD ============= */
function populateKML(stateName) {
	if (stateName != "-1") {
		kmlLoadingBar.style.display = "block";
		PageMethods.FwdToControl_getKML(stateName, populateKML_CB);
	} else {
		//kmlList.style.display = "none";
	}
}
function populateKML_CB(result) {
	kmlLoadingBar.style.display = "none";
	kmlList.innerHTML = result;
}