// ------------------------------------
//	ACCOMPLISH HELP SCRIPTS
// ------------------------------------

var gdHelpElementsOn = false;
var gdHelpElementsInit = false;
var gdHelpSuggestInit = false;
var gdHelpTabOn = null;
var gdHelpSearchField = null;
var gdHelpSearchBtn = null;
var gdHelpSearchResults = null;

function gdHelpElementsToggle(obj){
	var el, i, tags = document.all;

	//get all help elements
	if (!gdHelpElementsInit){
		for (i=0;i<document.all.length;i++){
			el = document.all[i];
			if (el.helpID) gdHelpElement.init(el);	
		}
		gdHelpElementsInit = true;
	}
	
	gdHelpElementsOn = !gdHelpElementsOn;
	
	
	if (gdHelpElementsOn){
		mouseChange('help');
		obj.src = '_images/menubar_help_inline_icn-on.jpg';
	} else {
		mouseChange('default');
		obj.src = '_images/menubar_help_inline_icn-off.jpg';
	}
	
	
}

var gdHelpElement = {

	obj : null,
	hideCssTimer : null,
	
	init : function(o){
		
		//setup handlers
		o.onmouseover = gdHelpElement.show;
		o.onmouseout = gdHelpElement.hide;
		o.onmousemove = gdHelpElement.move;
		
		//create tooltip layer
		if (gdHelpElement.tooltip ==  null){
			gdHelpElement.tooltip = document.createElement('div');
			gdHelpElement.tooltip.className = 'helpElementsTooltip';
			document.body.appendChild(gdHelpElement.tooltip);
			gdHelpElement.tooltip.style.position = 'absolute';
			gdHelpElement.tooltip.style.left = '-2000px';
			gdHelpElement.tooltip.style.top = '-2000px';
			gdHelpElement.tooltip.style.visibility = 'hidden';
		}

	},
	
	show: function(e){
		var o = gdHelpElement.obj = this;
		e = fixE(e);

		if (gdHelpElementsOn){
			cancelEventBubble(e);
			clearTimeout(gdHelpElement.hideCssTimer);
			//get content
			gdHelpElement.tooltip.innerHTML = 'loading...';
			if (o.helpContent!=null){
				gdHelpElement.tooltip.innerHTML = o.helpContent;
			} else {
				gdHelpElement.getHelpContent(false,o.helpID);
			}
				
			//hide select boxes because they conflict with floating layers
			setActiveStyleSheet('hideCSS');
			
			gdHelpElement.tooltip.style.visibility = 'visible';
		}
	},
	
	hide: function(e){
		var o = gdHelpElement.obj = this;
		
		//show select boxes
		gdHelpElement.hideCssTimer = setTimeout('setActiveStyleSheet(\'showCSS\')',100);
			
		gdHelpElement.tooltip.style.visibility = 'hidden';
		gdHelpElement.tooltip.innerHTML = '';
	},
	
	move: function(e){
		var o = gdHelpElement.obj = this;
		e = fixE(e);
		
		var ey	= e.clientY + document.body.scrollTop + 10;
		var ex	= e.clientX + document.body.scrollLeft + 10;

		gdHelpElement.tooltip.style.top = ey + "px";;
		gdHelpElement.tooltip.style.left = ex + "px";;
		
	},
	
	getHelpContent: function(response,helpID){
		var o = gdHelpElement.obj, url, helpContent;
		if (response){
			
			//process response from server
			var xmlDocument  = _xmlHTTP.responseXML;
			var contentTags = xmlDocument.getElementsByTagName('content');
	
			if (contentTags[0]){
				gdHelpElement.tooltip.innerHTML = contentTags[0].text;
				o.helpContent = contentTags[0].text;
			} else {
				gdHelpElement.tooltip.innerHTML = 'Help not available for this item.';
			}
			
		} else {
			
			//query xml data
			url = '/accomplish/xml_helpElement.asp?id='+helpID;
			_xmlHTTPCallback='gdHelpElement.getHelpContent\(true,\''+helpID+'\'\)';
	
			loadXMLDoc(url);
			
		}
	}
	
}


