// Copyright (c) 2007 Icon Time Systems, Inc.  All rights reserved.

var smenus=4; // Number of sub-menus -- see includes/common.inc and id="smenu#"
var smenuON = 0;
var smenuID = null;
var smenuTO = 500; // time-out value
var summary = 0;

var xmlhttp;
try {
    xmlhttp = new XMLHttpRequest();
} catch (trymicrosoft) {
    try {
        xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (othermicrosoft) {
        try {
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (failed) {
            xmlhttp = false;
            alert('This web site requires the use of a standards-compliant web browser (specifically with XMLHttpRequest support).  Please download a current web browser from mozilla.org, opera.com, apple.com or microsoft.com');
        }
    }
}

function refreshPage() {
    location.reload(true);
}

function iconYear(year) {
    if (year < 57) {
        return (2000 + year);
    } else return (1900 + year);
}

function capsLockOn(evt) {
    var code = evt.keyCode?evt.keyCode:evt.which;
    var shift = evt.shiftKey?evt.shiftKey:((code == 16)?true:false);
    if(((code >= 65 && code <= 90) && !shift)||((code >= 97 && code <= 122) && shift)) {
        document.getElementById('capsLockStat').style.display = 'block';
    } else document.getElementById('capsLockStat').style.display = 'none';
}

function hideSMenu() {
    // kill timer
    if (smenuON) {
        clearTimeout(smenuID);
        smenuON = false;
    }
    for (var i = 0; i<smenus; i++) {
        if (document.getElementById('smenu'+i).style.display != 'none')
            document.getElementById('smenu'+i).style.display = 'none';
    }
    //document.getElementById('punchScope').style.display = 'none';
}

function displaySMenu(id) {

    if (id == '') { // onMouseOut
        // start timer
        if (smenuON) {
            clearTimeout(smenuID);
            smenuON = false;
        }
        smenuID = setTimeout('hideSMenu()', smenuTO);
        smenuON = true;
    } else { // onMouseOver
        for (var i = 0; i<smenus; i++) {
            if (id == 'smenu'+i) {
                document.getElementById(id).style.display = 'block';
            } else if (document.getElementById('smenu'+i).style.display != 'none') {
                document.getElementById('smenu'+i).style.display = 'none';
            }
        }
        // kill timer
        if (smenuON) {
            clearTimeout(smenuID);
            smenuON = false;
        }
    }
}

function tabMenu(id) {
    document.getElementById('tabMenu0').style.display = 'none';
    document.getElementById('tabMenu1').style.display = 'none';
    document.getElementById('tabMenu2').style.display = 'none';
    document.getElementById('tabMenu3').style.display = 'none';
    document.getElementById('tabMenu4').style.display = 'none';
    document.getElementById('tabMenu'+id).style.display = 'block';
    document.getElementById('tabMenu').className = 'tabNav'+id;
}

function displayID(id) {
    var cur = document.getElementById(id).style.display;

    if (cur == 'none' || cur == '') { // always hidden, first (for now)
        document.getElementById(id).style.display = 'block';
    } else {
        document.getElementById(id).style.display = 'none';
        document.getElementById('punchScope').style.display = 'none';
    }
}

function displayClass(tag,name,disp) {
    var x = document.getElementsByTagName(tag);

    for (var i=0; i<x.length; i++) {
        if (x[i].className == name) {
            if (disp == 'toggle')  {
                if (x[i].style.display == '') {
                    if (name == 'punchFlagsOFF') {
                        x[i].style.display = 'block';
                    } else x[i].style.display = 'none';
                }
                if (x[i].style.display == 'none') {
                    disp = 'block';
                } else disp = 'none';
            }
            x[i].style.display = disp;
        }
    }
}

function displaySummary() {
    if (summary) {
        summary = 0; // toggle
        displayClass('div','punchFlagsON','block');
        displayClass('div','punchFlagsOFF','block');
    } else {
        summary = 1;
        displayClass('div','punchFlagsON','none');
        displayClass('div','punchFlagsOFF','none');
    }
}

function displayReport() {
    var v = document.getElementById('reportScope').value;
    var x = document.getElementsByTagName('div');

    if (v == 5) { // e.g. Report scope: Custom
        var disp = 'block';
    } else var disp = 'none';

    for (var i=0; i<x.length; i++) {
        if (x[i].className == 'report')
            x[i].style.display = disp;
    }
}

function displayPunch() {
    var v = document.getElementById('intPunchType').value;

    if (v == 1) { // OUT
        document.getElementById('punchLunchDisp').style.display = 'block';
        document.getElementById('punchSpaceDept').style.display = 'none';
        document.getElementById('punchDeptDisp').style.display = 'none';
    } else {
        document.getElementById('punchLunchDisp').style.display = 'none';
        document.getElementById('punchSpaceDept').style.display = 'block';
        document.getElementById('punchDeptDisp').style.display = 'block';
    }
    if (v == 1 || v == 3 || v == 4 || v >= 16) { // OUT / Non-worked
        document.getElementById('punchAdjDisp').style.display = 'block';
        document.getElementById('punchSpacerDisp').style.display = 'block';
    } else {
        document.getElementById('punchAdjDisp').style.display = 'none';
        document.getElementById('punchSpacerDisp').style.display = 'none';
    }
    if (v == 3 || v == 4 || v >= 16) { // Non-worked
        document.getElementById('punchTimeDisp').style.display = 'none';
    } else document.getElementById('punchTimeDisp').style.display = 'block';
}

function displayCustomDate() {

  var v = document.getElementById('timeFrame').value;

  if(v == 7) {
    document.getElementById('FromDateDisp').style.display = 'block';
    document.getElementById('ToDateDisp').style.display = 'block';
  } else {
    document.getElementById('FromDateDisp').style.display = 'none';
    document.getElementById('ToDateDisp').style.display = 'none';
  }

}



function displayScope(disp,type) {
    var REPORT_TIMECARD = 2; // see includes/common.inc
    var scope = document.getElementById('punchScope');
    if (disp) {
        if (scope.style.display == 'none' || scope.style.display == '') {
            if (type == REPORT_TIMECARD) {
                document.getElementById('punchScopeEmployee').style.display = 'block';
            } else document.getElementById('punchScopeEmployee').style.display = 'none';
            /*
            if (disp > 1) {
                scope.onmouseover = new Function('displaySMenu(\'smenu0\');');
                scope.onmouseout = new Function('displaySMenu(\'\');');
                if (type == REPORT_TIMECARD) {
                    scope.style.top = '67px';
                } else scope.style.top = '50px';
                scope.style.left = '320px';
            } else {
                scope.onmouseover = null;
                scope.onmouseout = null;
                scope.style.top = '180px';
                scope.style.left = '115px';
            }
            */
            scope.style.display = 'block';
        } else {
            scope.style.display = 'none';
        }
    } else scope.style.display = 'none';
}

function displaySortBy() {
    var sort = document.getElementById('alrtHomeSort');
    if (sort.style.display == 'none' || sort.style.display == '') {
        sort.style.display = 'block';
    } else sort.style.display = 'none';
}

function toggleChecked(trig,rows,targ) {
    var ctrl = document.getElementById(trig).checked;
    var rows = document.getElementById(rows).value;
    for (var i=0; i<rows; i++) document.getElementById(targ+i).checked = ctrl;
}

function addDepartment(id) {
     var selThis = document.getElementById('department'+id);
     var row = selThis.parentNode.parentNode; // <div class="row"><div class="divSel"><select class="selThis">
     var rowParent = row.parentNode;
     if (selThis.options[selThis.selectedIndex].value == '') selThis.selectedIndex = 0;
     if (selThis.selectedIndex != 0 && selThis.options[0].text == 'Add Department') {
         var nid = ((1 * id) + 1);
         var divRow = document.createElement('div');
         divRow.className = 'deptsRow';

         var divSel = document.createElement('div');
         divSel.className = 'deptsKey';
         var sel = document.createElement('select');
         sel.setAttribute('id','department'+nid);
         sel.setAttribute('name','department'+nid);
         sel.onchange = function() { return addDepartment(document.getElementById('deptsRows').value); };
         var opt;
         for (var i=0; i<selThis.options.length; i++) {
             opt = document.createElement('option');
             opt.value = selThis.options[i].value;
             //opt.text = selThis.options[i].text; // breaks in non-standard IE
             opt.appendChild(document.createTextNode(selThis.options[i].text));
             sel.appendChild(opt);
         }
         sel.selectedIndex = 0;
         divSel.appendChild(sel);

         var inputOld = document.createElement('input');
         inputOld.setAttribute('type','hidden');
         inputOld.setAttribute('id','deptold'+nid);
         inputOld.setAttribute('name','deptold'+nid);
         inputOld.value = '0';
         divSel.appendChild(inputOld);

         var inputAssign = document.createElement('input');
         inputAssign.setAttribute('type','hidden');
         inputAssign.setAttribute('id','assign'+nid);
         inputAssign.setAttribute('name','assign'+nid);
         inputAssign.value = '0';
         divSel.appendChild(inputAssign);

         divRow.appendChild(divSel);

         var divWage = document.createElement('div');
         divWage.className = 'deptsVal';
         var inputWage = document.createElement('input');
         if (document.getElementById('wage'+id).value == '') {
             inputWage.setAttribute('type','hidden');
             inputWage.value = '';
         } else {
             inputWage.setAttribute('type','text');
             inputWage.className = 'deptsWage';
             inputWage.value = '0.00';
         }
         inputWage.setAttribute('id','wage'+nid);
         inputWage.setAttribute('name','wage'+nid);
         divWage.appendChild(inputWage);
         divRow.appendChild(divWage);

         var divOrder = document.createElement('div');
         divOrder.className = 'deptsMet';
         var spanOrder = document.createElement('span');
         var inputOrder = document.createElement('input');
         inputOrder.setAttribute('type','text');
         inputOrder.className = 'deptsOrder';
         inputOrder.setAttribute('id','order'+nid);
         inputOrder.setAttribute('name','order'+nid);
         var orderid = document.getElementById('order'+id).value;
         orderid = ((1 * orderid) + 1);
         inputOrder.value = orderid;
         spanOrder.appendChild(inputOrder);
         divOrder.appendChild(spanOrder);
         divRow.appendChild(divOrder);

         rowParent.appendChild(divRow);
         selThis.options[0].text = 'Remove Department';

         document.getElementById('deptsRows').value = nid;
     } else if (selThis.selectedIndex == 0 && selThis.options[0].text == 'Remove Department') {
         row.style.display = 'none';
     }
}

function createCookie(name, value, days)
{
    if (days) {
        var date = new Date();
        // Set-Cookie: sortBy=0; expires=Fri, 31-Dec-2100 23:59:59 GMT; path=request["REQUEST_URI"]; domain=request["REMOTE_HOST"]
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    } else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
    var ca = document.cookie.split(';');
    var nameEQ = name + "=";
    for (var i=0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name)
{
    createCookie(name, "", -1);
}


function popup(mylink, windowname)
{
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
   href=mylink;
else
   href=mylink.href;
window.open(href, windowname, 'width=560,height=550,scrollbars=yes');
return false;
}

function selectAll(selectBox,selectAll) {
        // have we been passed an ID
        if (typeof selectBox == "string") {
                selectBox = document.getElementById(selectBox);
        }
        // is the select box a multiple select box?
        if (selectBox.type == "select-multiple") {
                for (var i = 0; i < selectBox.options.length; i++) {
                        selectBox.options[i].selected = selectAll;
                }
        }
}

function processLocation()
{
  if(navigator && navigator.geolocation) {
    var po = new Object();
    po.enableHighAccuracy = true;
    po.timeout = 10000;
    po.maximumAge = 30000;
    navigator.geolocation.getCurrentPosition(processMyLocation, processMyLocationError, po);
  }
}

function processMyLocation(position) {
  myPosition = "&lat=" + position.coords.latitude + "&long=" + position.coords.longitude + "&alt=" + position.coords.altitude + "&acc=" + position.coords.accuracy + "&head=" + position.coords.heading + "&speed=" + position.coords.speed;
  myLink = document.getElementById('punchIn');
  if(myLink != null) myLink.href = myLink.href + myPosition;
  myLink = document.getElementById('punchOut');
  if(myLink != null) myLink.href = myLink.href + myPosition;
  myLink = document.getElementById('deptChange');
  if(myLink != null) myLink.href = myLink.href + myPosition;
  myLink = document.getElementById('automatic');
  if(myLink != null) myLink.href = myLink.href + myPosition;
}

function processMyLocationError(error)
{
    // This is here because the Google Toolbar crashes when getCurrentPosition has null in for the error callback.
}

