// Functions to toggle between design/html modes and preview mode

function togglePreview(e)
// - Toggles display of the page preview
{     
 	if (!document.getElementById) 
	{
      alert ("Sorry, this feature is not supported by your browser.");
      return;
   }
   if (VisEd.PREVIEW_IS_HIDDEN) 
	{
      showPreview();
      hideDataFields();
   } 
	else 
	{
      hidePreview();
      restoreDataFields();
   }
}

// - PreviewElements object to store things hidden when in Preview mode 
var PrevuParts = function() {}
  
  	function setPrevuParts() 
  	{
    	PrevuParts.fram = d(VisEd.frameId);
    	PrevuParts.txtarea = getElement("htmlTextarea");
    	PrevuParts.prevuBody = getElement("previewbody");
    	PrevuParts.ed = d("editarea");
		PrevuParts.heading = d("HeadingText");
		PrevuParts.h1 = dE(getElement("pagePreview"),"h1")[0];
  	}

  	function showPreview() 
	// - Hide page fields and display preview
	{
		setPrevuParts();
    
    	// get the post body
    	var strBody; 
    	if (VisEd.mode == VisEd.DESIGN_MODE) 
		{ 
      	strBody = getDesignModeHtml();
      	if (Detect.IE()) 
				strBody = RemoveLinksWithinTags(strBody);
    	}      

		if (VisEd.mode == VisEd.HTML_MODE) 
		{ 
      	strBody = PrevuParts.txtarea.value;
      
      	// - Fix for Safari bug
      	if ((PrevuParts.txtarea.style.display != "none") && Detect.SAFARI())
        		PrevuParts.txtarea.blur();
    	}
    
      hideDataFields();
		
    	// - Hide the editable area
    	if (VisEd.mode == VisEd.DESIGN_MODE)
      	hideElement (PrevuParts.fram);
    	else 
      	hideElement (PrevuParts.txtarea);
    
    	// - Replace line breaks with HTML breaks
    	strBody = strBody.replace(/\n/g,"<br />");
    
    	// ------------------------------------------
    	// Set up the Preview area
    	// ------------------------------------------
		hideElement (d("buttonBox"));
    
		showElement (PrevuParts.prevuBody);
    
		hideElement (PrevuParts.heading);
		hideElement (PrevuParts.ed);
		hideElement (d("bottomBtns"));
		showElement (d("continueBtn"));
    
    	// - Copy page contents to the preview area
    	PrevuParts.prevuBody.innerHTML = strBody;
    
    	// Clean-up post body if it came from the iframe
    	if (VisEd.ENABLE_IFRAME) 
		{ 
      	PrevuParts.prevuBody.innerHTML 
        				= convertAllFontsToSpans(cleanHTML(PrevuParts.prevuBody.innerHTML));
    	}
    
		hideElement (d("FontName"));
		hideElement (d("FontSize"));
		setCtrlBarElements (VisEd.BASIC_WYSIWYG_CTRLS, 'none');
		setCtrlBarElements (VisEd.ADV_WYSIWYG_CTRLS, 'none');
		setCtrlBarElements (VisEd.NON_ADV_WYSIWYG_CTRLS, 'none');
		setCtrlBarElements (VisEd.BASIC_HTML_ED_CTRLS, 'none');
    	VisEd.PREVIEW_IS_HIDDEN = false;
  	}

  	function hidePreview() 
  	// - Hide the Preview and show either Design Mode or HTML mode
  	{
		setPrevuParts();
    
    	// ------------------------------------------
    	// Restore the editing area
    	// ------------------------------------------
    
    	if (VisEd.mode == VisEd.DESIGN_MODE) 
	 		showElement (PrevuParts.fram);
    	else
      	showElement (PrevuParts.txtarea);

		hideElement (PrevuParts.prevuBody);
    	hideElement (PrevuParts.h1);
      restoreDataFields();
		showElement (d("buttonBox"));
		showElement (PrevuParts.ed);
    
    	if (VisEd.mode == VisEd.DESIGN_MODE) 
		{
			setCtrlBarElements (VisEd.BASIC_HTML_ED_CTRLS, 'none');
			showElement (d("FontName"));
			showElement (d("FontSize"));
			setCtrlBarElements (VisEd.BASIC_WYSIWYG_CTRLS, 'block');
			if (VisEd.ADV_CTRLS_ON)
			{
				setCtrlBarElements (VisEd.NON_ADV_WYSIWYG_CTRLS, 'none');
				setCtrlBarElements (VisEd.ADV_WYSIWYG_CTRLS, 'block');
			}
			else
			{
				setCtrlBarElements (VisEd.ADV_WYSIWYG_CTRLS, 'none');
				setCtrlBarElements (VisEd.NON_ADV_WYSIWYG_CTRLS, 'block');
			}
		}
		else
		{
			hideElement (d("FontName"));
			hideElement (d("FontSize"));
			setCtrlBarElements (VisEd.BASIC_WYSIWYG_CTRLS, 'none');
			setCtrlBarElements (VisEd.ADV_WYSIWYG_CTRLS, 'none');
			setCtrlBarElements (VisEd.NON_ADV_WYSIWYG_CTRLS, 'none');
			setCtrlBarElements (VisEd.BASIC_HTML_ED_CTRLS, 'block');
		}

    	VisEd.PREVIEW_IS_HIDDEN = true;
    
    	// - Remind Mozilla of design mode setting
    	if ((VisEd.ENABLE_IFRAME) && (VisEd.mode == VisEd.DESIGN_MODE))
	      VisEd.frameDoc.designMode = "On";
	 
		showElement (PrevuParts.heading);
		hideElement (d("continueBtn"));
		showElement (d("bottomBtns"));
  }

  	function setCtrlBarElements (ctrls, display)
	// - Set the given list of controls to the given display setting ("none" or "block")
  	{
		for (i = 0; i < ctrls.length; i++)
		{
			var span = d("btn_" + ctrls[i]);
        	span.style.display = display;
		}
	}