// JScript source code
try {
	
	var drawMode = null; // 'IconTable', 'RouteTable'
	var drawModeItem = null; // the id of the icon or route that is selected
	var drawModeColor = null;
	
	/**
	 * highlight an icon row if selected
	 */
	function initIcons(iconID) {
		try {
			log.funcStackPush('initIcons()');
		
			var spanArray = document.getElementsByName('IconTable');
			for(var spn=0; spn<spanArray.length; spn++) {
				initItem(spanArray[spn], iconID);
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in initIcons(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	/**
	 * highlight a route row if selected
	 */
	function initRoutes(mapRouteID) {
		try {
			log.funcStackPush('initRoutes()');
	
			var spanArray = document.getElementsByName('RouteTable');
			for(var spn=0; spn<spanArray.length; spn++) {
				initItem(spanArray[spn], mapRouteID);
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in initRoutes(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	/**
	 * highlight a row if selected
	 */
	function initItem(tblSpan, urlID) {
		try {
			log.funcStackPush('initItem()');
	
			if(typeof urlID != 'undefined' && typeof urlID != 'undefined')
			{
			    var tbl = tblSpan.getElementsByTagName('TABLE').item(0).getElementsByTagName('TABLE').item(1);
			    for(var i=0; i<tbl.rows.length; i++)
			    {
			        var row = tbl.rows.item(i);
			        if(row.getElementsByTagName('INPUT').length > 0) {
			            var tmpdrawModeItem = row.getElementsByTagName('INPUT').item(0).value;
			            if(tmpdrawModeItem == urlID)
			                rowSelect(row, false);
			        }
			    }
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in initItem(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	function rowOver(row) {
		try {
			log.funcStackPush('rowOver()');
	
			switch (row.className) {
				case 'Row':
					row.className = 'RowOver';
					break;
		
				case 'AltRow':
					row.className = 'AltRowOver';
					break;
		
				case 'RowSelected':
				case 'AltRowSelected':
					// do nothing
					break;
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in rowOver(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	function findParentTill(obj, tName) {
		try {
			var newNode = "";
			newNode = obj.parentNode;
			log.funcStackPush('findParentTill()' + newNode.tagName);
			if(newNode.tagName == tName)
			{
				return newNode;
			}
			else
			{
				return findParentTill(newNode, tName);
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in findParentTill(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	function rowDoubleClick(row, reload) {
		try {
			log.funcStackPush('rowSelect()');
	
			log.method('parameter row: ' + row);
			reload = (reload != null) ? reload : true ;
			drawMode = findParentTill(row, 'SPAN').id;
			log.minor('drawMode: '+drawMode);
			drawModeItem = row.getElementsByTagName('INPUT').item(0).value;
			log.minor('drawModeItem: '+drawModeItem);
	
			var selObj = row.getElementsByTagName('SELECT').item(0);
			if(selObj != null) {
				drawModeColor = selObj.options[selObj.selectedIndex].value;
			}
			log.minor('drawModeColor: ' + drawModeColor);
	
			unselectAll(row);
		
			log.minor('row.className: ' + row.className);

		switch (row.className) {
				case 'Row':
					row.className = 'Row';
					drawModeItem = ''
					break;
		
				case 'AltRow':
					row.className = 'AltRow';
					drawModeItem = ''
					break;
		
				case 'RowSelected':
				case 'AltRowSelected':
					// do nothing
					break;
			}
			
				/*log.minor('removing URL parameters IconID and MapRouteID');
				var newURL = removeURLVar('IconID');
				var newURL = removeURLVar('MapRouteID', newURL);*/
		
				log.minor('adding IconID or MapRouteID to the URL parameters');
				switch (drawMode) {
					case 'IconTable':
						createCookie('IconId',drawModeItem,1)
						/*newURL += 'IconID=' + drawModeItem;*/
						break;
		
					case 'RouteTable':
						createCookie('MapRouteID',drawModeItem,1)
						/*newURL += 'MapRouteID=' + drawModeItem;*/
						break;
				}
		
				/*log.major('reload window to ' + newURL);
				window.location.href = newURL;*/

	
			log.funcStackPop();
	
		} catch (e) {
	    	alert('Unexpected error in rowSelect(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	function rowSelect(row, reload) {
		try {
			log.funcStackPush('rowSelect()');
	
			log.method('parameter row: ' + row);
			reload = (reload != null) ? reload : true ;
			drawMode = findParentTill(row, 'SPAN').id;
			log.minor('drawMode: '+drawMode);
			drawModeItem = row.getElementsByTagName('INPUT').item(0).value;
			log.minor('drawModeItem: '+drawModeItem);
	
			var selObj = row.getElementsByTagName('SELECT').item(0);
			if(selObj != null) {
				drawModeColor = selObj.options[selObj.selectedIndex].value;
			}
			log.minor('drawModeColor: ' + drawModeColor);
	
			unselectAll(row);
		
			log.minor('row.className: ' + row.className);

		switch (row.className) {
				case 'Row':
					row.className = 'RowSelected';
					break;
		
				case 'AltRow':
					row.className = 'AltRowSelected';
					break;
		
				case 'RowSelected':
				case 'AltRowSelected':
					// do nothing
					break;
			}
			
				/*log.minor('removing URL parameters IconID and MapRouteID');
				var newURL = removeURLVar('IconID');
				var newURL = removeURLVar('MapRouteID', newURL);*/
		
				log.minor('adding IconID or MapRouteID to the URL parameters');
				switch (drawMode) {
					case 'IconTable':
						createCookie('IconId',drawModeItem,1)
						/*newURL += 'IconID=' + drawModeItem;*/
						break;
		
					case 'RouteTable':
						createCookie('MapRouteID',drawModeItem,1)
						/*newURL += 'MapRouteID=' + drawModeItem;*/
						break;
				}
		
				/*log.major('reload window to ' + newURL);
				window.location.href = newURL;*/

	
			log.funcStackPop();
	
		} catch (e) {
	    	alert('Unexpected error in rowSelect(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	function rowOut(row) {
		try {
			log.funcStackPush('rowOut()');
	
			switch (row.className) {
				case 'RowOver':
					row.className = 'Row';
					break;
		
				case 'AltRowOver':
					row.className = 'AltRow';
					break;
		
				case 'RowOverSelected':
				case 'AltRowOverSelected':
					// do nothing
					break;
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in rowOut(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	function unselectAll(row) {
		try {
			log.funcStackPush('unselectAll()');
	
			GDraggableObject.setDraggableCursor('default');
		
			var rows = document.getElementsByTagName('TR');
			for(var a=0; a<rows.length; a++) {
				var row = rows[a];
				if(row.className.indexOf('Row') >= 0) {
					row.className = (row.className.indexOf('Alt') >= 0) ? 'AltRow' : 'Row' ;
				}
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in unselectAll(): ' + e + '\n' + log.funcStackPrint());
	    }
	}
	
	function findChildByTypeAndId(node, type, id) {
		try {
			log.funcStackPush('findChildByTypeAndId()');
	
			if(node.hasChildNodes)
			{
				for(var i=0; i<node.childNodes.length; i++)
				{
					var child = node.childNodes.item(i);
					var curType = child.nodeName;
					var curId = child.getAttributeNode('id').value;
					if(curType == type && curID == id)
						return child
					else
						findChildByTypeAndId(child, tname);
				}
			}
	
			log.funcStackPop();
	    } catch (e) {
	    	alert('Unexpected error in findChildByTypeAndId(): ' + e + '\n' + log.funcStackPrint());
	    }
	}

} catch (e) {
	alert('Unexpected error initializing toolbar.js: ' + e + '\n' + log.funcStackPrint());
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

