var Faq = new function() {
	
	this.ajax = null;
	this.mainDiv = null;
	this.dotSpan = null;
	this.msgSpan = null;	
	this.faqObj = null;
										
	
	this.init = function() {
		var self = Faq;
		
		if (!document.getElementById || !document.getElementsByTagName ){
			alert('Please download a newer browser version')
			return;
		}
		//global variables/////////////////////////////////////////////////		
		self.headerDiv = document.getElementById('headerDiv');
		self.mainDiv = document.getElementById('mainDiv');
		self.dotSpan = document.getElementById('dotSpan');
	    self.msgSpan = document.getElementById('msgSpan');
		
		/////////////////////////////////////////////////////////////////
		self.showStatusPrompt();
		self.ajax = new Ajax();    		       
	    self.ajax.doGet('xml/faq.xml', self.handleResp,'xml');
		
		
	};
	
	this.addEvent = function (elm, evType, fn, useCapture) {
	  if (elm.addEventListener) {
		  elm.addEventListener(evType, fn, useCapture);
		  return true; 
	  }else if (elm.attachEvent) {
		  var r = elm.attachEvent('on' + evType, fn);
		  return r;
	  }else {
		  elm['on' + evType] = fn;
	  }
	};
	
	this.handleResp = function(xmlObject) {
		var self = Faq;
		self.faqObj = null;
		self.faqObj = FaqXMLParse.xml2ObjArray(xmlObject,'faq');
		self.removeStatusPrompt();
		self.createHeaderText();
		self.faqParseObj();
	}
	
	this.createHeaderText = function(){
		var self = Faq;
		var instructSpan = document.createElement('h4');
		instructSpan.appendChild(document.createTextNode('Related Questions'));
		self.headerDiv.appendChild(instructSpan);
	}
	
	this.faqParseObj = function(){
		var self = Faq;
		
		for (var j = 0; j < self.faqObj[0].length; j++) {			
			var subsetQue = document.createElement("h1"); //header containing question with children font and ahref
			
			var subsetQue_span = document.createElement("span");
			subsetQue_span.appendChild(document.createTextNode('Q:'));
			
			var subsetQue_font= document.createElement("font");
			var subsetQue_herf= document.createElement("a");
			subsetQue_herf.appendChild(document.createTextNode(self.stripslashes(self.faqObj[0][j].question)));
			subsetQue_herf.id = j;
			self.addEvent(subsetQue_herf, 'click', self.getProxyAnswer, false);
			
			var subsetAns = document.createElement('h2'); //header containing answer			
			subsetAns.id= 'subsetAns' + j;
			subsetQue_font.appendChild(subsetQue_herf);
			
			subsetQue.appendChild(subsetQue_span);
			subsetQue.appendChild(subsetQue_font);			
			self.mainDiv.appendChild(subsetQue);
			self.mainDiv.appendChild(subsetAns);
		}
		
		window.onresize = self.setHeightColumn();
	};
	
	this.getProxyAnswer = function(e) {
		var self = Faq;
		
		var el = window.event ? window.event.srcElement : e ? e.target : null;
		if (!el) return;
		
		var subsetAns = document.getElementById('subsetAns' + el.id);
		if (subsetAns.firstChild) {
			while(subsetAns.firstChild) {
				subsetAns.removeChild(subsetAns.firstChild);
			}
		}else{
			var subsetAns_font = document.createElement("font"); // A: letter of answer
			subsetAns_font.appendChild(document.createTextNode('A:'));
			subsetAns.appendChild(subsetAns_font);
			
			var subsetAns_div = document.createElement("div"); // contains para or span			
			
			////// use <br> (4xs')to indicate end of paragraphs in xml document
			if((self.faqObj[0][el.id].answer).toString().indexOf('<br>') !=-1){
				
				var temp = new Array();
				temp = (self.faqObj[0][el.id].answer).toString().split('<br>');
				for (var k = 0; k < temp.length; k++){
					var subsetAns_para = document.createElement("p");
					subsetAns_para.appendChild(document.createTextNode(self.stripslashes(temp[k])));
					subsetAns_div.appendChild(subsetAns_para);
				}
			}else{
				var subsetAns_para= document.createElement("p");
				subsetAns_para.appendChild(document.createTextNode(self.stripslashes(self.faqObj[0][el.id].answer)));
				subsetAns_div.appendChild(subsetAns_para);
			}
			subsetAns.appendChild(subsetAns_div);
				
		}
		
		window.onresize = self.setHeightColumn();
		
	};
	
	this.removeStatusPrompt = function() {
		var self = Faq;
		var dotSpan = self.dotSpan;
		var msgSpan = self.msgSpan;
		clearInterval(self.promptInterval);
		
		if(msgSpan.firstChild) {
		  msgSpan.removeChild(msgSpan.firstChild);
		}
		
		if(dotSpan.firstChild) {
		  dotSpan.removeChild(dotSpan.firstChild);
		}
	};
	
	this.setPrompt = function(stat, msg) {
		var self = Faq;    
		var msgSpan = self.msgSpan;
		
		msgSpan.className = stat + 'Prompt'; // 'base', 'proc' or 'err'
		if (msgSpan.firstChild) {
		  msgSpan.removeChild(msgSpan.firstChild);
		}
		msgSpan.appendChild(document.createTextNode(msg));
		self.mainDiv.appendChild(msgSpan);
	};

	
	this.showStatusPrompt = function() {
		var self = Faq;
		self.dots = '';
		self.setPrompt('proc', 'Loading data');
		self.promptInterval = setInterval(self.showStatusDots, 200);
  };
	
	this.showStatusDots = function() {
		var self = Faq;
		var dotSpan = self.dotSpan;
		self.dots += '.';
		if (self.dots.length > 4) {
		  self.dots = '';
		}
		if (dotSpan.firstChild) {
		  dotSpan.removeChild(dotSpan.firstChild);
		}
		dotSpan.appendChild(document.createTextNode(' ' + self.dots));
		self.mainDiv.appendChild(dotSpan);
	};
	
	this.setHeightColumn = function() {
	  
	  var elm = document.getElementById('main_body');	  
	  elm.style.height = 'auto';
	  var x = elm.offsetHeight;	  
	  elm.style.height = x + "px";
	};
	this.stripslashes =function(str) {
		str=str.replace(/\\'/g,'\'');
		str=str.replace(/\\"/g,'"');
		str=str.replace(/\\\\/g,'\\');
		str=str.replace(/\\0/g,'\0');
		return str;
   };
	

};

window.onload = Faq.init;