var MapIconMaker = {};
var map = null;
var gMarker = null;
var iconOptions = {};
iconOptions.primaryColor = "#0033FF";
iconOptions.strokeColor = "#000000";
iconOptions.label = "AA";
iconOptions.labelColor = "#FFFFFF";
iconOptions.addStar = false;
iconOptions.starPrimaryColor = "#FFFF00";
iconOptions.starStrokeColor = "#0000FF";

function initialize()
{
    if (GBrowserIsCompatible())
    {

    }
    else
    {
        alert("Your browser is not able to use the Google Map API.");
    }
    
 
}

function drawPoint(lat, lng, lAddress)
{

	var top =  document.viewport.getScrollOffsets().top;

	$('mlMap').style.top = top + "px";
	$('mlMap').style.display = '';
    
    if (map == null)
    {
        map = new GMap2(document.getElementById("ml_map_canvas"));
        map.addControl(new GLargeMapControl3D());
        map.addControl(new GOverviewMapControl());
    }
    else
        ; // already have it
        
    point = new GLatLng(lat, lng);
    map.setCenter(point, 15);
    
    if (gMarker != null)
        map.removeOverlay(gMarker);
    else
        ; // not set yet
		
	try{
		
		var iconAA = MapIconMaker.createLabeledMarkerIcon(iconOptions);
	
	} catch(e){}		
        
    gMarker = new GMarker(point, {icon: iconAA, title: lAddress});
    
    map.addOverlay(gMarker);
    
    if (!lAddress.match(/.*Array$/)){
        document.getElementById('ml_map_label').innerHTML = lAddress;    
	}
		
	 GEvent.addListener(gMarker, "click", function() {
          gMarker.openInfoWindowHtml("<br /><center><b>" + lAddress + "</b></center>");
        });		
}

function displayAll()
{
    try
    {
       
        var toDisplay = null;
  
        var headerText = null;
  
        var add = null;
        
        if ($("arrowText").innerHTML.match("Expand All"))
        {
            
           
            toDisplay = "";
            headerText = "Collapse All";
            $("arrowText").removeClassName("allCollapsed");
            $("arrowText").addClassName("allExpanded");
            add = true;
            
        }
        else
        {
            $("arrowText").removeClassName("allExpanded");
            $("arrowText").addClassName("allCollapsed");
            toDisplay = "none";
            headerText = "Expand All";
      
            add = false;
        }
     
        $("arrowText").innerHTML = headerText;
        
        var allRows = 520;
        
        if (maxRows)
            allRows = maxRows;
        else
            allRows = 520;
        

        
        for ( var i = 0; i < allRows; i++)
        {
            
            try
            {
                var id = "mlDetail" + i;
                var dispElement = document.getElementById(id);
                dispElement.style.display = toDisplay;
                
     
                
                if (add)
                {
                    $('mlTable' + i).addClassName("tblExpanded");
                    $('mlSummary' + i).addClassName("fBold");
                  //  $('updtdRow' + i).style.display = "";
                  //  $('attrRow' + i).style.display = "";
                }
                else
                {
                    $('mlTable' + i).removeClassName("tblExpanded");
                    $('mlSummary' + i).removeClassName("fBold");
                 //   $('updtdRow' + i).style.display = "none";
                  //  $('attrRow' + i).style.display = "none";
                }
            }
            catch (ignored)
            {
                break;
            }
        }
        
    }
    catch (ex)
    {
        alert(ex);
    }
}

function displayDiv(id)
{
    // alert(id);
    var tr = document.getElementById('mlDetail' + id);

    if (tr.style.display == '')
    {
        tr.style.display = 'none';

        $('mlTable' + id).removeClassName("tblExpanded");
        $('mlSummary' + id).removeClassName("fBold");
        
       // $('updtdRow' + id).style.display = "none";
     //   $('attrRow' + id).style.display = "none";
    }
    else
    {
        tr.style.display = '';

        $('mlTable' + id).addClassName("tblExpanded");
        $('mlSummary' + id).addClassName("fBold");
      //  $('updtdRow' + id).style.display = "";
       // $('attrRow' + id).style.display = "";
    }
}


function showZones()
{
    var top =  document.viewport.getScrollOffsets().top;

    $('mlZonesMap').style.top = top + "px";
    $('mlZonesMap').style.display = '';

}

function showDistricts()
{
    var top =  document.viewport.getScrollOffsets().top;

    $('mlDistrictsMap').style.top = top + "px";
    $('mlDistrictsMap').style.display = '';

}

function showMtgTypeInfo()
{
    var top =  document.viewport.getScrollOffsets().top;
 
    $('meetingTypeInfo').style.top = top + "px";
    $('meetingTypeInfo').style.display = '';

}

function clearValues(){
	$$('select').each(function(o){ o.value = "0"});
	$('MeetingText').value  = "";
	return true;
	
}

function clearValuesKeepText(){
	$$('select').each(function(o){ o.value = "0"});
	return true;
	
}
	
