


var Wizard = function(Name, Destination){
	
	this.postForm = function(cmpt)
	{
		Navigator.alertBox("Posting Information");
		//process form
		var self = this;
		var Form = document.Wizard;
		var opt = new Array();
		
		for(i = 0; i < Form.elements.length; i++){
			if (Form.elements[i].type=="select-one"){ 
					for(j=Form.elements[i].options.length-1; j>=0; j--)
					{
						selectedValue = Form.elements[i].options[j].value.trim();
						selectedText = Form.elements[i].options[j].text.trim();
						if(Form.elements[i].options[j].selected){
							opt.push(Array(Form.elements[i].name, selectedValue));
						}
					} 
	 		} else if(Form.elements[i].type=="select-multiple"){
	 				tval = "";
					for(j=Form.elements[i].options.length-1; j>=0; j--)
					{
						selectedValue = Form.elements[i].options[j].value.trim();
						selectedText = Form.elements[i].options[j].text.trim();
						if(Form.elements[i].options[j].selected){
							tval = tval+selectedValue.trim() +"^";
						}
					} 
			 		opt.push(Array(Form.elements[i].name, tval));
			} else {
				if(Form.elements[i].type === 'password'){
					var x = MD5(document.iForm.elements[i].value);
					opt.push(Array(Form.elements[i].name, x));
				} else {
					opt.push(Array(Form.elements[i].name.trim(), Form.elements[i].value.trim()));
				}
			}
		}

		//submit page
		var a = new sack();
		a.requestFile = this.currentPage;
		this.messagediv.innerHTML = "";
		while(opt.length > 0)
		{
			var topt = opt.pop();
			a.setVar(topt[0], topt[1]);
			this.messagediv.innerHTML = this.messagediv.innerHTML + topt[0]+'='+topt[1]+'<br/>';
		}
		//moveto next page
		a.onCompletion = function(){
				Navigator.closeAlert();
				if(a.response.contains('error') > 0)
				{
					Navigator.infoBox(a.response);
				} else {
					self.messagediv.innerHTML = a.response;
				}
				if(cmpt){cmpt();}
			};
		a.onError = function(msg){
				Navigator.closeAlert();
				Navigator.Log("postForm error-"+msg, "High", "jsclass_Wizard");				
				Navigator.infoBox("Error sumbiting form.");								
			};
		a.runAJAX();		
	}
	
	this.updateDB = function(cmpt)
	{
		Navigator.alertBox("Posting Information");
		//process form
		var self = this;
		var Form = document.Wizard;
		var opt = new Array();
		
		for(i = 0; i < Form.elements.length; i++){
			if (Form.elements[i].type=="select-one"){ 
					name = Form.elements[i].name;
					for(j=Form.elements[i].options.length-1; j>=0; j--)
					{
						selectedValue = Form.elements[i].options[j].value.trim();
						selectedText = Form.elements[i].options[j].text.trim();
						if(Form.elements[i].options[j].selected){
							opt.push(Array(name, selectedValue));
						}
					} 
	 		} else if(Form.elements[i].type=="select-multiple"){
	 				tval = "";
					for(j=Form.elements[i].options.length-1; j>=0; j--)
					{
						selectedValue = Form.elements[i].options[j].value.trim();
						selectedText = Form.elements[i].options[j].text.trim();
						if(Form.elements[i].options[j].selected){
							tval = tval+selectedValue.trim() +"^";
						}
					} 
			 		opt.push(Array(Form.elements[i].name, tval));
			} else {
				if(Form.elements[i].type === 'password'){
					var x = MD5(document.iForm.elements[i].value.trim());
					opt.push((Form.elements[i].name, x));
				} else {
					opt.push(Array(Form.elements[i].name, Form.elements[i].value.trim()));
				}
			}
		}

		//submit page
		var a = new sack();
		a.requestFile = this.currentPage;
		while(opt.length > 0)
		{
			var topt = opt.pop();
			a.setVar(topt[0], topt[1]);
		}
		//moveto next page
		a.onCompletion = function(){
				Navigator.closeAlert();
				if(a.response.contains('error') > 0)
				{
                                    Navigator.infoBox(a.response);
				} else {
                                    Navigator.infoBox("Information Added.");
                                    this.toggleNext(true);
                                }
				//if(cmpt){ cmpt(); }
			};
		a.onError = function(msg){
				Navigator.closeAlert();
				Navigator.Log("postForm error-"+msg, "High", "jsclass_Wizard");				
				Navigator.infoBox("Error sumbiting form.");								
			};
		a.runAJAX();		
	}	
	
	this.displayNext = function()
	{
		var topt = this.messagediv.innerHTML;
		var rtn = topt.contains("finished");
		if(rtn > 0)
		{
			this.Close();
			this.Complete();
			exit;
		}
		
		var opt = topt.split("<br>");
		this.updateMsg("Loading form.  Please Wait.");
		var self = this;
		var a = new sack();
		var url = this.pageList.pop();
		this.currentPage = url;
		a.requestFile = url;
		
		while(opt.length > 0)
		{
			var tmp = opt.pop().split("=");
			if(tmp.length > 1){
				a.setVar(tmp[0].trim(), tmp[1].trim());
			}
		}
		
		a.onCompletion = function()
			{
				a.sethtml2(self.messagediv.id);
				self.center(self.div);
			};
		a.onError = function(msg){
					Navigator.Log("displayNext error"+msg, "High", "jsclass_Wizard");
			};
		a.onFail = function(msg){
					Navigator.Log("displayNext error"+msg, "High", "jsclass_Wizard");
			};
		a.runAJAX();
	}
	
	this.resetFunctions = function()
	{
		this.Complete = function() {};
		this.Error = function() {};
	}

	this.loadPages = function()
	{	
		var self = this;
		var a = new sack();
		a.requestFile = this.name;
				
		a.onCompletion = function()
			{
				var stmp = a.response;
				var tmp = stmp.split("\n");
				while(tmp.length > 0)
				{
					self.pageList.push(tmp.pop().trim());
				}
				self.displayNext();
			};
		a.onError = function(msg){
					Navigator.Log("displayNext error"+msg, "High", "jsclass_Wizard");
			};
		a.onFail = function(msg){
					Navigator.Log("displayNext error"+msg, "High", "jsclass_Wizard");
			};
		a.runAJAX();		
	}

	this.updateMsg = function(msg)
	{
		this.messagediv.innerHTML = msg;
		this.Display();
	}
	
	this.Display = function()
	{
		this.div.style.display = 'block';
		this.GreyOut(true, {'zindex':'98', 'bgcolor':'#000000', 'opacity':'70'});
		this.center(this.div);		
	};
	
	this.Close = function()
	{
		if(document.getElementById(this.div.id))	document.body.removeChild(this.div);
		var tdoc = document.getElementById("MessageDiv");
		if(!tdoc) {
					this.GreyOut(false);
		}
	};
	
	this.ReturnMsgBox = function()
	{
		return document.getElementById('MessageDiv');
	};
//Private functions
	this.addBtn = function(div, msg, evt, id)
	{
		var self = this;
		evt = evt || function(){self.Close();self.Complete(msg)};
		var btnText = document.createElement("div");
		btnText.className = "button";
		btnText.innerHTML = msg;
		btnText.style.mouse = 'selector';
		addEvent(btnText, "click", evt);
                if(id){div.id = id;}
		div.appendChild(btnText);
	};

	this.copyStyle = function(base, targ)
	{
	    var baseStyle = base.style;
	    var targStyle = targ.style;
	    
	    for(var prop in baseStyle)
	    {
	          var str = "targStyle." + prop + " = baseStyle." + prop + ";";
	
	          try
	          {
	                eval(str);
	          }
	          catch(e)
	          {
	                // Do nothing
	          }
	    }
	};

        this.toggleNext = function(vis)
        {
            if($(Toggled).visible())
            {
                if(!vis){$(Toggled).toggle()}
            } else {
                if(vis){$(Toggled).toggle()}
            }
        }

	this.center = function(div)
	{
	//div.style.marginLeft = "-" + parseInt(div.offsetWidth / 2) + "px";
  //div.style.marginTop = "-" + parseInt(div.offsetHeight / 2) + "px";
  	var winW;
  	var winH;
  	var x;
  	var y;
  	
		if (parseInt(navigator.appVersion)>3) {
			if (navigator.appName === "Netscape") {
				winW = window.innerWidth;
				winH = window.innerHeight;
			}
			if (navigator.appName.indexOf("Microsoft")!== -1) {
				winW = document.body.offsetWidth;
				winH = document.body.offsetHeight;
			}
		}
		//setStyle(div, "width", getStyle(document.getElementById('MessageDiv'), "width")+50);
		x = (winW-getStyle(div,  "width"))/2;
		y = (winH-getStyle(div,  "height"))/2;
		if((y < 0)){
			setStyle(div, "overflow", "auto");
			y = 0
		}
		if(getStyle(div,  "height") + y > winH){
			y = 0;
			setStyle(div, "height", winH+'px');
			setStyle(div, "overflow", "auto");
		}
		setStyle(div, "position", "fixed");
		leftto(x, div);
		setStyle(div, "top", y+'px');
		window.status = 'width:'+getStyle(document.getElementById('MessageDiv'), "width");
	};
	
	this.GreyOut = function (vis,  options ) 
	{  
		// Pass true to gray out screen, false to ungray  
		// options are optional.  This is a JSON object with the following (optional) properties  
		// opacity:0-100         
		// Lower number = less grayout higher = more of a blackout   
		// zindex: #             
		// HTML elements with a higher zindex appear on top of the gray out  
		// bgcolor: (#xxxxxx)   
		// Standard RGB Hex color code  
		// grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});  
		// Because options is JSON opacity/zindex/bgcolor are all optional and can appear  
		// in any order.  Pass only the properties you need to set.  
		options = options || {};
		var zindex = options.zindex || 50;  
		var opacity = options.opacity || 80;  
		var opaque = (opacity / 100);  
		var bgcolor = options.bgcolor || '#000000';  
		var dark=document.getElementById('darkenScreenObject'); 
		var pageWidth;        
		var pageHeight;
		if (!dark) {    
			// The dark layer doesn't exist, it's never been created.  So we'll    
			// create it here and apply some basic styles.    
			// If you are getting errors in IE see: http://support.microsoft.com/default.aspx/kb/927917    
			var tbody = document.getElementsByTagName("body")[0];    
			var tnode = document.createElement('div');           
			// Create the layer.        
			tnode.style.position='absolute';                 
			// Position absolutely        
			tnode.style.top='0px';                           
			// In the top        
			tnode.style.left='0px';                          
			// Left corner of the page        
			tnode.style.overflow='hidden';                   
			// Try to avoid making scroll bars                    
			tnode.style.display='none';                      
			// Start out Hidden        
			tnode.id='darkenScreenObject';                   
			// Name it so we can find it later    
			tbody.appendChild(tnode);                            
			// Add it to the web page    
			dark=document.getElementById('darkenScreenObject');  
			// Get the object.  
		}  
		if (vis) {    
			// Calculate the page width and height     
			if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) {        
				pageWidth = document.body.scrollWidth+'px';        
				pageHeight = '500%';    
			} else if( document.body.offsetWidth ) {      
				pageWidth = document.body.offsetWidth+'px';      
				pageHeight = document.body.offsetHeight+'px';    
			} else {       
				pageWidth='100%';       
				pageHeight='100%';    
			}       
			//set the shader to cover the entire page and make it visible.    
			dark.style.opacity=opaque;                          
			dark.style.MozOpacity=opaque;                       
			dark.style.filter='alpha(opacity='+opacity+')';     
			dark.style.zIndex=zindex;            
			dark.style.backgroundColor=bgcolor;     
			dark.style.width= pageWidth;    
			dark.style.height= pageHeight;    
			dark.style.display='block';
			document.body.scrolling = "No";                         
		} else {     
			document.body.removeChild(dark);
			document.body.scrolling = "Yes";
		}
		return dark;
	};

	this.name = Name;
	this.pageList = new Array();
	this.postOptions = {'Options':0};
	this.destinationID = Destination;
	
	var self = this;
	this.div = document.createElement("div");
	this.div.id = random(0, 100);
	this.div.style.position = 'fixed';
	this.div.className = 'WizardBox';
	this.div.style.zIndex = '99';
	this.options = {'titlebar':this.name, 'Display':true};
	this.currentPage = "";
	
	var titleb = document.createElement("div");
	var titleWords = document.createElement('h1');
	titleWords.innerHTML = "Wizard";
	titleb.appendChild(titleWords);
	this.div.appendChild(titleb);
	
	this.messagediv = document.createElement("div");

	this.messagediv.innerHTML = "Loading Wizard.....";
	this.messagediv.id = "MessageDiv";
	this.div.appendChild(this.messagediv);
	
	var buttonDiv = document.createElement("div");
	buttonDiv.id = "buttonDiv";
	this.addBtn(buttonDiv, "Cancel", function(){self.Close();});
	this.addBtn(buttonDiv, "Next", function(){self.postForm( function(){self.displayNext();})}, 'Toggle');
	this.div.appendChild(buttonDiv);	
	
	document.getElementsByTagName("body")[0].appendChild(this.div);
	
	this.resetFunctions();
	this.Display();
	this.loadPages();
        this.toggleNext(false);

}
