//---------------------------------------------Shared Scripts---------------------
//-----------------------------------------------------------------------
//cross-browser modal dialog ability
//To use this, you must follow the paradigm
/*
function doSomething()
{
    openModal( "yourchildpage.htm", 10, 10, callBack, false );
}
function callBack( retVal )
{
    alert( retVal );
}

//WITHIN CHILD PAGE:
if( !window.opener )
{ 
    var opener = window.dialogArguments; //ie needs this because it doesn't set the opener property if you use showModalDialog
}
opener.setReturnValue( 'test' );
window.close();
*/
//the above should produce a popup that says "test" when you close the child page.

var g_win;
var g_postAction;
var g_returnValue;

//url to open, width, height, function to call after close
function openModal( targeturl, width, height, postAction, scroll )
{
    if( !scroll )
    {
        scrollyesno = "no";
    }
    else
    {
        scrollyesno = "yes";
    }
    
    
    if( window.showModalDialog )
    {
        //retVal = window.showModalDialog(targeturl , self, "status:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;scroll:"+ scrollyesno +";location:no;titlebar:no;menubar:no;resizable:no;");
        var features = "status:no;scroll:"+ scrollyesno +";location:no;titlebar:no;menubar:no;resizable:no;";
        retVal = openModalDialogCentered(targeturl, width, height, features );
        
        if( postAction )
        {
            if( g_returnValue )
                postAction( g_returnValue );
            else
                postAction( retVal );
        }
        g_returnValue = null;
    }
    else
    {
        var features = "titlebar=no,menubar=no,location=no,resizable=no,status=no,scrollbars="+scrollyesno+",modal=yes,dependent=yes,z-lock=yes";        
        g_win = openWindowCentered(targeturl, width, height, features );        
        g_postAction = postAction;        
        check();
    }
}

function check()
{    
    try
    {
        if( g_win.closed )
        {    
            if( g_postAction )
            {
               g_postAction(g_returnValue);           
            }        
            g_win = null;
            g_postAction = null;
            g_returnValue = null;
        }
        else
        {        
            setTimeout( check, 150 );
        }
    }
    catch(e)
    {
        alert(e);
    }
}

function setReturnValue( retVal )
{
    g_returnValue = retVal;
}

function openDialog( targeturl, width, height, scroll, sizeable )
{
    openDialogWithToolbar(targeturl,width,height,scroll,sizeable,false);
}

function openDialogWithToolbar( targeturl, width, height, scroll, sizeable, toolbar )
{
    toolyesno = "no";
    
    if( !scroll )
    {
        scrollyesno = "no";
    }
    else
    {
        scrollyesno = "yes";
    }
    if( !sizeable )
    {
        sizeyesno = "no";
    }
    else
    {
        sizeyesno = "yes";
    }
    if( toolbar && isIE())
    {
        toolyesno = "yes";
    }
    var features = "titlebar=no,toolbar="+toolyesno+",menubar=no,location=no,resizable="+sizeyesno+",status=no,scrollbars="+scrollyesno;
    
    return openWindowCentered(targeturl, width, height, features );
}

function openModalDialogCentered(targeturl,iWidth,iHeight, features)
{    
	var x = 0;
	var y = 0;
	if( window.screenX )
	{
	    x = (window.outerWidth - iWidth) / 2;
	    y = (window.outerHeight - iHeight) / 2;
	
	    y += window.screenY;
	    x += window.screenX;	
	}
	else
	{
	    x = (document.body.offsetWidth - iWidth) / 2;
	    y = (document.body.offsetHeight - iHeight) / 2;
	
	    y += window.screenTop;
	    x += window.screenLeft;
	}
	features += ";dialogLeft:" + x + ";";
	features += "dialogTop:" + y + ";";
	features += "dialogWidth:" + iWidth + "px;dialogHeight:" + iHeight+"px;";

	return window.showModalDialog(targeturl , self, features);
}

function openWindowCentered(targeturl,iWidth,iHeight, features)
{
    var x = 0;
	var y = 0;
	if( window.screenX )
	{
	    x = (window.outerWidth - iWidth) / 2;
	    y = (window.outerHeight - iHeight) / 2;
	
	    y += window.screenY;
	    x += window.screenX;	
	}
	else
	{
	    x = (document.body.offsetWidth - iWidth) / 2;
	    y = (document.body.offsetHeight - iHeight) / 2;
	
	    y += window.screenTop;
	    x += window.screenLeft;
	}
	features += ",left=" + x + ",screenX=" + x;
	features += ",top=" + y + ",screenY=" + y;
	features += ",width=" + iWidth + ",height=" + iHeight;

	return window.open(targeturl, '_blank', features, "true"); 
}

function transfer( targeturl )
{
    window.location = targeturl;
}



function getDGMainForm()
{
    if( document.forms[0] )
    {
        return document.forms[0];
    }
    if( document.MainForm )
    {
        return document.MainForm;
    }
    if( document.Form1 )
    {
        return document.Form1;
    }
    if( theForm ) //some .NET generated pages contain a definition for this
    {
        return theForm;
    }
}

