﻿        var map;
        var geocoder;
        var address;
        var place;
        var marker;
        var markeraddr;
        var markercountry;
        var markerlat;
        var markerlng;
        var hostGmt;
        var globGmt;
        var globTimeDetails;
        var beforetzButton='';
        
        function timePicker(cole) {
       
            document.getElementById('dvTimeHighlight').style.marginLeft=((38*cole)+2) + 'px';
            document.getElementById('spMeetingTime').innerHTML=cole + ':00';
            document.getElementById('btnSendInvites').style.display='';
			
			// Remove notice about downloading meeting invite since it's no longer accurate
			document.getElementById('invitelinkinfo').innerHTML='';
        }
        
function makePOSTRequest(url, parameters) {
        document.getElementById('zoneLoadingPanel').style.display='';
        document.getElementById('btnAddTimeZone').style.display='none';
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = setMeeting;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }
   
   function setMeeting() {
   if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            
            var result = http_request.responseText; 
			//alert(result);
            globGmt=result;
            globTimeDetails=markeraddr;
                map.panTo(new GLatLng(markerlat, markerlng), 4);
                var mapinfohtml='';
                //mapinfohtml='<b>Lat, Lng:</b>' + markerlat + "," + markerlng;
                if(markeraddr!='') {
                    mapinfohtml+='<br /><b>Address:</b> ' + markeraddr;
                }
                if(markercountry!='') {
                    mapinfohtml+=' <b>Country:</b> ' + markercountry;
                } 
                
                //mapinfohtml+='<br /><b>GMT Offset:</b> ' + result;
                document.getElementById('mapinfo').innerHTML=mapinfohtml;
                document.getElementById('address').value=markeraddr;
             
                var reg = new RegExp('^[0-9\-\.]*$');
                if (reg.test(result)) {
                    document.getElementById('zoneLoadingPanel').style.display='none';
                    document.getElementById('btnAddTimeZone').style.display='';
					
					// JR: Only show the "No, this isn't the host" button the first time
					if (document.getElementById('autoHostPanel').style.display=='') {
						document.getElementById('btnIncorrectHost').style.display='';
					}
                 }
                 
                 
         } else {
            document.getElementById('zoneLoadingPanel').innerHTML='Error loading timezone. please try later.';
            alert('There was a problem with the request.');
         }
      }
   }
   function timerBar() {
            timePickbar=document.createElement("div");
            timePickbar.id='dvTimeHighlight';
            timePickbar.style.width='30px';
            timePickbar.style.height='30px';
            timePickbar.style.position='static';
            timePickbar.style.background='url("/images/meetingplanner/arrow.jpg")';
            timePickbar.style.marginLeft='2px';
            document.getElementById('gmtlisting').appendChild(timePickbar);
            
   
   }
   function loadPanels() {
                document.getElementById('gmtlisting').innerHTML='';
                timerBar();
                document.getElementById('btnSendInvites').style.display='none';
                document.getElementById('btnAddTimeZone').value='Yes, Add Host Location';
                document.getElementById('btnAddTimeZone').style.display='none';
				document.getElementById('addedNote').style.display='none';
                document.getElementById('lblAddType').innerHTML='Find Host';
                document.getElementById('hrefCalendar').style.display='';
				document.getElementById('address').style.color = 'black';
                document.getElementById('txtConferenceDate').disabled=false;
				document.getElementById('ddlClockType').disabled=false;
                document.getElementById('mapPanel').style.display='none';
                document.getElementById('zoneLoadingPanel').style.display='';
               document.getElementById('invitedetails').style.display='none';
               document.getElementById('gmtlisting').style.display='none';
                document.getElementById('mapLoadingPanel').style.display='none';
				
				document.getElementById('findAddPanel').style.display='none';
			document.getElementById('autoHostPanel').style.display='';
			//document.getElementById('btnIncorrectHost').style.display='';
			//document.getElementById('btnAddTimeZone').style.display='';
   
   }
   function dateNext() {
    if(document.getElementById('btnDateNext').value=='Start Over') {
        document.getElementById('btnDateNext').value='Next »';
        
        loadPanels();
    } else {
		f_tcalHideAll();
	
		var re_date = /^\s*(\d{1,2})\/(\d{1,2})\/(\d{2,4})\s*$/;
		var s_date = document.getElementById('txtConferenceDate').value;
		
		if (!re_date.exec(s_date)) {
			return alert ("Invalid date: '" + s_date + "'.\nAccepted format is mm/dd/yyyy.")
		} else {
			document.getElementById('hrefCalendar').style.display='none';
			document.getElementById('btnDateNext').value='Start Over';
			document.getElementById('txtConferenceDate').disabled=true;
			document.getElementById('ddlClockType').disabled=true;
			getLocation('ProcessLocation.aspx','test=test');
        }
    }
    
    
   }
    function getLocation(url,parameters) {
                document.getElementById('mapPanel').style.display='none';
                document.getElementById('invitedetails').style.display='none';
                document.getElementById('mapLoadingPanel').style.display='';
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = getLocationRcv;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
    
    }
    function getLocationRcv() {

           if (http_request.readyState == 4) {
             if (http_request.status == 200) {
                document.getElementById('mapPanel').style.display='';
               document.getElementById('invitedetails').style.display='none';
                document.getElementById('mapLoadingPanel').style.display='none';
				
				var result = http_request.responseText; 
                
				
				if (result == 'notfound') {
					initializeMap(false);
					
					 // Reset the "Find" section 
					showFind();
					
					// Hide the stuff to add the current location
			        document.getElementById('zoneLoadingPanel').style.display='none';
					document.getElementById('btnAddTimeZone').style.display='none';
					document.getElementById('mapinfo').innerHTML='';
				} else {
					initializeMap(true);
					document.getElementById('address').value=result;
					
					// Set the location on the map
					getLatLngZone(document.getElementById('address').value);
				}
               }
            
            }
    }
        function initializeMap(loadAddress) {
            map = new GMap(document.getElementById("map_canvas"));
          map.setCenter(new GLatLng(39.7413511,-105.1509512), 4);
          map.addControl(new GLargeMapControl);
          //Clickable Map (Remove comment slashes from the line below to enable a clickable map)
          //GEvent.addListener(map, "click", getAddress);
          geocoder = new GClientGeocoder();
          if (loadAddress==true) {
			getAddress(marker,new GLatLng(39.7413511,-105.1509512));
          }
         }
        function getAddress(overlay, latlng) {
          if (latlng != null) {
            address = latlng;
            geocoder.getLocations(latlng, showAddress);
          } 
        }
        function getLatLngZone(addressin) {
            if(addressin!=null && addressin!='' && addressin!='Find a city, state or country') {
                address=addressin;
				
                geocoder.getLatLng(address,showAddressByGeo);
				
				//document.getElementById('btnAddTimeZone').style.display='';
				
            } else {
				alert("Please enter a city, state or country to find.");
			}
        
        }
          
        function showAddress(response) {
            setupControls();
          if (!response || response.Status.code != 200) {
            alert('Please click on land only.  You may also navigate using the arrows in the upper left corner.');
          } else {
            place = response.Placemark[0];
            point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
            marker = new GMarker(point);
            map.addOverlay(marker); 
            markeraddr='';
            concatObject(place);
            var locationData = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea || place.AddressDetails.Country.AdministrativeArea;
            locationData = locationData.Locality || locationData; 
            if(locationData.AddressLine!=null) {
                markeraddr=locationData.AddressLine + ', ';
            } else if(locationData.LocalityName!=null) {
                markeraddr=locationData.LocalityName + ', ';
            } else if(locationData.Thoroughfare.ThoroughfareName!=null) {
                markeraddr=locationData.Thoroughfare.ThoroughfareName + ', ';
            }
            if(place.AddressDetails.Country.AdministrativeArea!=null) {
                markeraddr+=place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
            }
            markercountry=place.AddressDetails.Country.CountryNameCode; 
            markerlng=place.Point.coordinates[0];
            markerlat=place.Point.coordinates[1];
            //alert(markerlng + ',' + markerlat + ' --- date=' + document.getElementById('txtConferenceDate').value);
            makePOSTRequest('ProcessTimezone.aspx','date=' + document.getElementById('txtConferenceDate').value + '&lat=' + place.Point.coordinates[1] + '&lng=' + place.Point.coordinates[0]);
          }

        }
       function concatObject(obj) {
  str='';
  for(prop in obj)
  {
    str+=prop + " value :"+ obj[prop]+"\n";
    
  }
  return(str);
}
        
          function showAddressByGeo(pointin) {
           setupControls();
            if (!pointin) {
                alert(address + " not found");
            } else {
                marker = new GMarker(pointin);
                map.addOverlay(marker); 
                markeraddr=document.getElementById('address').value;
                markercountry=''; 
                markerlng=pointin.lng();
                markerlat=pointin.lat();
				
				//alert('lat=' + pointin.lat() + ' lng=' + pointin.lng());
                makePOSTRequest('ProcessTimezone.aspx','date=' + document.getElementById('txtConferenceDate').value + '&lat=' + pointin.lat() + '&lng=' + pointin.lng());
            }
          }
          function setupControls() {
            if(document.getElementById('txtConferenceDate').value=='') {
                var today_date= new Date()
                var today_month = zeroPad(today_date.getMonth()+1,2);
                var today_day=zeroPad(today_date.getDate(),2);
                document.getElementById('txtConferenceDate').value= + today_date.getFullYear() + '-' + today_month + '-' + today_day;
            }
            map.clearOverlays();
          }
        function zeroPad(num,count)
        {
            var numZeropad = num + '';
            while(numZeropad.length < count) {
                numZeropad = "0" + numZeropad;
            }
            return numZeropad;
        }
		
		
		
		
        function addRow() {
               
			   // If this is adding the host row, set their cookie to remember the host
				if (document.getElementById('lblAddType').innerHTML=='Find Host') {
					SetCookie( 'ACTmeetingPlanner', document.getElementById('address').value, 90, '/', '', '' );
				}
				
			   
				// Reset the "Find" section first
			   	showFind();
				
                if(document.getElementById('gmtlisting').childNodes.length==1) {
                    hostGmt=globGmt;
                } 
				
								
				// Set Panels
                document.getElementById('invitedetails').style.display='';
                document.getElementById('lblAddType').innerHTML='Find Participant';
                document.getElementById('btnAddTimeZone').value='Add Participant Location';
				document.getElementById('btnAddTimeZone').style.display='none';
                document.getElementById('address').value='';
				document.getElementById('mapinfo').innerHTML='';
				document.getElementById('btnSendInvites').style.display='';
				SearchClear('Find a city, state or country','address');
				
                timeDetails=document.createElement("div");
                timeDetails.id='zoneChld' + document.getElementById('gmtlisting').childNodes.length;
                newTime=document.createElement("img");
                //newTime.style.width='688px';
                //newTime.style.cssFloat='left';
                //timeDetails.style.cssFloat='left';
                newTime.src='GmtImage.aspx?gmt=' + globGmt + '&hostgmt=' + hostGmt + '&work=1&text=' + escape(markeraddr) + '&date=' +  document.getElementById('txtConferenceDate').value  + '&clock=' +  document.getElementById('ddlClockType').value;
                
				//if (hostGmt.indexOf('.5')==-1) {
					newTime.useMap='#timerBar';
				//} else {
					//newTime.useMap='#timerBar30min';
				//}
                
				
				//newTime.setAttribute('usemap','#timerBar');
                timeDetails.appendChild(newTime)
                if(document.getElementById('gmtlisting').childNodes.length>1) {
                    timeDetails.innerHTML+='<img src="/images/meetingplanner/x-spot.gif" width="20" onclick="removeRow(\'zoneChld' + document.getElementById('gmtlisting').childNodes.length + '\')" class="removeRow" alt="Remove row." />';
                }
                document.getElementById('gmtlisting').appendChild(timeDetails);
                document.getElementById('gmtlisting').style.display='';
				
				document.getElementById('addedNote').style.display='block';
				changeOpac(100, 'addedNote');
				opacity('addedNote', 100, 0, 3500);
        
        }
        function removeRow(rowId) {
            document.getElementById('gmtlisting').removeChild(document.getElementById(rowId));
        
        }
		
		function showFind() {
            document.getElementById('findAddPanel').style.display='';
			document.getElementById('autoHostPanel').style.display='none';
			document.getElementById('btnIncorrectHost').style.display='none';
			document.getElementById('btnAddTimeZone').style.display='none';
			document.getElementById('address').value='';
			document.getElementById('mapinfo').innerHTML='';
			SearchClear('Find a city, state or country','address');
        }
		
        
        function sendMeetingInvite() {
			if (document.getElementById('spMeetingTime').innerHTML!='(None Selected)') {
				//sendMeetingInviteAjax('ProcessMeetingInvite.aspx','hostgmt=' +  hostGmt + '&meetingtime=' + document.getElementById('txtConferenceDate').value + ' ' +  document.getElementById('spMeetingTime').innerHTML + '&meetingname=' + document.getElementById('txtConferenceDescription').value);
				var invitelink = 'ProcessMeetingInvite.aspx?hostgmt=' +  hostGmt + '&meetingtime=' + escape(document.getElementById('txtConferenceDate').value + ' ' +  document.getElementById('spMeetingTime').innerHTML) + '&meetingname=' + escape(document.getElementById('txtConferenceDescription').value);
				document.getElementById('btnSendInvites').href=invitelink;
				document.getElementById('btnSendInvites').target="_blank";
				document.getElementById('invitelinkinfo').innerHTML='<b>If your download does not start within 10 seconds</b>, <a href="' + invitelink + '">please click here to download the file.</a>';
				return true;
			} else {
				alert("Please click on a time for the meeting.");
				document.getElementById('btnSendInvites').href="#";
				document.getElementById('btnSendInvites').target="_self";
				return false;
			}
        }

		
        function sendMeetingInviteAjax(url,parameters) {
             document.getElementById('btnSendInvites').disabled=true;
                  http_request = false;
                  if (window.XMLHttpRequest) { // Mozilla, Safari,...
                     http_request = new XMLHttpRequest();
                     if (http_request.overrideMimeType) {
         	            // set type accordingly to anticipated content type
                        //http_request.overrideMimeType('text/xml');
                        http_request.overrideMimeType('text/html');
                     }
                  } else if (window.ActiveXObject) { // IE
                     try {
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");
                     } catch (e) {
                        try {
                           http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                     }
                  }
                  if (!http_request) {
                     alert('Cannot create XMLHTTP instance');
                     return false;
                  }
                  
                  http_request.onreadystatechange = invitesRet;
                  http_request.open('POST', url, true);
                  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                  http_request.setRequestHeader("Content-length", parameters.length);
                  http_request.setRequestHeader("Connection", "close");
                  http_request.send(parameters);
        }
           function invitesRet() {
   if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            
            var result = http_request.responseText; 
            document.getElementById('invitelinkinfo').innerHTML='';
            
			// Pop up the result instead of forcing download in an iFrame so it won't be blocked by IE
			popUp(result,250,250);
           //document.getElementById('invitelinkinfo').innerHTML+='<iframe src="' + result + '" style="display:none;" height="0" width="0"></iframe>The link to your meeting invite is: ' +  result + '<br />If your download does not start within 10 seconds, <a href="' + result + '">please click here to download the file.</a>';
		   document.getElementById('invitelinkinfo').innerHTML+='<b>If your download does not start within 10 seconds</b>, <a href="' + result + '">please click here to download the file.</a>';
              document.getElementById('btnSendInvites').disabled=false;   
                 
         } else {
            alert(http_request.responseText);
            alert('There was a problem with the request.');
         }
      }
   }
   

// Clears the search fields on focus.
function SearchClear(defaultText,fieldname)
{
  //var input = $("searchfield");
  //var defaultText = 'Find a city, state or country';
  var input = document.getElementById(fieldname);
  
  if (input.value == defaultText) {
    input.value = "";
	input.style.color = 'black';
	}
	
  else if (input.value == "") {
    input.value = defaultText;
	input.style.color = '#CCCCCC';
	}
}



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 + ")";
} 

// Setting the cookie
function SetCookie( name, value, expires, path, domain, secure )
{
// current time
var today = new Date();
today.setTime( today.getTime() );

if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expiry_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expiry_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}
