window.onbeforeunload = runOnBeforeUnload;
g_blnCheckUnload = false;  
window.onload = init;
function init() {
	rollOvers();
	sortTables();
	if(document.getElementsByTagName("body")[0].className == "profile") {
		videoNavigator();
		expandTables();
		graphHover();
		}
	registerFormChangeEvents();
}

function rollOvers() {
	if(document.getElementById) {
		var images = document.getElementsByTagName('IMG');
		var buttons = document.getElementsByTagName('INPUT');
	}
	else if(document.all) {
		var images = document.all.tags('IMG');
		var buttons = document.all.tags('INPUT');
	}
	else return;
	preloads = new Object();
	for (var i = 0; i < images.length; i++) {
		var imageOffSrc = images[i].src + "";
		if(imageOffSrc.indexOf("_off") != -1) {
			var imageOverSrc = imageOffSrc.replace(/_off/g, "_over");
			preloads['imageOff_' + i] = new Image();
			preloads['imageOff_' + i].src = imageOffSrc;
			preloads['imageOver_' + i] = new Image();
			preloads['imageOver_' + i].src = imageOverSrc;
			images[i].onmouseover = function(){this.src = this.src.replace(/_off/g, "_over");}
			images[i].onmouseout = function(){this.src = this.src.replace(/_over/g, "_off");}
		}
	}
	for (var i = 0; i < buttons.length; i++) {
		if(buttons[i].src) {
			var imageOffSrc = buttons[i].src + "";
			if(imageOffSrc.indexOf("_off") != -1) {
				var imageOverSrc = imageOffSrc.replace(/_off/g, "_over");
				preloads['imageOff_' + i] = new Image();
				preloads['imageOff_' + i].src = imageOffSrc;
				preloads['imageOver_' + i] = new Image();
				preloads['imageOver_' + i].src = imageOverSrc;
				buttons[i].onmouseover = function(){this.src = this.src.replace(/_off/g, "_over");}
				buttons[i].onmouseout = function(){this.src = this.src.replace(/_over/g, "_off");}
			}
		}
	}
}
function sortTables() {
	var sortables = getElementsByClassName(document, "table", "sortable");
	if(sortables[0]) {
		for(var q = 0; q < sortables.length; q++) {
			var links = sortables[q].getElementsByTagName("thead")[0].getElementsByTagName("a");
			for(var w = 0; w < links.length; w++) {
				var unsortable = new RegExp('(^| )'+'unsortable'+'( |$)');
				if(!unsortable.test(links[w])) {
					links[w].onclick = function() {
						var loc = 0;
						var dir = "down";
						var siblings = this.parentNode.parentNode.getElementsByTagName("a");
						for(var e = 0; e < siblings.length; e++) {if(siblings[e] != this) {siblings[e].className = "";}}
						var cells = this.parentNode.parentNode.getElementsByTagName("th");
						for(var r = 0; r < cells.length; r++) {cells[r].className = cells[r].className.replace(/active/g, "");}
						if((this.className == "up") || (this.className == "") || (!this.className)) {
							this.className = "down";
							dir = "down";
						}
						else if(this.className == "down") {
							this.className = "up";
							dir = "up";
						}
						this.parentNode.className += " active";
						var active = new RegExp('(^| )'+'active'+'( |$)');
						for(var t = 0; t < cells.length; t++) {if(active.test(cells[t].className)) {loc = t;}}
						doSort(this.parentNode.parentNode.parentNode.parentNode, loc, cells.length, dir);
					}
				}
			}
		}
	}
}
function doSort(table, loc, total, dir) {
	var allCells = table.getElementsByTagName("td");
	var q = 0;
	var det = 0;
	while(q < allCells.length) {
		if(allCells[q].colSpan > 1) {det = 1;}
		++q;
	}
	var cells = new Array();
	var contents = new Array();
	var w = 0;
	for(var q = loc; q < allCells.length; q+=total+det) {
		if(allCells[q].colSpan < 2) {
			cells[w] = allCells[q];
			contents[w] = getInnerText(allCells[q]);
			++w;
		}
	}
	var content = "";
	for(var q = 0; q < contents.length; q++) {
		content = contents[q];
		if (content.substr(0,4) == "<!--" || content.length == 0) {content = "";}
		if(content != "") {break;}
	}
	var oldcontents = contents.slice();
	if(content.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) {contents.sort(sortDate);}
	else if(content.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) {contents.sort(sortDate);}
	else if(content.match(/^-?[�$�ۢ�]\d/)) {contents.sort(sortNumeric);}
	else if(content.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) {contents.sort(sortNumeric);}
	else {contents.sort();}
	if(dir == "up") {contents.reverse();}
	for(var q = 1; q < contents.length; q++) {
		for(var w = 0; w < oldcontents.length; w++) {
			if(oldcontents[w] == contents[q]) {
				var n = 1;
				if(det == 1) {n = 2;}
				var oldTr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[w*n];
				var details = oldTr.nextSibling;
				while((details) && (details.nodeType == 3)) {details = details.nextSibling;}
				table.getElementsByTagName("tbody")[0].appendChild(oldTr);
				if(details) {if((details.className == "details") || (details.className == "details show")) {table.getElementsByTagName("tbody")[0].appendChild(details);}}
				var tmp = oldcontents[w];
				oldcontents.splice(w,1);
				oldcontents.push(tmp);
				break;
			}
		}
	}
	var trs = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
	if(det == 0) {
		for(var q = 0; q < trs.length; q++) {
			if(q%2 == 0) {trs[q].className = "odd";}
			else {trs[q].className = "even";}
		}
		trs[trs.length-1].className += " last";
	}
	else {
		for(var q = 0; q < trs.length-1; q++) {
			if(q%4 == 0) {trs[q].className = "odd";}
			else if((q%2 == 0) && (q != 0)) {trs[q].className = "even";}
			if(trs[q+1].className == "details show") {trs[q].className += " expanded";}
		}
		trs[trs.length-2].className += " last";
	}
}
function sortDate(a,b) {
	dt1 = sort_date(a);
	dt2 = sort_date(b);
	if (dt1==dt2) {
		return 0;
	}
	if (dt1<dt2) { 
		return -1;
	}
	return 1;
}
function sortNumeric(a,b) {
	return a-b;
}
function sort_date(date) {	
	dt = "00000000";
	if (date.length == 11) {
		mtstr = date.substr(3,3);
		mtstr = mtstr.toLowerCase();
		switch(mtstr) {
			case "jan": var mt = "01"; break;
			case "feb": var mt = "02"; break;
			case "mar": var mt = "03"; break;
			case "apr": var mt = "04"; break;
			case "may": var mt = "05"; break;
			case "jun": var mt = "06"; break;
			case "jul": var mt = "07"; break;
			case "aug": var mt = "08"; break;
			case "sep": var mt = "09"; break;
			case "oct": var mt = "10"; break;
			case "nov": var mt = "11"; break;
			case "dec": var mt = "12"; break;
		}
		dt = date.substr(7,4)+mt+date.substr(0,2);
		return dt;
	} else if (date.length == 10) {
		dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
		return dt;
	} else if (date.length == 8) {
		yr = date.substr(6,2);
		if (parseInt(yr) < 50) { 
			yr = '20'+yr; 
		} else { 
			yr = '19'+yr; 
		}
		dt = yr+date.substr(0,2)+date.substr(3,2);
		return dt;
	}
	return dt;
}
function getInnerText(el) {
	if (typeof el == "string") return el;
	if (typeof el == "undefined") { return el };
	if (el.innerText) return el.innerText;
	var str = "";
	var cs = el.childNodes;
	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1:
				str += getInnerText(cs[i]);
				break;
			case 3:
				str += cs[i].nodeValue;
				break;
		}
	}
	return str;
}
function videoNavigator() {
	if(document.getElementById("video")) {
			if(document.getElementById("navigator").getElementsByTagName("a")[0]) {
			var a = document.getElementById("navigator").getElementsByTagName("a")[0];
				a.onclick = function() {
					var opts = document.getElementById("navigator").getElementsByTagName("div")[0];
					if((opts.style.display == "none")||(!opts.style.display)) {opts.style.display = "block";}
					else {opts.style.display = "none";}
				}
			}
		if(document.getElementById("navigator").getElementsByTagName("div")[0]) {
			if(document.getElementById("navigator").getElementsByTagName("div")[0].getElementsByTagName("a")) {
		var links = document.getElementById("navigator").getElementsByTagName("div")[0].getElementsByTagName("a");
		for(var q = 0; q < links.length; q++) {

			links[q].onclick = function() {
				var opts = document.getElementById("navigator").getElementsByTagName("div")[0];
				if((opts.style.display == "none")||(!opts.style.display)) {opts.style.display = "block";}
				else {opts.style.display = "none";}
				var current = document.getElementById("current");
				
				current.innerHTML = this.innerHTML;
				var li = opts.getElementsByTagName("li");
				for(var w = 0; w < li.length; w++) {li[w].className = "";}
				this.parentNode.className = "current";
				
				//call video jump
				seekval = this.getAttribute('seekval'); 
                // player.seek( seekval );
                
                
                $('player').seek( seekval );
                
			}
		}
		}
	  }
	}
	else return;
}
function expandTables() {
	var links = getElementsByClassName(document, "a", "trExpand");
	if(links[0]) {
		for(var q = 0; q < links.length; q++) {
			links[q].onclick = function() {
				var img = this.getElementsByTagName("img")[0];
				var tr = this.parentNode.parentNode;
				var details = tr.nextSibling;
				while(details.nodeType == 3) {details = details.nextSibling;}
				if((details.className == "details") || (details.className == "details show")) {
					if(this.className == "trExpand trMax") {
						this.className = "trExpand trMin";
						img.src = img.src.replace(/max/g, "min");
						img.alt = "Collapse";
						details.className = "details show";
						tr.className += " expanded";
					}
					else if(this.className == "trExpand trMin") {
						this.className = "trExpand trMax";
						img.src = img.src.replace(/min/g, "max");
						img.alt = "Expand";
						details.className = "details";
						tr.className = tr.className.replace(/ expanded/g, "");
					}
				}
			}
		}
	}
	else return;
}
function graphHover() {
	var graphs = getElementsByClassName(document, "div", "graph");
	for(var q = 0; q < graphs.length; q++) {
		graphs[q].onmouseover = function() {this.className += " gHover";}
		graphs[q].onmouseout = function() {this.className = this.className.replace(/ gHover/g, "");}
	}
}
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)
}

function runOnBeforeUnload()
  {
      if (g_blnCheckUnload) {
          return "You have made changes but not saved them, your changes will be lost.  Are you sure you want to exit this page?";
      }
  }

  function bypassUnloadCheck()
  { 
      g_blnCheckUnload  = false; 
  }

  function setUnloadCheck()
  {
      g_blnCheckUnload  = true; 
  }

  function registerFormChangeEvents()
  {
      /*for (var f = 0; f < document.forms.length; f++) {
          for (var i = 0; i < document.forms[f].elements.length; i++) {
              var elem = document.forms[f].elements[i];
              var fnOnChangeOld = (elem.onchange) ? elem.onchange : function () {};
              elem.onchange = function () { fnOnChangeOld(); setUnloadCheck() };
          }
      }*/
      if(typeof document.forms['frmreqlist'] != 'undefined') {
      for (var i = 0; i < document.frmreqlist.elements.length; i++) {
              var elem = document.frmreqlist.elements[i];
              var fnOnChangeOld = (elem.onchange) ? elem.onchange : function () {};
              elem.onchange = function () { fnOnChangeOld(); setUnloadCheck() };
       }
      }
      
  }