﻿    
    
    // all general functions
    // Jan 2008 - PJC
    // Copyright P Capozzi - All rights reserved - May not be copied or used without express permission

    /// <reference path="testMap3.htm" />
  
   var savedTarget=null; // The target layer (effectively vidPane)
   var orgCursor=null;   // The original Cursor (mouse) Style so we can restore it
   var dragOK=false;     // True if we're allowed to move the element under mouse
   var dragXoffset=0;    // How much we've moved the element on the horizontal
   var dragYoffset=0;
     
   function moveHandler(e){
      if (e == null){ 
        e = window.event
      } 
      //document.getElementById("show").value = document.getElementById("show").value + " : button : " + e.button ;
//      if(e.button==0){
//        return;
//      }       
      if (e.button<=1 && dragOK ){
         savedTarget.style.left=e.clientX-dragXoffset+'px';
         savedTarget.style.top=e.clientY-dragYoffset+'px';
         return false;
      }
   }

   function cleanup(e) {
      document.onmousemove=null;
      document.onmouseup=null;
      savedTarget.style.cursor=orgCursor;
      dragOK=false;
   }

	
	function dragHandler(e){
      var htype='-moz-grabbing'; //firefox -  cursor type
      if (e == null){ //for ie
         e = window.event; 
         htype='hand';
      } 
      
      var target = e.target != null ? e.target : e.srcElement;  // firefox : ie
      orgCursor=target.style.cursor;
      //document.getElementById("show").value = document.getElementById("show").value + " : " + target.tagName + " : " + target.getAttribute("isDrag");
      if (target.tagName != "IMG" && target.tagName != "DIV"){
          //document.getElementById("show").value = target.tagName
          if (target.getAttribute("isDrag")!=null) {
             // for debugging
             //document.getElementById("show").value = document.getElementById("show").value + " : " + target.getAttribute("isDrag");
            if (target.getAttribute("isDrag")==0){
                 if (target.tagName!="DIV"){
                    while (target.tagName!="DIV"){
                        target = target.parentNode
                    }
                 }
             }
             if (target.getAttribute("isDrag")==1){
                 if (target.tagName!="TABLE"){
                    while (target.tagName!="TABLE"){
                        target = target.parentNode
                    }
                 }
             }
             savedTarget=target;       
             target.style.cursor=htype;
             dragOK=true;
             savedTarget.style.left = target.offsetLeft;
             savedTarget.style.top = target.offsetTop;
             dragXoffset=e.clientX-parseInt(savedTarget.offsetLeft);
             dragYoffset=e.clientY-parseInt(savedTarget.offsetTop);
             document.onmousemove=moveHandler;
             document.onmouseup=cleanup;
             return false;
          }
      }
   }





 
    String.prototype.trim = function() {
	    return this.replace(/^\s+|\s+$/g,"");
    }

    function mouseOver(obin){
            cur = obin.src
            //alert(curPage)
            obin.src = cur.replace("off","on")
    }
    
    function mouseOut(obin){
        if(curPage!="")
        {
            if (obin.id != curPage)
            {
                cur = obin.src
                obin.src = cur.replace("on","off")
            }
        }
        else{
            cur = obin.src
            obin.src = cur.replace("on","off")
        }
       
    }

   function SetCookie(cook,val){  
       cookAr = document.cookie.split(";");
       document.cookie = cook + "=" + val + " ;expires=Fri, 17 Dec 2020 10:00:00 GMT";
   }
   
   function GetCookie(cookieName){
        cookAr = document.cookie.split(";");
        for(y=0;y<cookAr.length;y++){
            curCook = cookAr[y].split("=");
            if(curCook[0].toString().trim() == cookieName.toString().trim()){
                return(curCook[1])
            }
        }
   }
  

   function DeleteCookie(cookieName)
   {
        document.cookie = cookieName + "=;expires=Fri, 17 Dec 2000 10:00:00 GMT";
   }
   
   
   function GetCalendarDate(){
   
        var now    = new Date();
        return now.toDateString();
   
   }
   
   // returns human readable time
   function getClockTime()
    {
       var now    = new Date();
       var hour   = now.getHours();
       var realHour = now.getHours();
       
       var ap = "AM";
       if (hour   > 11) 
       { 
            ap = "PM";             
       }
       if (hour   > 12) 
       { 
            hour = hour - 12;      
       }
       if (hour   == 0)
       { 
            hour = 12;             
       }
        
       thisclass = "setTime" + realHour + thisBrowser;
       if(curPage!="")
        {
            document.getElementById("timeMarker").className = "setTime" + realHour + thisBrowser;
        }
        else
        {
            document.getElementById("timeMarker").className = "hide";
        }
       
       
 
       return hour + " " + ap
 
    }
    
    function GetDayOfWeek()
    {
        var now    = new Date();
        return now.getDay();
    }
    
   // takes is 24 hour numeral and returns human readable 12 time  
   function SetTime(obin){
    
        switch(obin){
        
            case 0:
                depTime = "12 am";
                break;
            case 1:
                depTime = "1 am";
                break;   
            case 2:
                depTime = "2 am";
                break;
            case 3:
                depTime = "3 am";
                break;
            case 4:
                depTime = "4 am";
                break;   
            case 5:
                depTime = "5 am";
                break;
            case 6:
                depTime = "6 am";
                break;
            case 7:
                depTime = "7 am";
                break;   
            case 8:
                depTime = "8 am";
                break;
            case 9:
                depTime = "9 am";
                break;
            case 10:
                depTime = "10 am";
                break;   
            case 11:
                depTime = "11 am";
                break;    
            case 12:
                depTime = "12 pm";
                break;
            case 13:
                depTime = "1 pm";
                break;   
            case 14:
                depTime = "2 pm";
                break;
            case 15:
                depTime = "3 pm";
                break;
            case 16:
                depTime = "4 pm";
                break;   
            case 17:
                depTime = "5 pm";
                break;
            case 18:
                depTime = "6 pm";
                break;
            case 19:
                depTime = "7 pm";
                break;   
            case 20:
                depTime = "8 pm";
                break;
            case 21:
                depTime = "9 pm";
                break;
            case 22:
                depTime = "10 pm";
                break;   
            case 23:
                depTime = "11 pm";
                break;        
        }
        
        thisClass = "setTime" + obin + thisBrowser
        if(curPage!="")
        {
            document.getElementById("timeMarker").className = "setTime" + obin + thisBrowser;
        }
        else
        {
            document.getElementById("timeMarker").className = "hide";
        }
      
        return depTime;
    }
    
    function SetDay()
    {     
        
        curTransitDate.calendarDate = GetCalendarDate();
        curTransitDate.tripDate = curTransitDate.calendarDate;
         
        switch (GetDayOfWeek())
        {
            case 1:
            curTransitDate.dayNumber=1;
            curTransitDate.dayName = "Monday";
            curTransitDate.dayAbrev = "Mon";
            document.getElementById("rMonday").checked = true;

            break;
             
            case 2:
            curTransitDate.dayNumber=2
            curTransitDate.dayName = "Tuesday"
            curTransitDate.dayAbrev = "Tue";
            document.getElementById("rMonday").checked = true;
            break; 
            
            case 3:
            curTransitDate.dayNumber=3
            curTransitDate.dayName = "Wednesday"
            curTransitDate.dayAbrev = "Wed";
            document.getElementById("rWednesday").checked = true;
            break;
             
            case 4:
            curTransitDate.dayNumber=4
            curTransitDate.dayName = "Thursday"
            curTransitDate.dayAbrev = "Thu";
            document.getElementById("rThursday").checked = true;
            break; 
            
            case 5:
            curTransitDate.dayNumber=5
            curTransitDate.dayName = "Friday"
            curTransitDate.dayAbrev = "Fri";
            document.getElementById("rFriday").checked = true;
            break; 
            
            case 6:
            curTransitDate.dayNumber=6
            curTransitDate.dayName = "Saturday"
            curTransitDate.dayAbrev = "Sat";
            document.getElementById("rSaturday").checked = true;
            break; 
            
            case 7:
            curTransitDate.dayNumber=7
            curTransitDate.dayName = "Sunday"
            curTransitDate.dayAbrev = "Sun";
            document.getElementById("rSunday").checked = true;
            break;  
                
        }
        
        document.getElementById("displayDate").innerHTML = "Using : " + curTransitDate.calendarDate;   
        document.getElementById("dayName").innerHTML = curTransitDate.dayAbrev;
    }
    
    function ChangeDay(obin)
    {
        switch (obin.id)
        {
            case "rMonday":
            var newDate = new Date();
            if ((1-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (1-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (1-GetDayOfWeek())+7);
            }
            curTransitDate.dayNumber=1;
            curTransitDate.dayName = "Monday";
            curTransitDate.dayAbrev = "Mon";
            break;
            
            case "rTuesday":
            var newDate = new Date();
            if ((2-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (2-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (2-GetDayOfWeek())+7);
            }
            curTransitDate.dayNumber=2;
            curTransitDate.dayName = "Tuesday";
            curTransitDate.dayAbrev = "Tue";
            break;
            
            case "rWednesday":
            var newDate = new Date();
            if ((3-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (3-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (3-GetDayOfWeek())+7);
            }
            curTransitDate.dayNumber=3;
            curTransitDate.dayName = "Wednesday";
            curTransitDate.dayAbrev = "Wed";
            break;
            
            case "rThursday":
            var newDate = new Date();
            if ((4-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (4-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (4-GetDayOfWeek())+7);
            }
            curTransitDate.dayNumber=4;
            curTransitDate.dayName = "Thursday";
            curTransitDate.dayAbrev = "Thu";
            break;
            
            case "rFriday":
            var newDate = new Date();
            if ((5-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (5-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (5-GetDayOfWeek())+7);
            }
            
            curTransitDate.dayNumber=5;
            curTransitDate.dayName = "Friday";
            curTransitDate.dayAbrev = "Fri";
            break;
            
            case "rSaturday":
            var newDate = new Date();
            if ((6-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (6-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (6-GetDayOfWeek())+7);
            }
            curTransitDate.dayNumber=6;
            curTransitDate.dayName = "Saturday";
            curTransitDate.dayAbrev = "Sat";
            break;
            
            case "rSunday":
            var newDate = new Date();
            if ((7-GetDayOfWeek()) >= 0){
                newDate.setDate(newDate.getDate() + (7-GetDayOfWeek()));
            }
            else{
                newDate.setDate(newDate.getDate() + (7-GetDayOfWeek())+7);
            }
            curTransitDate.dayNumber=7;
            curTransitDate.dayName = "Sunday";
            curTransitDate.dayAbrev = "Sun";
            break;
            
        }
                
        curTransitDate.tripDate = newDate.toDateString();
        curTrip.depDate = newDate.toDateString();
        document.getElementById("displayDate").innerHTML = "Using : " + curTransitDate.tripDate;
        document.getElementById("dayName").innerHTML = curTransitDate.dayAbrev
        ShowTrip(0);
        
    }
    
    
     
    function GetGoogleDate(dateIn){
    
        depDate = new Date(dateIn);

        cmonth  = depDate.getMonth();
        cyear = depDate.getFullYear();
        
        dateString  = depDate.toDateString()
        
        dateAr = dateString.split(" ")
        
        mName = dateAr[1];

        switch (mName){
        
            case "Jan":
            nNum =1;
            break;
            
            case "Feb":
            nNum =2;
            break;
            
            case "Mar":
            nNum =3;
            break;
            
            case "Apr":
            nNum =4;
            break;
            
            case "May":
            nNum =5;
            break;
            
            case "Jun":
            nNum =6;
            break;
            
            case "Jul":
            nNum =7;
            break;
            
            case "Aug":
            nNum =8;
            break;
            
            case "Sep":
            nNum =9;
            break;
            
            case "Oct":
            nNum =10;
            break;
            
            case "Nov":
            nNum =11;
            break;
              
            case "Dec":
            nNum =12;
            break;        
        }

        monthDate = dateAr[2];
        yabrev = dateAr[3];
        yabrev = yabrev.substring(2);
        gdate = nNum + "/" + monthDate + "/" + yabrev
        gdate = encodeURIComponent(gdate);
   
        return gdate;
   
    }  
    
    
    
    // this function return an array with a specific row 
    function GetRow(dataIn, rowNumber){
        rowsAr = dataIn.split(":");
        rowAr = rowsAr[rowNumber].split(";");
        return rowAr;
    }
    
    // this function returns an array of rows
    function GetRows(dataIn){
        return dataIn.split(":");
    
    }
    
    // this function inserts Location Rows
    function InsLocationTableRow(rowAr,nTb){

	    rowSpl = rowAr.split(";");
	    
	    locationAr = rowSpl[1].split(",")
        
        // noOfRpws in table.
        noOfRows = nTb.rows.length;
        
        // no of columns of last row.
        noOfCols = nTb.rows[noOfRows-1].cells.length;
        
        // insert row at last.
        var curow =nTb.insertRow(noOfRows);
        curow.setAttribute('isDrag','0');

        // insert cells in row.
        newCell = curow.insertCell(0);
        newCell.setAttribute('isDrag','0');

        newCell.setAttribute('class','locListTd');

        try{ // IE
            aElement = document.createElement('<input id=r-' + rowSpl[2] + ' lat=' + locationAr[0] + ' lon=' + locationAr[1] + ' type="button" class="locListButton" onclick="SetLocation(this)" />');
        }
        catch(err){ // FF
            aElement = document.createElement('input');
            aElement.setAttribute('type','button');
            aElement.setAttribute('id','r-' + rowSpl[2]);
            aElement.setAttribute('lat',locationAr[0]);
            aElement.setAttribute('lon',locationAr[1]);
            aElement.setAttribute('class','locListButton');
            aElement.setAttribute('onClick','SetLocation(this)');
        }
        
		aElement.value = rowSpl[0];
		
        newCell.appendChild(aElement)

        delCell = curow.insertCell(1);
        delCell.setAttribute('isDrag','0');
        delCell.setAttribute('class','locListTdButton');

        // now the delete 'x'
        try{ // IE
            iElement = document.createElement('<img id=r-' + rowSpl[2] + ' class="locDelButton" src="images/delete.jpg" border="0" onclick="DelLocation(this)" />');
        }
        catch(err){ // FF
            iElement = document.createElement('img');
            iElement.setAttribute('id','r-' + rowSpl[2]); 
            iElement.setAttribute('src','images/delete.jpg');
            iElement.setAttribute('border','0');
            iElement.setAttribute('class','locDelButton'); 
            iElement.setAttribute('onClick','DelLocation(this)');           
            
        }

        delCell.appendChild(iElement)

	}
	
	// this function inserts Location Rows for loc find
    function InsLocationTableRowAll(rowAr,nTb){

	    rowSpl = rowAr.split(";");
	    
	    locationAr = rowSpl[1].split(",")
        
        // noOfRpws in table.
        noOfRows = nTb.rows.length;
        
        // no of columns of last row.
        noOfCols = nTb.rows[noOfRows-1].cells.length;
        
        // insert row at last.
        var curow =nTb.insertRow(noOfRows);
        curow.setAttribute('isDrag','0');

        // insert cells in row.
        newCell = curow.insertCell(0);
        newCell.setAttribute('isDrag','0');

        newCell.setAttribute('class','locListTd');

        try{ // IE
            aElement = document.createElement('<input id=a-' + rowSpl[2] + ' lat=' + locationAr[0] + ' lon=' + locationAr[1] + ' type="button" class="locListButton" onclick="SetLocation(this)" />');
        }
        catch(err){ // FF
            aElement = document.createElement('input');
            aElement.setAttribute('type','button');
            aElement.setAttribute('id','a-' + rowSpl[2]);
            aElement.setAttribute('lat',locationAr[0]);
            aElement.setAttribute('lon',locationAr[1]);
            aElement.setAttribute('class','locListButton');
            aElement.setAttribute('onClick','SetLocation(this)');
        }
        
		aElement.value = rowSpl[0];
		
        newCell.appendChild(aElement)

        delCell = curow.insertCell(1);
        delCell.setAttribute('isDrag','0');
        delCell.setAttribute('class','locListTdButton');

	}

	
	// this function inserts Trip rows
	 function insTripTableRow(rowAr,nTb){

	    rowSpl = rowAr.split(";");
	    
	    tripAr = rowSpl[1].split(",")
        
        // noOfRpws in table.
        noOfRows = nTb.rows.length;
        
        // no of columns of last row.
        noOfCols = nTb.rows[noOfRows-1].cells.length;
        
        // insert row at last.
        var curow =nTb.insertRow(noOfRows);

        // insert cells in row.
        newCell = curow.insertCell(0);
        newCell.setAttribute('isDrag','0');
        //  0           1       2           3           4           5           6           7           8    
        //tri_name, tri_id, tri_use_fk, tri_depLat, tri_depLon, tri_arrLat, tri_arrLon,tri_depTime, tri_notes
        
        try{ // IE
            //aElement = document.createElement('<input tripName=' + rowSpl[0] + ' id=r-' + rowSpl[1] + ' userId=' + rowSpl[2] + ' depLat=' + rowSpl[3] + ' depLon=' + rowSpl[4] + ' arrLat=' + rowSpl[5] + ' arrLon=' + rowSpl[6] + ' depTime=' + rowSpl[7]  + ' type="button" class="locListButton" onclick="SetTrip(this)" />');
            aElement = document.createElement('<input type="button" class="locListButton" onclick="SetTrip(this)" />');
            aElement.setAttribute('tripName',rowSpl[0]);
            aElement.setAttribute('id','r-' + rowSpl[1]);
            aElement.setAttribute('userId',rowSpl[2]);
            aElement.setAttribute('depLat',rowSpl[3]);
            aElement.setAttribute('depLon',rowSpl[4]);
            aElement.setAttribute('arrLat',rowSpl[5]);
            aElement.setAttribute('arrLon',rowSpl[6]);
            aElement.setAttribute('depTime',rowSpl[7]);
        }
        catch(err){ // FF
            aElement = document.createElement('input');
            aElement.setAttribute('type','button');
            aElement.setAttribute('tripName',rowSpl[0]);
            aElement.setAttribute('id','r-' + rowSpl[1]);
            aElement.setAttribute('userId',rowSpl[2]);
            aElement.setAttribute('depLat',rowSpl[3]);
            aElement.setAttribute('depLon',rowSpl[4]);
            aElement.setAttribute('arrLat',rowSpl[5]);
            aElement.setAttribute('arrLon',rowSpl[6]);
            aElement.setAttribute('depTime',rowSpl[7]);
            aElement.setAttribute('class','locListButton');
            aElement.setAttribute('onClick','SetTrip(this)');
            
        }
       
		aElement.value = rowSpl[0];
		
        newCell.appendChild(aElement)

        delCell = curow.insertCell(1);
        delCell.setAttribute('isDrag','0');

        // now the image
        try{ // IE
            iElement = document.createElement('<img id=r-' + rowSpl[1] + ' class="locDelButton" src="images/delete.jpg" border="0" onclick="DelTrip(this)" />');
        }
        catch(err){ // FF
            iElement = document.createElement('img');
            iElement.setAttribute('id','r-' + rowSpl[1]); 
            iElement.setAttribute('src','images/delete.jpg');
            iElement.setAttribute('border','0');
            iElement.setAttribute('class','locDelButton'); 
            iElement.setAttribute('onClick','DelTrip(this)');           
            
        }
        delCell.appendChild(iElement)
 
	}
	
	 // set the correct value in a drop down
    function SetDropDownIndex(dropDown,indexValue){
        selObj = document.getElementById(dropDown);
        for (z = 0;z< selObj.length;z++){
            if (selObj[z].value == indexValue){
                selObj.selectedIndex = z;
                dropIndex = z;
            }
        }
        return selObj[dropIndex].value;
    }
   
    function GetRadioValue(obin){
        var retid = 0;
        for(x=0;x<obin.length;x++){
        
            if(obin[x].checked==true){  
                retid = obin[x].value
            }
        }
        return retid;
    }
    
    function ClearRadioValue(obin){
        for(x=0;x<obin.length;x++){
            obin[x].checked=false  
        }
    }
    
    
    function IsUser(){
        if(curUser.userId!=0){
            return true;
        }
        else{
            return false;
        }
     }

    function SetMapRes(obin){
        
        if (screen.width < 1000){
            obin.className = "map800";
        }
        
        if (screen.width > 1000){
            obin.className = "map900";
        } 
        
        if (screen.width > 1200){
            obin.className = "map1100";
        }
    }
    
    function GoodTrip(){
    
        if (curTrip.depLat == 0 || curTrip.depLon == 0 ){
            alert("Please choose your FROM point.")
            return false;
        }
        
        if (curTrip.arrLat == 0 || curTrip.arrLon == 0){
            alert("Please choose your TO point.")
            return false;
        }
        
        return true;
    
    }
    
     function CycleMessage(){
        
        amessage = document.getElementById(mid).innerText
        if (amessage == undefined){
             amessage = document.getElementById(mid).textContent
        }
        document.getElementById(mid).innerHTML  = "";
        mlen = amessage.length
        if (cssStart==1){
            cssStart = 6
        }
        else{
            cssStart--;
        }
        css = cssStart
        for (x=0;x<amessage.length;x=x+letterInc){
            messText = amessage.substring(x,x+letterInc);
            messText = messText.replace(" ","&nbsp;");
            WriteMessage(messText,mid,"message" + css);
            if (css==6){
                css = 1
            }
            else{
                css++;
            }
        }
    }

    function WriteMessage(message,domid,cssclass){
    
        aElement = document.createElement('span'); 
        aElement.setAttribute('className',cssclass);
        aElement.setAttribute('class',cssclass);
        aElement.innerHTML= message;
        document.getElementById(domid).appendChild(aElement);

    }
    
 
     function MessageAnimation(domElement){
        
        mid = domElement;
        flashing=setInterval("CycleMessage()",flashspeed);

    }
    
    function ClearValue(obin){
    
        obin.value = "";
    
    }