function initTZ()
{
    var tzo;    
    var _tz = document.getElementById('_TZ');
    if( _tz )
    {
        try
        {
            var dt = new Date();
            tzo=dt.getTimezoneOffset()*(-1);
            if( tzo )
            {
                _tz.value = tzo;
                //alert('got: ' + tzo);
            }
            else
            {
                _tz.value = 0;
                //alert('nogot');
            }
        }
        catch(e)
        {
            alert(e);
        }
    }           
}


//-----------------------------------------------------------------------
//Scrollable Data list ability:

//globals
var g_aGrids = new Array(0);

//functions
function tokenize( val, tok )
{
	var ret= val.substring(0, val.indexOf("_*_") );
	val = val.substring( ret.length+3, val.length  );
	return ret;
}
function strip( val, tok )
{
	var toss= val.substring(0, val.indexOf("_*_") );
	val = val.substring( toss.length+3, val.length  );
	return val;
}

function ClosingError( sRedirect, sErr )
{
	window.alert( sErr );
	window.location = sRedirect;
}

function addDataGrid( hcontainer, hcontent, hbar, hbarcontent, vcontainer, vcontent, vbar, vbarcontent )
{
    g_aGrids.push(hcontainer);
    g_aGrids.push(hcontent);
    g_aGrids.push(hbar);
    g_aGrids.push(hbarcontent);	
    g_aGrids.push(vcontainer);
    g_aGrids.push(vcontent);
    g_aGrids.push(vbar);
    g_aGrids.push(vbarcontent);
}

function initDataGrids()
{
	initDataGridsWork(); //go ahead and do the work it right away
	//to try to ensure that the init function wasn't called and completed before the browser had truly
	//finished loading the page and all the datagrids were present,
	//set it up to be called again
	setTimeout( 'initDataGridsWork()', 4000 ); //call again in 4 seconds
}

function initDataGridsWork()
{
	var i =0;
	var numGrids = g_aGrids.length/8;
	
	for( i=0; i < numGrids; ++i )
	{
		var dex = i * 8;
		var hcontainerWidth = document.getElementById(g_aGrids[dex]).offsetWidth*10;
		var hcontainerHeight = document.getElementById(g_aGrids[dex]).offsetHeight;
		var hcontentWidth = document.getElementById(g_aGrids[dex+1]).offsetWidth*10;
		var hbarContainer = document.getElementById(g_aGrids[dex+2]);
		var hbarContainerWidth = hbarContainer.offsetWidth*10; //(hbarContainer.scrollWidth-hbarContainer.offsetWidth)+16;
		var hbarContent = document.getElementById(g_aGrids[dex+3]);
		
		var vcontainerHeight = document.getElementById(g_aGrids[dex+4]).offsetHeight*10;
		var vcontentHeight = document.getElementById(g_aGrids[dex+5]).offsetHeight*10;
		var vbarContainer = document.getElementById(g_aGrids[dex+6]);
		var vbarContainerHeight = vbarContainer.offsetHeight*10; // (vbarContainer.scrollHeight-vbarContainer.offsetHeight)+16;
		var vbarContent = document.getElementById(g_aGrids[dex+7]);
		
		var hbarcontentwidth = 0;
		var vbarcontentheight = 0;
		

		try
		{	
			if( hcontainerWidth > 0 )		
			{
			    hbarcontentwidth = ((hbarContainerWidth*hcontentWidth)/hcontainerWidth)/10;
			    hbarContent.style.width = (hbarcontentwidth+1)+100 + "px";
			}
			if( vcontainerHeight > 0 )
			{
			    vbarcontentheight = ((vcontainerHeight*vcontentHeight)/vbarContainerHeight)/10;
			    vbarContent.style.height = (vbarcontentheight+1)+100 + "px";			
			}			
			
            var sList = new String(g_aGrids[dex]);
			sList = sList.replace("hcontainer","");
			var selected = getSelectedListRow(sList);
			if( selected )
			{			    			
			    //alert(selected.offsetParent);
			    //want to make sure selected row is scrolled info view...
			    //TODO
			}			
		}
		catch(ex)
		{
		    //alert( ex );
			//alert( vbarContent.id );
			//alert( ex + ' ' + hbarContent.id + '.style.width=' + hbarcontentwidth + ', ' + vbarContent.id + '.style.height=' + vbarcontentheight);
			//alert( 'hcontainerWidth: ' + hcontainerWidth + '\nhcontentWidth: ' + hcontentWidth + '\nhbarContainer: ' + hbarContainer + '\nhbarContainerWidth: ' + hbarContainerWidth + '\nhbarContent: ' + hbarContent  );
			//alert( 'vcontainerHeight: ' + vcontainerHeight + '\nvcontentHeight: ' + vcontentHeight + '\nvbarContainer: ' + vbarContainer + '\nvbarContainerHeight: ' + vbarContainerHeight + '\nvbarContent: ' + vbarContent  );
		}
	}
}

function getSelectedListRow(sList)
{
    hiddenField = document.getElementById(sList + "_SelectedRow");

    if(hiddenField.value != "")
    {
        var selected = document.getElementById(hiddenField.value);
        if( selected )
        {
            return selected;	    
        }
    }
}

function isIE()
{
    if( navigator.appName == "Microsoft Internet Explorer" )
    {
        return true;
    }
    else
    {
        return false;
    }
}


