/* global variables (g_) ******************************************/
var g_goo_Map;
/* gr new */
var g_goo_MarkerMngr = null;
var g_goo_Icon = new GIcon(G_DEFAULT_ICON);

function MapViewItem(str_Img, str_FName, str_LName, str_Addr, str_Tel, goo_Coord, goo_Marker) {
	this.m_str_Img = str_Img;
	this.m_str_FName = str_FName;
	this.m_str_LName = str_LName;
	this.m_str_Addr = str_Addr;
	this.m_str_Tel = str_Tel;
	this.m_goo_Coord = goo_Coord;
	this.m_goo_Marker = goo_Marker;
}

/* user interaction on markers *************************************/
function openMarkerInfoWnd(obj,i_in) {
//alert(obj);
	var n_DataIdx;
	// data for clicked marker (this)
	for( i =  0; i < eval('arr_MapViewItems_'+i_in).length; i++ ) {
		if( eval('arr_MapViewItems_'+i_in)[i].m_goo_Marker == obj ) {
			n_DataIdx = i;
			break;
		}
	}

	if(n_DataIdx == undefined) {
		alert("No data found for this marker.");
		return;
	}

	//note: if the window is closed via close button or by mouse-click elswhere on the map, the assigned html node is deleted!
	var html_InfoWindow = document.getElementById('html_InfoWnd');
	if(!html_InfoWindow)
		html_InfoWindow = createInfoWndNode(n_DataIdx,i_in);

	//std google info wnd 
	//this.openInfoWindowHtml(html_InfoWindow, {maxWidth: 200});
	//extended info wnd with css customization
	//obj.openExtInfoWindow(eval('g_goo_Map_'+i_in), "extInfoWindow_styled", html_InfoWindow.innerHTML, {beakOffset:6 }) ;
	obj.openExtInfoWindow(eval('g_goo_Map_'+i_in), "extInfoWindow_styled", html_InfoWindow.innerHTML, {beakOffset:22 }) ;
}


//create a html node for info window display
function createInfoWndNode(n_DataIdx,i_in) {
	//outer table containing the image only
	var html_InfoWndDiv = document.createElement('div');
	var html_OuterTable = document.createElement('table');
	var html_TrO = document.createElement('tr');
	var html_TdImage = document.createElement('td');
	//inner table containing text data
	var html_TdTable = document.createElement('td')
	var html_InnerTable = document.createElement('table');
	var html_TrName = document.createElement('tr');
	var html_TdName = document.createElement('td');
	
	var html_TrAddr = document.createElement('tr');
	var html_TdAddr = document.createElement('td');
	var html_TrTel = document.createElement('tr');
	var html_TdTel = document.createElement('td')

	html_InfoWndDiv.id = 'html_InfoWnd';
	html_InfoWndDiv.appendChild(html_OuterTable);

	
	//outer table containing the image
	html_OuterTable.appendChild(html_TrO);
	if (eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_Img != '') {
		
		html_TrO.appendChild(html_TdImage);
		html_TdImage.id = 'TdImg';
		html_TdImage.innerHTML = "<img src=" + eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_Img +">";
	}
		//inner table containing text data
		html_TrO.appendChild(html_TdTable);
		html_TdTable.appendChild(html_InnerTable);

		html_InnerTable.appendChild(html_TrName);
		html_TrName.appendChild(html_TdName);
		html_TdName.id = 'TdName';
		var str_Name = eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_FName + " " +  eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_LName;
		html_TdName.innerHTML = str_Name;

		if (eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_Addr != '') {
			html_InnerTable.appendChild(html_TrAddr);
			html_TrAddr.appendChild(html_TdAddr);
			html_TdAddr.id = 'TdAddr';
			html_TdAddr.innerHTML = eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_Addr;
		}
		
		if (eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_Tel != '') {
			html_InnerTable.appendChild(html_TrTel);
			html_TrTel.appendChild(html_TdTel);
			html_TdTel.id  = 'TdTel';
			html_TdTel.innerHTML = eval('arr_MapViewItems_'+i_in)[n_DataIdx].m_str_Tel;
		}
	return html_InfoWndDiv;
}

function setMarkerForArray(i_in) {
	for( i = 0; i < eval('arr_MapViewItems_'+i_in).length; i++ ) {
		if(!eval('arr_MapViewItems_'+i_in)[i].m_goo_Marker) {
			var goo_LatLng = eval('arr_MapViewItems_'+i_in)[i].m_goo_Coord;
			var goo_Marker = new GMarker(goo_LatLng, g_goo_Icon);
			eval('g_goo_Map_'+i_in).addOverlay(goo_Marker);
			/* gr new */
			g_goo_MarkerMngr.addMarker(goo_Marker, 10);

			GEvent.addListener(goo_Marker, 'mouseover',
			function() {
			    openMarkerInfoWnd(this,i_in);
			}
			);
			/*
			GEvent.addListener(goo_Marker, 'mouseout',
			function() {
			    eval('g_goo_Map_'+i_in).closeExtInfoWindow();
			}
			);*/
			eval('arr_MapViewItems_'+i_in)[i].m_goo_Marker = goo_Marker; 
		}
	}
}