function changeDay(){
	
	var selected = $('MeetingDowId').value;
	clearValues();
	$('msgDisplay').update('Changing Meeting Day...');		
	$('msgDisplay').show();
	$('MeetingDowId').value = selected;
	document.forms["MeetingAddForm"].submit();
	
	return true;
}

function changeCity(){

	var selected = $('MeetingCityId').value;
	clearValues();
	$('msgDisplay').update('Changing Meeting City...');		
	$('msgDisplay').show();
	$('MeetingCityId').value = selected;
	document.forms["MeetingAddForm"].submit();
	
	return true;
}
	
function changeLanguage(){
	
	var selected = $('MeetingLanguageId').value;
	clearValues();
	$('msgDisplay').update('Changing Meeting Language...');		
	$('msgDisplay').show();
	$('MeetingLanguageId').value = selected;
	document.forms["MeetingAddForm"].submit();
	
	return true;
}	

function changeMeetingType(){
	
	$('MeetingGroupId').value = "0";
	//clearValues();
	$('msgDisplay').update('Changing Meeting Type...<br/><br/>for selected Day of week');		
	$('msgDisplay').show();
	//$('MeetingMeetingTypeId').value = selected;
	document.forms["MeetingAddForm"].submit();
	
	return true;
}		

function changeZone(){
	
	var selected = $('MeetingZoneId').value;
	clearValues();
	$('msgDisplay').update('Changing Meeting Zone...');		
	$('msgDisplay').show();
	$('MeetingZoneId').value = selected;
	document.forms["MeetingAddForm"].submit();
	
	return true;
}	

function changeDistrict(){
	
	var selected = $('MeetingDistrictId').value;
	clearValues();
	$('msgDisplay').update('Changing Meeting District...');		
	$('msgDisplay').show();
	$('MeetingDistrictId').value = selected;
	document.forms["MeetingAddForm"].submit();
	
	return true;
}		
	
function getGroup(){
	
	var selected = $('MeetingGroupId').value;
	clearValues();
	$('msgDisplay').update('Changing Meeting/Group...');		
	$('msgDisplay').show();
	$('MeetingGroupId').value = selected;
	document.forms["MeetingAddForm"].submit();
	return true;
}

function doSearch(){
	
	clearValuesKeepText();
	$('msgDisplay').update('Please wait...<br/><br/>While your Search is performed.');		
	$('msgDisplay').show();
	document.forms["MeetingAddForm"].submit();
	return true;
}

function printMtg(mID){
	
window.open('/webapp/app/webroot/index.php/meetings/print_view/' + mID,'MeetingDetails' + mID,'scrollbars=yes,width=850,height=800');
}	
		
	
/**
 * Creates a labeled marker icon based on the specified options in the 
 *     {@link MarkerIconOptions} argument.
 *     Supported options are: primaryColor, strokeColor, 
 *     starPrimaryColor, starStrokeColor, label, labelColor, and addStar.
 * @param {MarkerIconOptions} [opts]
 * @return {GIcon}
 */
MapIconMaker.createLabeledMarkerIcon = function (opts) {
  var primaryColor = opts.primaryColor || "#DA7187";
  var strokeColor = opts.strokeColor || "#000000";
  var starPrimaryColor = opts.starPrimaryColor || "#FFFF00";
  var starStrokeColor = opts.starStrokeColor || "#0000FF";
  var label = MapIconMaker.escapeUserText_(opts.label) || "";
  var labelColor = opts.labelColor || "#000000";
  var addStar = opts.addStar || false;
  
  var pinProgram = (addStar) ? "pin_star" : "pin";
  var baseUrl = "http://chart.apis.google.com/chart?cht=d&chdp=mapsapi&chl=";
  var iconUrl = baseUrl + pinProgram + "'i\\" + "'[" + label + 
      "'-2'f\\"  + "hv'a\\]" + "h\\]o\\" + 
      primaryColor.replace("#", "")  + "'fC\\" + 
      labelColor.replace("#", "")  + "'tC\\" + 
      strokeColor.replace("#", "")  + "'eC\\";
  if (addStar) {
    iconUrl += starPrimaryColor.replace("#", "") + "'1C\\" + 
        starStrokeColor.replace("#", "") + "'0C\\";
  }
  iconUrl += "Lauto'f\\";

  var icon = new GIcon(G_DEFAULT_ICON);
  icon.image = iconUrl + "&ext=.png";
  
  icon.iconSize = new GSize(21, 34);
  return icon;
};

/**
 * Utility function for doing special chart API escaping first,
 *  and then typical URL escaping. Must be applied to user-supplied text.
 * @private
 */
MapIconMaker.escapeUserText_ = function (text) {
  if (text === undefined) {
    return null;
  }
  text = text.replace(/@/, "@@");
  text = text.replace(/\\/, "@\\");
  text = text.replace(/'/, "@'");
  text = text.replace(/\[/, "@[");
  text = text.replace(/\]/, "@]");
  return encodeURIComponent(text);
};
	