function vscroll(y, source, target, container) 
{

	var tg = document.getElementById(target);	
	var cnt = document.getElementById(container);
	var src = source;
	
	var cntHeight = cnt.offsetHeight*10;
	var tgHeight = tg.offsetHeight*10;
	var srcHeight = (src.scrollHeight-src.offsetHeight)*10;
    y = y *10;
    
	var adj = -(y/srcHeight) * (tgHeight - cntHeight);
	adj = adj/10;
	
	if( adj <= 0 )
	{
		tg.style.top = (adj) + "px";
	}
	else
	    tg.style.top = "0px";
}
function hscroll(x, source, target, container) 
{

	var tg = document.getElementById(target);	
	var cnt = document.getElementById(container);
	var src = source;
	
	var cntWidth = cnt.offsetWidth*10;
	var tgWidth = tg.offsetWidth*10;
	var srcWidth = (src.scrollWidth-src.offsetWidth)*10;	
	x=x*10;
	var adj = -(x/srcWidth) * (tgWidth - cntWidth);
	adj = adj/10;
	
	if( adj <= 0 )
	{
		tg.style.left = (adj)+"px"; 
	}
	else
	{
	    tg.style.left = "0px";
	}
	//alert( 'adj=: ' + adj + '\nformula: -(' + x + '/'+srcWidth+') * ('+tgWidth+' - '+cntWidth+')' );
}

//other data grid functions:
var colorprev = "white";
function SelectRow(rowid, tableid)
{
	hiddenField = document.getElementById(tableid + "_SelectedRow");

	if(hiddenField.value != "")
	{
	    var prevselected = document.getElementById(hiddenField.value);
		if( prevselected )
		{
		     if( prevselected.getAttribute('name') )
			{
			    prevselected.style.backgroundColor = prevselected.getAttribute('name');
			}			    
		}
    }
    
	
    var row = document.getElementById(rowid);
    if( row )
    {
	    if( row.style.backgroundColor != "#C7CEDE" )
	        row.name = row.style.backgroundColor;
    	    
	    row.style.backgroundColor = "#C7CEDE";	    
	    hiddenField.value = row.id;
	}
	if( prevselected )
	    return prevselected.id; //return previously selected row
	else
	    return row.id;
}

function SelectRowAndSubmit(rowid, tableid)
{   
    var frm = getDGMainForm();
	frm.CallListClick.value = SelectRow( rowid, tableid ); //calllist click should be the selected row, BEFORE changing it, SelectRow() changes it, but returns the original value
	frm.RefreshUI.value = 'true';
	frm.submit();
}

function cellHoverOut(td)
{
//    td.style.borderRight="";
//    td.style.borderTop="";
//    td.style.borderLeft="";
//    td.style.borderBottom="";

    td.style.borderRight="#C7CEDE thin solid";
    td.style.borderTop="#C7CEDE thin solid";
    td.style.borderLeft="#C7CEDE thin solid";
    td.style.borderBottom="#C7CEDE thin solid";

}

function cellHoverOver(td)
{
    try
    {
        var bAllowEdit = allowEdit();
        var bAllowRelease = allowRelease();   
        var which = td.id;
        //alert( "which: " + which + "\n" + "allowedit: " + bAllowEdit + "\n" + "allowrelease: " + bAllowRelease ); 
        if( bAllowEdit || which == 'back' || which == 'ticket' )
        {
            td.style.borderRight="#0000FF thin solid";
            td.style.borderTop="#0000FF thin solid";
            td.style.borderLeft="#0000FF thin solid";
            td.style.borderBottom="#0000FF thin solid";
        }
        else if( bAllowRelease && which == 'markpending' )
        {
            td.style.borderRight="#0000FF thin solid";
            td.style.borderTop="#0000FF thin solid";
            td.style.borderLeft="#0000FF thin solid";
            td.style.borderBottom="#0000FF thin solid";
        }
    }
    catch(ex)
    {
        alert(ex);
    }
}

function dgDoPostBack(link, refresh)
{
    var frm = getDGMainForm();    
    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(link, '', true, '', '', false, false));
    var input = document.createElement("input");
    input.setAttribute("type", "hidden");
    input.setAttribute("name", "dgpostbacklink");
    input.setAttribute("value", link);
    frm.appendChild(input);
    if( refresh )
    {
        frm.RefreshUI.value = 'true';    
    }
	frm.submit();
}

function dgSubmit( link, refresh)
{
    var frm = getDGMainForm();        
    var input = document.createElement("input");
    input.setAttribute("type", "hidden");
    input.setAttribute("name", "dgpostbacklink");
    input.setAttribute("value", link);
    frm.appendChild(input);
    if( refresh )
    {
        frm.RefreshUI.value = 'true';    
    }
	frm.submit();
}

function allowEdit()
{
   var bAllowEdit = true;
    try
    {
        bAllowEdit = !(document.getElementById('bViewMode').value == "true");
    }   
    catch(ex){} 
    return bAllowEdit;
}

function allowRelease()
{
   var bAllowRelease = false;
    try
    {
        bAllowRelease = (document.getElementById('bAllowRelease').value == "true");  
    }   
    catch(ex){} 
    return bAllowRelease;
}