var gdHelpSuggest = {

	obj : null,
	layer : null,
	suggestTimer : null,
	
	init: function(o){
		var o = gdHelpSuggest.obj;
		
		//create suggest layer
		gdHelpSuggest.layer = document.createElement('div');
		gdHelpSuggest.layer.className = 'helpSuggestLayer';
		document.body.appendChild(gdHelpSuggest.layer);
		gdHelpSuggest.layer.style.position = 'absolute';
		gdHelpSuggest.layer.style.left = '-2000px';
		gdHelpSuggest.layer.style.top = '-2000px';
		gdHelpSuggest.layer.style.visibility = 'hidden';
		
		o.onkeypress = gdHelpSuggest.onEnter;
	},
	
	doSuggest: function(o){
		gdHelpSuggest.obj = o;
		if (gdHelpSuggest.layer == null) gdHelpSuggest.init(this);
		
		if(typeof(suggestTimer) == 'number') clearTimeout(suggestTimer);
		if (trim(o.value) != '') {
			suggestTimer = setTimeout('gdHelpSuggest.getSuggestions(false)',100);
		} else {
			gdHelpSuggest.hideLayer();
		}
	},
	
	showLayer: function(e){
		var o = gdHelpSuggest.obj;
		
		//hide objects that conflict with layers
		setActiveStyleSheet('hideCSS');
		
		//set layer visibility and position
		gdHelpSuggest.layer.style.visibility = 'visible';
		gdHelpSuggest.layer.style.left = getRealPos(o,'Left') + 'px';
		gdHelpSuggest.layer.style.top = getRealPos(o,'Top') + o.offsetHeight + 'px';
		
		//set body click handler
		document.onclick = gdHelpSuggest.documentClick;
	},
	
	hideLayer: function(e){
		var o = gdHelpSuggest.obj;
		
		//hide objects that conflict with layers
		setActiveStyleSheet('showCSS');
		
		//set layer visibility and position
		gdHelpSuggest.layer.style.visibility = 'hidden';
		gdHelpSuggest.layer.style.left = '-2000px';
		gdHelpSuggest.layer.style.top = '-2000px';
		
		//clear body click handler
		document.onclick = null;
	},
	
	getSuggestions: function(response){ //load the suggestion items through ajax
		var o = gdHelpSuggest.obj, url, i, tmpItem, itemType, itemName, itemID;

		if (response){ //process xml response

			//get xml data
			var xmlDocument  = _xmlHTTP.responseXML;
			var suggestionItems = xmlDocument.getElementsByTagName('item');
			
			//clear menu
			gdHelpSuggest.layer.innerHTML = '';
			gdHelpSuggest.showLayer();
			
			if (suggestionItems.length > 0){ //is there any suggestion items?
				for(i=0;i<=suggestionItems.length;i++){
					if (suggestionItems[i] != null){
						
						//create object
						tmpItem = document.createElement('a');
						
						itemName = suggestionItems[i].getAttribute('name');
						itemID = suggestionItems[i].getAttribute('id');
						tmpItem.href = '#';
						tmpItem.sHelpID = itemID;
						tmpItem.innerHTML = itemName;

						tmpItem.onclick = gdHelpSuggest.suggestionClick;
						
						
						//append the item to the menu
						gdHelpSuggest.layer.appendChild(tmpItem);						
					}
				}
			} else { //no menu items
				gdHelpSuggest.layer.innerHTML = '<i>No Results</i>';
			}
		} else {
			
			//query xml data
			url = '/accomplish/xml_helpSuggest.asp?terms='+o.value;
			_xmlHTTPCallback='gdHelpSuggest.getSuggestions\(true\)';
			loadXMLDoc(url);
			
		}
	},
	
	suggestionClick: function(e){
		gdHelpSuggest.openHelp(this.sHelpID);
	},
	
	onEnter: function(e){
		e = fixE(e);
		if (e.type.toLowerCase() == 'keypress' && e.keyCode == 13){
			gdHelpSuggest.openHelp();
			gdHelpSuggest.hideLayer();
		}
	},
	
	openHelp: function(helpID){
		var o = gdHelpSuggest.obj, qs = '';
		
		if (helpID != null){
			qs = '?helpID=' + helpID
		} else if(o != null){
			qs = '?q=' + o.value	
		}

		openWindow('help.asp' + qs,'accomplishHelp','status=yes,resizable=yes,width=600,height=400') 
	},
	
	documentClick: function(e){
		gdHelpSuggest.hideLayer();
	}
}
	



