// JavaScript Document
// Javasacript for the AJAX driven oTasks

// Here's the AJAX part of this web app.  Enter the new Task data into the DB Without a reload
// var url = "http://apps.ohnward.com/ajax/otasks/ajaxnewtask.php?param="; // The server-side script

<!--  AJAX Clock ---------------------------------------------
// please keep these lines on when you copy the source
// made by: Nicolas - http://www.javascript-page.com

var clockID = 0;
var counter = 0;
var multiplier = 3; //Gallons saved per second

function UpdateClock() {
	counter++;
   if(clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }
   
   	var tDate = new Date();
   	var h=tDate.getHours();
	var m=tDate.getMinutes();
	var s=tDate.getSeconds();
	if (document.hiddenvalues.inMinute.value>"") {
		if (m<parseInt(document.hiddenvalues.inMinute.value)) { h=h-1; }
		h=h-parseInt(document.hiddenvalues.inHour.value);
		if (s<parseInt(document.hiddenvalues.inSecond.value)) { s=s+60; m=m-1; }
		s=s-parseInt(document.hiddenvalues.inSecond.value);
		if (m<parseInt(document.hiddenvalues.inMinute.value)) { m=m+60; }
		m=m-parseInt(document.hiddenvalues.inMinute.value);
	}
	// add a zero in front of numbers<10
	m=checkTime(m);
	s=checkTime(s);
	if (document.hiddenvalues.inMinute.value>"") 
	{
   		elem("timeClock").innerHTML = "Current Time 'IN': <span style='color:#00ff00; font-size: 18px;'>" + h + ":" + m + ":"  + s + "</span>";
	} else {
		elem("timeClock").innerHTML = "&nbsp;";
	}
	//Now re-initiate the values for the running clock
	var h=tDate.getHours();
	var m=tDate.getMinutes();
	var s=tDate.getSeconds();
	// add a zero in front of numbers<10
	m=checkTime(m);
	s=checkTime(s);
	if (h>11) { t="PM"; } else { t="AM"; } //find out if it's AM or PM
	if (h>12) { h=h-12; } //set it to not read as military time
	
	var total = counter*multiplier;
		elem("CurrentTime").innerHTML = "<span class='watercounter'>" + total + " Gallons Saved</span>";
   //document.theClock.theTime.value = "" 
     //                              + tDate.getHours() + ":" 
       //                            + tDate.getMinutes() + ":" 
         //                          + tDate.getSeconds();
   
   clockID = setTimeout("UpdateClock()", 1000);
}
function StartClock() {
   clockID = setTimeout("UpdateClock()", 500);
}

function KillClock() {
   if(clockID) {
      clearTimeout(clockID);
      clockID  = 0;
   }
}

function checkTime(i)
{
	if (i<10) 
  	{
		i="0" + i;
	}
  return i;
}

// END AJAX Clock ------------------------------------------- -->

function checksource(formValue) {
	if (formValue=="New")
	{
		changeObjectVisibility(formValue, "visible");
	} else {
		changeObjectVisibility(formValue, "hidden");
	}
}

function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }

  return xmlhttp;
}

var http = getHTTPObject(); // We create the HTTP Object

function elem(id)
{ // compat element grabber
        if(document.all) { return document.all(id); }
        else if (document.getElementById) { return document.getElementById(id); 
}
        return new Array(); // hides angry errors in buggy situations
}

function switchDiv(div_id)
{	
	var style_sheet = getStyleObject(div_id);
	if (style_sheet)
	{
   		hideAll();
		//shiftOpacity(div_id, 1000);
   		changeObjectVisibility(div_id, "visible");
		if (div_id == "Reports") //if we're switching to "Report"
		{ 
			//then clear it out before showing it
		}
	}
	else 
	{
   		alert("sorry, this only works in browsers that do Dynamic HTML");
	}
}
	