function cellClick(which)
{
    try
    {        
        var bAllowEdit = allowEdit();
        var bAllowRelease = allowRelease();
        //alert( "which: " + which + "\n" + "allowedit: " + bAllowEdit + "\n" + "allowrelease: " + bAllowRelease ); 
        if( which == "back" || which == "ticket" )
        {
            //do nothing, let it go through
        }
        else if( which == "markpending" )
        {
            if( !bAllowEdit && !bAllowRelease )
            {
                alert("This call is on hold and can't be released.");
                return false;
            }
        }
        else
        {
            if( !bAllowEdit )
            {
                alert("This call is on hold and can't be modified.");
                return false;
            }
        }     
        
        switch( which )
        {
            //Clear Call stuff
            case "reschedule":
                IncompleteCall(document.getElementById('ddm').value);
                break;
            case "onhold":
                PutCallOnHold();
                break;
            case "schedule":
                ScheduleCall();
                break;
            case "oktoinvoice":
                if( !PreOKBCheck() )
                {
                    return false;
                }
                else
                {                   
                    dgDoPostBack("btnOK2Invoice", false);
                }
                break;
            case "markpending":                                
                dgDoPostBack("btnPending", false);
                break;
            case "dispatch":
                dgDoPostBack("btnDispatch", false);
                break;
            case "arrive":
                dgDoPostBack("btnArrive", false);
                break;
            case "depart":
                dgDoPostBack("btnDepart", false);
                break;
            case "ticket":
                dgDoPostBack("btnTicket", false);
                break;
            case "back":
                dgDoPostBack("btnCancel", false);
                break;
            //MainPage stuff
            case "logout":
                dgSubmit("btnLogOut", false);
                break;
            case "reset":
                if( !confirm('This will cause all your remote data for all calls to be permanently lost.  It cannot be recovered.\nAre you sure you want to do this?') )
                {
                    return false;
                }                
                dgSubmit("btnReset", false);                
                break;
            case "synch":
                dgSubmit("btnSynch", false);
                break;
            case "tools":
                dgSubmit("btnTools", false);                
                break;
            default:
                alert( "Unknown toolbar button " + which + " clicked." );
                return false;
                break;
        }
    }
    catch(ex)
    {
        alert(ex);
    }
}

function openPopupWindow( targeturl, width, height )
{    
    var features = "titlebar=no,menubar=no,location=no,resizable=yes,status=no,scrollbars=yes";
    return openWindowCentered(targeturl, width, height, features );
}

function renderPopupWindow( content )
{
    var win = openPopupWindow( "", 300, 100 );
    if( win )
    { 
        win.document.write( content );
    }
}

function getSelectedRow(lst)
{
  value = new String( eval( "getDGMainForm()." + lst.id + "_SelectedRow.value" ) );
  return value.substring(value.lastIndexOf("_", value.length - 1)+1, value.length);  
}

function parseDate( sIn )
{
	var dt = new Date();
	dt.setTime(Date.parse(sIn));
	return dt;
}

function formatDate( dtIn )
{
	var s = "";
	s += (dtIn.getMonth()+1);
	s += "/";
	s += dtIn.getDate();
	s += "/";
	s += dtIn.getFullYear();
	return s;
}

function formatTime( dtIn )
{
	var s = "";
	s += dtIn.getHours();
	s += ":";
	s += dtIn.getMinutes();
	return s;
}

function formatDateTime( dtIn )
{
	var s = "";
	s += (dtIn.getMonth()+1);
	s += "/";
	s += dtIn.getDate();
	s += "/";
	s += dtIn.getFullYear();
	s += " ";
	s += dtIn.getHours();
	s += ":";
	s += dtIn.getMinutes();
	return s;
}

function getDateFromDateTimePicker2(ctl)
{
    try
    {
        var dt = document.getElementById(ctl+'_' + ctl + 'Calandar').value;
        var hr = document.getElementById(ctl+'_' + ctl + 'Hour').value;
        var mn = document.getElementById(ctl+'_' + ctl + 'Minute').value;
        var AMPM = document.getElementById(ctl+'_' + ctl + 'AMPM').value;
        
        if( hr > 12 )
            hr = 12;
            
        if( mn > 59 )
            mn = 59;
        
        var sDateString = dt + " " + hr + ":" + mn + " " + AMPM;
        
        return parseDate(sDateString);
    }
    catch(e)
    {
        alert(e);
    }
}

function zeroPad( s )
{
    if( s.toString().length == 1)
        s = "0" + s;
    return s;
}

function setDateTimePicker2Date(ctl, date)
{
    try
    {
        var dt = document.getElementById(ctl+'_' + ctl + 'Calandar');
        var hr = document.getElementById(ctl+'_' + ctl + 'Hour');
        var mn = document.getElementById(ctl+'_' + ctl + 'Minute');
        var AMPM = document.getElementById(ctl+'_' + ctl + 'AMPM');
        
        dt.value = formatDate(date);        
        mn.value = date.getMinutes();
        mn.value = zeroPad(mn.value);
        
        var hourofday = date.getHours();
        if( hourofday > 11 )
        {
            AMPM.value = "PM";
            hourofday -= 12;
            if( hourofday == 0 )
            {
                hourofday = 12;
            }
        }
        else
        {
            if( hourofday == 0 )
            {
                hourofday = 12;
            }
            AMPM.value = "AM";        
        }
        
        hr.value = hourofday;
        //hr.value = zeroPad(hr.value);
    }
    catch(e)
    {
        alert(e);
    }
}