var gdHelpTree = {

	obj : null,
	selectedObj : null,
	icnCat : '_images/icn_book_closed.gif',
	icnCatOpen : '_images/icn_book_open.gif',
	icnItem : '_images/icn_help.gif',
	classItem : 'helpTree-item',
	classItemNoSelect : 'helpTree-item-noselect',
	classItemSelect : 'helpTree-item-select',

	init: function(divID,expandToItem){
		o = gdHelpTree.obj = document.getElementById(divID);
		o.expanded = false;
		gdHelpTree.toggleCat(0);
		gdHelpTree.expandToItem(false,expandToItem,0)
	},
	
	selected: function(e){
		o = gdHelpTree.obj = this;
		
		cancelEventBubble(e);
		
		//deselect last selected object
		if (gdHelpTree.selectedObj) gdHelpTree.selectedObj.className = gdHelpTree.classItemNoSelect;
		
		if (o.helpCatID){
			gdHelpTree.toggleCat(o.helpCatID);
			top.frames['mainFrame'].location.href = 'help.asp?action=main&helpCatID=' + o.helpCatID;
			if (gdHelpTree.selectedObj = document.getElementById('name_cat_' + o.helpCatID)) gdHelpTree.selectedObj.className = gdHelpTree.classItemSelect;
		} else if (o.helpAnswerID){
			top.frames['mainFrame'].location.href = 'help.asp?action=main&helpID=' + o.helpAnswerID;
			if (gdHelpTree.selectedObj = document.getElementById('name_item_' + o.helpAnswerID)) gdHelpTree.selectedObj.className = gdHelpTree.classItemSelect;
		}
				
	},
	
	over: function(e){
		o = gdHelpTree.obj = this;
		o.className = gdHelpTree.classItemHover;
		
		cancelEventBubble(e);
	},
	
	out: function(e){
		o = gdHelpTree.obj = this;
		o.className = gdHelpTree.classItem;
	},
	
	toggleCat: function(helpCatID){
		o = gdHelpTree.obj;

		if (o.expanded) {
			gdHelpTree.closeBranch();
			if (icnObj = document.getElementById('icn_cat_' + o.helpCatID)) icnObj.src = gdHelpTree.icnCat;
		} else {
			gdHelpTree.openBranch(false);
			if (icnObj = document.getElementById('icn_cat_' + o.helpCatID)) icnObj.src = gdHelpTree.icnCatOpen;
		}
	},
	
	openBranch: function(response){ //load the children through ajax
		var o = gdHelpTree.obj, url, i, categoryItems, tmpList, tmpItem, answerItems, nodeType, nodeID, nodeName;
		if (response){ //process xml response

			//get xml data
			var xmlDocument  = _xmlHTTP.responseXML;
			var childItems = xmlDocument.getElementsByTagName('child');
			
			tmpList = document.createElement('ul');
	
			if (childItems.length > 0){ //is there any children?
				for(i=0;i<=childItems.length;i++){
					if (childItems[i] != null){
						
						//create object
						tmpItem = document.createElement('li');
						
						nodeType = childItems[i].getAttribute('type');
						nodeID = childItems[i].getAttribute('id');
						nodeName = childItems[i].getAttribute('name');
						tmpItem.className = gdHelpTree.classItem;
						if (nodeType == 'category'){
							
							tmpItem.id = 'branch_cat_' + nodeID;
							tmpItem.helpCatID = nodeID;
							nodeIcon = '<img src="' + gdHelpTree.icnCat + '" align="absmiddle" width="20" height="20" id="icn_cat_' + nodeID + '" class="icn"><span id="name_cat_' + nodeID + '">';
						} else {
							tmpItem.id = 'branch_answer_' + nodeID;
							tmpItem.helpAnswerID = nodeID;
							nodeIcon = '<img src="' + gdHelpTree.icnItem + '" align="absmiddle" width="20" height="20" id="icn_item_' + nodeID + '" class="icn"><span id="name_item_' + nodeID + '">';
						}
						tmpItem.innerHTML = '<a href="javascript:;">' + nodeIcon + nodeName + '</span></a>';

						tmpItem.onclick = gdHelpTree.selected;
						
						//append the item to the tree
						tmpList.appendChild(tmpItem);						
					}
				}
			}
			
			if (tmpItem) {
				o.appendChild(tmpList);		
				if (o.nodeName == 'DIV') tmpList.className='root';
			}
			o.expanded = true;
	
		} else {
			
			//query xml data
			url = '/accomplish/xml_helpChildren.asp?id='+o.helpCatID;
			_xmlHTTPCallback='gdHelpTree.openBranch\(true\)';
			loadXMLDoc(url);
			
		}
	},
	
	closeBranch: function(e){
		var o = gdHelpTree.obj;

		if (o.lastChild.tagName == 'UL') o.lastChild.removeNode(true);
		o.expanded = false;
		
	},
	
	expandToItem: function(response,itemID,helpCatID){
		var o = gdHelpTree.obj, url, i, parentITems, thisParentID;
		if (response){ //process xml response
		
			//get xml data
			var xmlDocument  = _xmlHTTP.responseXML;
			var parentItems = xmlDocument.getElementsByTagName('parent');
			
			if (parentItems.length > 0){ //is there any parents?
				for(i=parentItems.length-1;i>=0;i--){
					if (parentItems[i] != null){
						thisParentID = parentItems[i].getAttribute('id');	
						if (thisParentObj = document.getElementById('branch_cat_' + thisParentID)){
							if (!thisParentObj.expanded) thisParentObj.click();
						}
					}
				}
			}
			
			if (itemID > 0) if (thisItemObj = document.getElementById('branch_answer_' + itemID)) thisItemObj.click();
	
		} else {
			
			//query xml data
			url = '/accomplish/xml_helpParents.asp?categoryID='+helpCatID+'&itemID='+itemID;
			_xmlHTTPCallback='gdHelpTree.expandToItem\(true\,\''+itemID+'\',\''+helpCatID+'\'\)';
			loadXMLDoc(url);
			
		}
	}
	
}