// function hideAll()
//  hides a bunch of divs
//
function hideAll()
{	
   	changeObjectVisibility("PTO","hidden");
	changeObjectVisibility("Reports","hidden");
	changeObjectVisibility("Notes","hidden");
	changeObjectVisibility("newItem","hidden");
	//elem("NoteHistory").innerHTML = ""
   
  // changeObjectVisibility("assignee","hidden");
}

function areyousure(id, username)
{
	var answer = confirm ("Are you sure you want to DELETE " + username + " from the TimeClock system?");
	if (answer) { window.location="http://apps.ohnward.com/timeclock/admin.php?id="+id; }
}

// function getStyleObject(string) -> returns style object
//  given a string containing the id of an object
//  the function returns the stylesheet of that object
//  or false if it can't find a stylesheet.  Handles
//  cross-browser compatibility issues.
//
function getStyleObject(objectId) {
  // checkW3C DOM, then MSIE 4, then NN 4.
  //
  if(document.getElementById && document.getElementById(objectId)) {
        return document.getElementById(objectId).style;
   }
   else if (document.all && document.all(objectId)) {  
        return document.all(objectId).style;
   } 
   else if (document.layers && document.layers[objectId]) { 
        return document.layers[objectId];
   } else {
        return false;
   }
}
	
	function changeObjectVisibility(objectId, newVisibility) {
		// first get a reference to the cross-browser style object 
		// and make sure the object exists
		if (newVisibility=="visible") { 
			var styleObject = getStyleObject(objectId);
			if(styleObject) {
				styleObject.visibility = "visible";
				//opacity(objectId, 0, 100, 10);
				return true;
			} else {
				// we couldn't find the object, so we can't change its visibility
				return false;
			}
		}
		if (newVisibility=="hidden") { 
			var styleObject = getStyleObject(objectId);
			if(styleObject) {
				//opacity(objectId, 100, 0, 1000);
				styleObject.visibility = "hidden";
				return true;
			} else {
				// we couldn't find the object, so we can't change its visibility
				return false;
			}
		}
	}

//*****************************************************************************
// Do not remove this notice.
//
// Copyright 2001 by Mike Hall.
// See http://www.brainjar.com for terms of use.
//*****************************************************************************

// Determine browser and version.

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 0;

function dragStart(event, id) {

  var el;
  var x, y;

  // If an element id was given, find it. Otherwise use the element being
  // clicked on.

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // If this is a text node, use its parent element.

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Update element's z-index.

  dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  var x, y;

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move drag element by the same amount the cursor has moved.

  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {

  // Stop capturing mousemove and mouseup events.

  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}
//*****************************************************************************
// End of the Drag Window Function Definitions
//
// Copyright 2001 by Mike Hall.
// See http://www.brainjar.com for terms of use.
//*****************************************************************************

//*****************************************************************************
// Start of the Fade Functions
function opacity(id, opacStart, opacEnd, millisec) { 
    //speed for each frame 
    var speed = Math.round(millisec / 100); 
    var timer = 0; 

    //determine the direction for the blending, if start and end are the same nothing happens 
    if(opacStart > opacEnd) { 
        for(i = opacStart; i >= opacEnd; i--) { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } else if(opacStart < opacEnd) { 
        for(i = opacStart; i <= opacEnd; i++) 
            { 
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
            timer++; 
        } 
    } 
} 

//change the opacity for different browsers 
function changeOpac(opacity, id) { 
    var object = document.getElementById(id).style; 
    object.opacity = (opacity / 100); 
    object.MozOpacity = (opacity / 100); 
    object.KhtmlOpacity = (opacity / 100); 
    object.filter = "alpha(opacity=" + opacity + ")"; 
}

function shiftOpacity(id, millisec) { 
    //if an element is invisible, make it visible, else make it ivisible 
    if(document.getElementById(id).style.opacity == 0) { 
        opacity(id, 0, 100, millisec); 
    } else { 
        opacity(id, 100, 0, millisec); 
    } 
}

// End of the Drag Window Function Definitions
//*****************************************************************************