//---------------------------------------------Server Only Scripts---------------------

function equipmentLookupClicked()
{
	openModal('EquipmentLookup.aspx', 800, 550, afterEQLookup, false );
}
function afterEQLookup(retVal)
{	    
    if( retVal )
        document.getElementById('txtEquipmentNumber').value = retVal;
}

function customerLookupClicked()
{
	openModal('CustomerLookup.aspx', 800, 550, afterCustLookup, false );
}
function afterCustLookup(retVal)
{	    
    if( retVal )
        document.getElementById('txtCustomerNumber').value = retVal;
}

function createTimeCard()
{
    openModal("TimecardCreate.aspx", 400, 250, afterCreateTimeCard, false );
}

function afterCreateTimeCard( retVal )
{
    getDGMainForm().submit();
}

function editTimeCard(tcID)
{
    if( !tcID || tcID == "" || tcID == "undefined" )
    {	    
	    tcID = getSelectedRow( document.getElementById('lstTimecards') );
	}
	
    if(tcID == "" || tcID == "undefined")
    {
	    alert("Please select a time card to edit.");
	    return;
    }
	
	//openModal("TimecardEdit.aspx?TCID=" + tcID, 810, 650, afterEditTimeCard, true );	
	transfer( "TimecardEdit.aspx?TCID=" + tcID );
}

//function afterEditTimeCard(retVal)
//{
//	getDGMainForm().submit();
//}

function afterTCSummary( retVal )
{
    var frm = getDGMainForm();
	frm.RefreshUI.value = retVal;
	frm.submit();
}

function viewCallDetail(callID)
{
    if( !callID || callID == "" || callID == "undefined" )
    {
	    //value = new String(getDGMainForm().lstCalls_SelectedRow.value);
	    callID = getSelectedRow( document.getElementById('lstCalls') ); //= value.substring(value.lastIndexOf("_", value.length - 1)+1, value.length);
	}

    openModal("CallDetail.aspx?CallID=" + callID, 800, 710, afterviewCallDetail, true );		
	//transfer( "CallDetail.aspx?CallID=" + callID );
}

function afterviewCallDetail(retVal)
{
	getDGMainForm().submit();
}

function editTimeEntry()
{
    //get current day
    var dtCurrent = document.getElementById('_dtCurrent').value;
    
    //get timecard id
    var iTCID = document.getElementById('_iTCID').value;
    
    //get rowid
    var selectedrow = new String(document.getElementById('lstTimeList_SelectedRow').value);    
	var sTCEntryID = document.getElementById( selectedrow + '_id' ).value; //selectedrow.substring(selectedrow.lastIndexOf("_", selectedrow.length - 1)+1, selectedrow.length);

    var start = document.getElementById( selectedrow + '_start' ).innerHTML;
    var end = document.getElementById( selectedrow + '_end' ).innerHTML;

    openModal("TimecardEditDetail.aspx?TCID=" + iTCID + "&ENTRYID=" + sTCEntryID + "&DATE=" + dtCurrent +"&START=" + start +"&END="+end , 400, 350, afterEditTimeEntry, false );
}

function addTimeEntry()
{
    //get current day
    var dtCurrent = document.getElementById('_dtCurrent').value;
    
    //get timecard id
    var iTCID = document.getElementById('_iTCID').value;
    
    openModal("TimecardEditDetail.aspx?TCID=" + iTCID + "&ENTRYID=0-0-TC&DATE=" + dtCurrent, 400, 350, afterEditTimeEntry, false );
}

function afterEditTimeEntry(retVal)
{
    var frm = getDGMainForm();
    frm.RefreshUI.value = 'true';
	frm.submit();	
}

//---------------------------------------------Client Only Scripts---------------------
function onDepartureTimeChanged(ctl)
{
    //force back to our formatting specs
    var dtDeparture = getDateFromDateTimePicker2("txtDepartureDate");
    setDateTimePicker2Date("txtDepartureDate", dtDeparture);
    return true;
}

function onArrivalTimeChanged(ctl)
{
    try
    {
        var retval = false;
        
        var dtDispatched = getDateFromDateTimePicker2("txtDispatchDate");
        var dtArrival = getDateFromDateTimePicker2("txtArrivalDate");
        var dtDeparture = getDateFromDateTimePicker2("txtDepartureDate");
        
        //force back to our formatting specs
        setDateTimePicker2Date("txtArrivalDate", dtArrival);
        
        if( dtArrival.getDay() != dtDeparture.getDay() )
        {
            dtDeparture = dtArrival;
            setDateTimePicker2Date("txtDepartureDate", dtDeparture );
            retval = onDepartureTimeChanged();
        }
        else if( dtArrival > dtDeparture )
        {
            dtDeparture = dtArrival;
            setDateTimePicker2Date("txtDepartureDate", dtDeparture );
            retval = onDepartureTimeChanged();
        }
    }
    catch(e)
    {
        alert( e );
        retval = false;
    }    
    return retval;          
}