function gdHelpSwapTab(changeTo){

	if (gdHelpTabOn){
		changeLayer(gdHelpTabOn,'hideLayer');
		changeLayer(gdHelpTabOn + 'Tab','tab');
	}
	
	changeLayer(changeTo,'showLayer');
	changeLayer(changeTo + 'Tab','tabon');
	
	gdHelpTabOn = changeTo;
	
}

function gdHelpSearchInit(){
	gdHelpSearchField = document.getElementById('q');
	gdHelpSearchBtn = document.getElementById('qs');
	gdHelpSearchResults = document.getElementById('helpSearchResults');
	
	gdHelpSearchField.onkeypress = gdHelpSearchSubmit;
	gdHelpSearchBtn.onclick = gdHelpSearchSubmit;
	
	if (gdHelpSearchField.value != ''){
		gdHelpGetSearchResults(false);
	}
}
function gdHelpSearchSubmit(e){
	e = fixE(e);
	
	//ignore keypresses unless it's the enter key
	if (e.type.toLowerCase() == 'keypress' && e.keyCode != 13) return;
	
	gdHelpGetSearchResults(false);
}
function gdHelpGetSearchResults(response){
	var url, i, searchResults, thisResultID, thisResultTitle;
	if (response){ //process xml response
	
		//get xml data
		var xmlDocument  = _xmlHTTP.responseXML;
		var searchResults = xmlDocument.getElementsByTagName('result');

		gdHelpSearchResults.innerHTML = 'Your query returned ' + searchResults.length + ' results.';
		
		if (searchResults.length > 0){ //is there any results?
			for(i=0;i<searchResults.length;i++){
				if (searchResults[i] != null){
					thisResultID = searchResults[i].getAttribute('id');	
					thisResultTitle = searchResults[i].getAttribute('title');	
					
					//create object
					tmpItem = document.createElement('a');

					tmpItem.href = 'javascript:gdHelpTree.expandToItem(false,' + thisResultID + ',0);';
					tmpItem.innerHTML = thisResultTitle;

					//append the item to the menu
					gdHelpSearchResults.appendChild(tmpItem);		
					
				}
			}
		}

	} else {
		
		//query xml data
		url = '/accomplish/xml_helpSearch.asp?q='+gdHelpSearchField.value;
		_xmlHTTPCallback='gdHelpGetSearchResults\(true\)';
		loadXMLDoc(url);
		
	}
}

function gdHelpSubmitFeedback(){
	
	var feedback_email = document.getElementById('feedback_email');
	var feedback_comments = document.getElementById('feedback_comments');
	
	url = '/accomplish/xml_helpFeedback.asp';
	_xmlHTTPCallback=null;
	loadXMLDoc_v2(url,'POST','email=' + escape(feedback_email.value) + '&comments=' + escape(feedback_comments.value))
	
	feedback_email.value = '';
	feedback_comments.value = '';
	
	changeLayer('feedback_thankyou','showLayer');
	changeLayer('feedback_form','hideLayer');
	
}