function onDispatchTimeChanged(ctl)
{    
    try
    {
        var retval = false;
        
//        //which control sent change event
//        var id="txtDispatchDate_txtDispatchDateCalandar"; //can't send this ptr from this control
//        //because it's a 3rd party control and I had to hook up the event after render was completed.
//	    if( ctl )
//	    {
//		    if( ctl.id )
//			    id = ctl.id;
//	    }
        
        var dtDispatched = getDateFromDateTimePicker2("txtDispatchDate");
        var dtArrival = getDateFromDateTimePicker2("txtArrivalDate");
        var dtDeparture = getDateFromDateTimePicker2("txtDepartureDate");
        
        //force back to our formatting specs
        setDateTimePicker2Date("txtDispatchDate", dtDispatched);
        
        if( dtDispatched.getDay() != dtArrival.getDay() )
        {
            dtArrival = dtDispatched;
            setDateTimePicker2Date("txtArrivalDate", dtArrival );
            retval = onArrivalTimeChanged();
        }
        else if( dtDispatched > dtArrival )
        {
            dtArrival = dtDispatched;
            setDateTimePicker2Date("txtArrivalDate", dtArrival );
            retval = onArrivalTimeChanged();
        }
        
        if( dtDispatched.getDay() != dtDeparture.getDay() )
        {
            dtDeparture = dtDispatched;
            setDateTimePicker2Date("txtDepartureDate", dtDeparture );
            retval = onDepartureTimeChanged();
        }
        else if( dtDispatched > dtDeparture )
        {
            dtDeparture = dtDispatched;
            setDateTimePicker2Date("txtDepartureDate", dtDeparture );
            retval = onDepartureTimeChanged();
        }
    }
    catch(e)
    {
        alert( e );
        retval = false;
    }    
    return retval;
}

function toggleTravel( chk )
{
    document.getElementById('txtTravel').disabled=!chk.checked;
}
function RemovePOLinkedMaterials(iID)
{
	//alert( 'Test2' );
	var frm = getDGMainForm();
	frm.RefreshUI.value = "RemoveMaterialLinked_"+iID;		
	frm.submit();
	//frm.RefreshUI.value = "";
}


//general page functions
function LaunchApp()
{
	var iTop
	var iWidth
	iTop = screen.height/2-300
	iWidth = screen.width/2-400
	//window.moveBy(-3000,-3000);
	//window.resizeTo(0,0);	
	
	var features = "titlebar=no;menubar=no,location=no,resizable=yes,status=yes,menubar=no,scrollbars=yes";
	retVal = openWindowCentered("Login.aspx", 822, 600, features );
	if (retVal.opener)
	{
	    try
	    {
		    retVal.opener.top.opener=top;
		    if( isIE() )
		    {
	            window.opener='X';
	        }
	        
            window.open('', '_self');
            window.open('', '_parent');
            window.close();
            
            //attempts at making this work in firefox 2.  No luck.
            //retVal.opener.close();
		    //netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
            //window.open('','_parent','');
            //window.close();            
        }
        catch(e)
        {
        //alert(e);
        }
	}
}

function TabClicked(tab)
{
	initDataGrids();
	
	if(tab == "")
	{
		tab = getDGMainForm().SelectedTab.value;
	}
	
	if(tab == "LaborTab")
	{
		document.getElementById('imgLaborTab').src = "img/LaborTab.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTabClosed.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTabClosed.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTabClosed.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTabClosed.jpg";		
		document.getElementById('imgMiscTab').src = "img/MiscTabClosed.jpg";
		
		document.getElementById('divMisc').style.display = "none";		
		document.getElementById('divLabor').style.display = "block";
		document.getElementById('divMaterial').style.display = "none";
		document.getElementById('divMeter').style.display = "none";
		document.getElementById('divProblems').style.display = "none";
		document.getElementById('divRemarks').style.display = "none";
	}
	else if(tab == "MaterialTab")
	{
		document.getElementById('imgLaborTab').src = "img/LaborTabClosed.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTab.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTabClosed.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTabClosed.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTabClosed.jpg";		
		document.getElementById('imgMiscTab').src = "img/MiscTabClosed.jpg";
		
		document.getElementById('divMisc').style.display = "none";		
		document.getElementById('divLabor').style.display = "none";
		document.getElementById('divMaterial').style.display = "block";
		document.getElementById('divMeter').style.display = "none";
		document.getElementById('divProblems').style.display = "none";
		document.getElementById('divRemarks').style.display = "none";
	}
	else if(tab == "MeterTab")
	{
		document.getElementById('imgLaborTab').src = "img/LaborTabClosed.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTabClosed.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTab.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTabClosed.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTabClosed.jpg";		
		document.getElementById('imgMiscTab').src = "img/MiscTabClosed.jpg";
		
		document.getElementById('divMisc').style.display = "none";		
		document.getElementById('divLabor').style.display = "none";
		document.getElementById('divMaterial').style.display = "none";
		document.getElementById('divMeter').style.display = "block";
		document.getElementById('divProblems').style.display = "none";
		document.getElementById('divRemarks').style.display = "none";
	}
	else if(tab == "ProblemsTab")
	{
		document.getElementById('imgLaborTab').src = "img/LaborTabClosed.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTabClosed.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTabClosed.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTab.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTabClosed.jpg";		
		document.getElementById('imgMiscTab').src = "img/MiscTabClosed.jpg";
		
		document.getElementById('divMisc').style.display = "none";		
		document.getElementById('divLabor').style.display = "none";
		document.getElementById('divMaterial').style.display = "none";
		document.getElementById('divMeter').style.display = "none";
		document.getElementById('divProblems').style.display = "block";
		document.getElementById('divRemarks').style.display = "none";
	}
	else if(tab == "RemarksTab")
	{
		document.getElementById('imgLaborTab').src = "img/LaborTabClosed.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTabClosed.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTabClosed.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTabClosed.jpg";
		document.getElementById('imgMiscTab').src = "img/MiscTabClosed.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTab.jpg";
		
		document.getElementById('divLabor').style.display = "none";
		document.getElementById('divMaterial').style.display = "none";
		document.getElementById('divMeter').style.display = "none";
		document.getElementById('divProblems').style.display = "none";
		document.getElementById('divMisc').style.display = "none";
		document.getElementById('divRemarks').style.display = "block";
	}
	else if(tab == "MiscTab")
	{
		document.getElementById('imgLaborTab').src = "img/LaborTabClosed.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTabClosed.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTabClosed.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTabClosed.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTabClosed.jpg";
		document.getElementById('imgMiscTab').src = "img/MiscTab.jpg";
		
		document.getElementById('divLabor').style.display = "none";
		document.getElementById('divMaterial').style.display = "none";
		document.getElementById('divMeter').style.display = "none";
		document.getElementById('divProblems').style.display = "none";
		document.getElementById('divRemarks').style.display = "none";
		document.getElementById('divMisc').style.display = "block";
	}
	else
	{
		document.getElementById('imgLaborTab').src = "img/LaborTab.jpg";
		document.getElementById('imgMaterialTab').src = "img/MaterialTabClosed.jpg";
		document.getElementById('imgMeterTab').src = "img/MeterTabClosed.jpg";
		document.getElementById('imgProblemsTab').src = "img/ProblemsTabClosed.jpg";
		document.getElementById('imgRemarksTab').src = "img/RemarksTabClosed.jpg";		
		document.getElementById('imgMiscTab').src = "img/MiscTabClosed.jpg";
		
		document.getElementById('divMisc').style.display = "none";		
		document.getElementById('divLabor').style.display = "block";
		document.getElementById('divMaterial').style.display = "none";
		document.getElementById('divMeter').style.display = "none";
		document.getElementById('divProblems').style.display = "none";
		document.getElementById('divRemarks').style.display = "none";
	}
	getDGMainForm().SelectedTab.value = tab;
}

function CancelCall()
{
	callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	if( callID != "" )
	{	
		openModal("CancelCall.aspx?CallID=" + callID , 450, 250, afterCancel, false );
	}
}
function afterCancel( retVal )
{
    var frm = getDGMainForm();
	frm.RefreshUI.value = retVal;		
	frm.submit();
}
function ScheduleCall()
{
	callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	if( callID != "" )
	{	
		openModal("ScheduleCall.aspx?CallID=" + callID , 450, 250, afterSchedule, false );
	}
}
function afterSchedule( retVal )
{
    var frm = getDGMainForm();
	frm.RefreshUI.value = "true";	
	frm.submit();
}

function AddLabor()
{	
	callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	if( callID != "" )
	{	
		openModal( "AddLabor.aspx?CallID=" + callID + "&CallDate=" + document.getElementById('lblCallDate').innerHTML, 800, 600, afterAddLabor, false );
	}
}

function afterAddLabor(returnValue)
{
    var frm = getDGMainForm();
	frm.RefreshUI.value = "true";
	frm.submit();
}

function EditLabor(laborID, callID)
{
	if(laborID == "")
	{
		laborID = getSelectedRow( document.getElementById('lstLabor') );
	}
	if(callID == "")
	{		
		callID = getSelectedRow( document.getElementById('lstEquipment') );
	}

	openModal("AddLabor.aspx?CallID=" + callID + "&LaborID=" + laborID + "&CallDate=" + document.getElementById('lblCallDate').innerHTML, 800, 500, afterEditLabor, false );
}

function afterEditLabor( retVal )
{
    var frm = getDGMainForm();
    frm.RefreshUI.value = "true";
	frm.submit();
}

function ClearCall()
{
    var frm = getDGMainForm();
	frm.ClearClicked.value = "true";
	frm.submit();
}

function IncompleteCall(ddm)
{
	openModal( "IncompleteCall.aspx?DDM=" + ddm, 550, 470, afterIncomplete, false );
}

function afterIncomplete( retVal )
{
    if(retVal)
	{
	    var frm = getDGMainForm();
		frm.IncompleteCallField.value = retVal;
		frm.submit();
	}
}

function CompleteCall()
{
	callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	openModal("CompleteCall.aspx?WorkNumber=" + callID, 490, 225, afterComplete, false );

}

function afterComplete(retVal)
{
	if(retVal)
	{
	    var frm = getDGMainForm();
		frm.CompleteCode.value = retVal;
		frm.submit();
	}
}

function PutCallOnHold()
{
	openModal("PutCallOnHold.aspx", 490, 225, afterHold, false );
}

function afterHold(retVal)
{
	if(retVal)
	{
	    var frm = getDGMainForm();
		frm.HoldCallCode.value = retVal;
		frm.submit();
	}
}

function EditEquipment()
{
	callID = getSelectedRow( document.getElementById('lstEquipment') ); 
	
	if(callID == "" || callID == "undefined")
	{
		alert("Please select a piece of equipment to edit.");
		return;
	}
	
	openModal("AddEquipment.aspx?CallID=" + callID, 650, 275, afterEditEquipment, false );
	

}

function afterEditEquipment(retVal)
{
    var frm = getDGMainForm();
	if(retVal)
	{
		frm.IncompleteCallField.value = retVal;
	}
	
	frm.RefreshUI.value = "true";
	frm.submit();
}
//-----------"Add unknown"
function oldAddMaterials()
{
	callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	if( callID != "" )
	{	
		openModal("AddMaterials.aspx?CallID=" + callID , 525, 300, afterAddMaterials, false );
	}
}
function afterAddMaterials(retVal)
{
    var frm = getDGMainForm();
	frm.RefreshUI.value = "true";		
	frm.submit();
}
//-----------

function AddMaterials()
{
    var callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	if( callID != "" )
	{	
	    var qty = document.getElementById('txtQuantity').value;	
        var sPart = document.getElementById('txtItem').value;
        
        if( qty.length < 0 )
        {
            qty = 1; //or could tell them they need to supply it...this is probably ok
        }
        else
        {
            if( qty <= 0 )
            {
                alert( "Please specify a positive quantity." );
                return;
            }
        }
        
        if( sPart.length > 0 )
        {
            //encodeURIComponent() will not encode: ~!*()'
	        openModal("MaterialEdit.aspx?CID="+callID+"&TYPE=A&QT="+qty+"&IT=" + encodeURIComponent(sPart), 650, 275, afterEditMaterial, false );
	    }
	    else
	    {
	        alert( "Please specify an item number to add." );
	    }
	}
	else
	{
	    alert("Please select a call.");
	}
}

function EditMaterial()
{
    var callID = getSelectedRow( document.getElementById('lstEquipment') );
	
	if( callID != "" )
	{

        iRTCallInventoryID = getSelectedRow( document.getElementById('lstMaterials') ); 
    	
	    if(iRTCallInventoryID == "" || iRTCallInventoryID == "undefined")
	    {
		    alert("Please select a material to edit.");
		    return;
	    }
    	
	    openModal("MaterialEdit.aspx?CID="+callID+"&TYPE=E&ID=" + iRTCallInventoryID, 650, 275, afterEditMaterial, false );
    }
    else
    {
        alert("Please select a call.");
    }
}

function afterEditMaterial(retVal)
{
	if(retVal)
	{	
        var frm = getDGMainForm();	
	    frm.RefreshUI.value = "true";	
	    frm.submit();
	}
}


function ResolveConflict(callID)
{
	openModal("ConflictPage.aspx?CallID=" + callID, 1025, 600, null, false );
}
function ViewConflictCall()
{
	callID = getSelectedRow( document.getElementById('lstCalls') ); 
	ResolveConflict(callID);
	window.close();
}
function SelectConflictCall()
{
	openModal("SelectConflictCall.aspx", 1025, 425, afterSelectConflictCall, false );
}

function afterSelectConflictCall(retVal)
{
	if(retVal)
	{
		ResolveConflict(retVal);
		//getDGMainForm().ReloadUI.value = "true";
		//getDGMainForm().submit();
	}
	else
	{
	    var frm = getDGMainForm();
		frm.ReloadUI.value = "true";
		frm.submit();
	}
}

function RemoveRepair()
{
    var frm = getDGMainForm();
	frm.RemoveRepair.value = "true";
	frm.submit();
}
function RemoveProblem()
{
    var frm = getDGMainForm();
	frm.RemoveProblem.value = "true";
	frm.submit();
}

//function RemoveMaterial()
//{
//	getDGMainForm().RemoveMaterial.value = "true";
//	getDGMainForm().submit();	
//}
function RemoveInterruption()
{
	document.getElementById('_bRemoveInterruption').value = "true";
	getDGMainForm().submit();
}
function ShowCallHistory()
{
	callID =getSelectedRow( document.getElementById('lstEquipment') ); 
	
	openDialog( "CallHistory.aspx?CallID=" + callID, 800, 535, false, false );
}

function PreOKBCheck()
{
	if(document.getElementById('bCallsNotUsed').value != 'False')
	{
		return confirm('You have some materials that are not marked as used.  If you continue all materials on this call will be changed to used status.\nAre you sure you want to do this?');
	}
	else
	{
		return true;
	}
}

function findItemC() //client version
{
	openModal('FindItem.aspx', 800, 550, afterFindItemC, false );
}
function afterFindItemC(retVal)
{
    if( retVal )
        document.getElementById('txtItem').value = retVal;
}

