var contentHolder; 
var sMeta ="";
var toolboxWin;
var ASPSelected =false;
var UserType =0;
var contentType = "Test";

String.prototype.toClipboard = function()
{
   	return window.clipboardData.setData("Text","" + this).toString();
}; 

String.prototype.Replace = function(strFind, strRep)
{
	return this.split(strFind).join(strRep);
};

String.prototype.toTitleCase = function()
{
    return this.substr(0,1).toUpperCase() + this.substr(1,this.length-1).toLowerCase();
};

function openToolbox(cid, user, dWidth, dHeight, dTop, dLeft)
{
    replaceRule("DIV.rounded DIV", "");
    replaceRule("DIV.rounded", "border-width:1px;border-style:solid;border-color:#C0C0C0;");
    toolboxWin = window.showModelessDialog("/RSCMS/toolboxTop.aspx?contentID=" + cid + "&user=" + user + "&contentType=" + contentType, window,"resizable:yes;status:no;dialogTop:" + dTop + ";dialogLeft:" + dLeft + ";dialogWidth:" + dWidth + ";dialogHeight:"+ dHeight+";scroll:no;help:no;");    	      
}

function hasClassName(element, className) {
    if (!(element = document.getElementById(element))) return;
    var elementClassName = element.className;
    if (elementClassName.length == 0) return false;
    if (elementClassName == className ||
        elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
      return true;
    return false;
  }

function getElementsByClassName(className, parentElement)
{
    var children = (document.getElementById(parentElement) || document.body).getElementsByTagName('*');
    var elements = [], child;
    for (var i = 0, length = children.length; i < length; i++) {
      child = children[i];
      if (hasClassName(child, className))
        elements.push(child);
    }
    return elements;
}
document.getElementsByClassName = getElementsByClassName;

function replaceRule(selectorText, rule) {
    var iSheets = document.styleSheets.length;
    var iRules = 0;
    for(var c=0; c < iSheets; c++)
    {
        iRules = document.styleSheets[c].rules.length;
        for (var i=0; i < iRules; i++) {
            if(document.styleSheets[c].rules[i]) 
            {
                if(document.styleSheets[c].rules[i].selectorText  == selectorText ) 
                {         
                    document.styleSheets[c].removeRule(i);
                    if(rule != "")
                        newRule = document.styleSheets[c].addRule(selectorText, rule, i);
                }
            }
	    }
	}
}

function myKeys()
{
    if(event.keyCode == 9)
    {
        var sel = document.selection;
        if(sel.type == "Control") 
            return;
        event.keyCode = 0;
        var tr = sel.createRange();
        if(tr.htmlText.length == 0)
        {
            tr.text =  "    ";
        }
        else
        {
            tr.text = "    " + tr.text.Replace(String.fromCharCode(13,10),String.fromCharCode(13,10)+ "    ")+String.fromCharCode(13,10);
        }
    }
    if(event.ctrlKey && event.keyCode == 83)
    {
        event.keyCode = 0;
        toolboxWin.saveToWeb();
        return false;
    }
};

function _oncut()
{
	if(typeof(contentHolder) == "object")
	{
		if(ASPSelected && contentHolder.contentEditable)
		{
			if(!confirm("Are you sure you want to cut the selected ASP fragments?"))
			{
				event.returnValue = false;
			}
		}
	}
};

function _onkeydown()
{
	if(typeof(contentHolder) == "object")
	{
		if(event.ctrlKey)
		{
			return true;
		}
		if(ASPSelected && contentHolder.contentEditable)
		{
			if(!confirm("Are you sure you want to delete or overtype the selected ASP fragments?"))
			{
				event.returnValue = false;
			}
		}
	}
};

function _onpaste()
{
	if(typeof(contentHolder) == "object")
	{
		if(ASPSelected && contentHolder.contentEditable)
		{
			if(!confirm("Are you sure you want to paste over the selected ASP fragments?"))
			{
				event.returnValue = false;
			}
		}
	}	
};

function _onselectionchange()
{
    try{
	    if(document.selection.type.toLowerCase() == "text")
	    {
		    var rng = document.selection.createRange();
		    if(rng.htmlText.toLowerCase().indexOf("class=asp") > -1 || rng.htmlText.indexOf("class=module") > -1)
		    {
			    ASPSelected = true;
		    }
		    else
		    {
			    ASPSelected = false;
		    }
	    }
	    if(document.selection.type.toLowerCase() == "control")
	    {
		    var rng = document.selection.createRange();
		    for(var i=0;i<rng.length;i++)
		    {
			    if(rng.item(i).className == "asp" || rng.item(i).className == "module")
			    {
				    ASPSelected = true;
				    break;
			    }
		    }
	    }	
	    if(document.selection.type.toLowerCase() == "none")
	    {
		    ASPSelected = false;
	    }
    }
    catch(e)
    {
	    alert(e.description);
    }
};


function findContentHolder(objElement)
{                                    
	if(objElement.tagName.toUpperCase() != "BODY")
	{
		
		if(checkID(objElement.id.toString()))
		{
			
			contentHolder = objElement;
		}
		else
		{
			
			findContentHolder(objElement.parentElement);
		}		
	}
	else
	{
		
		if(checkID(objElement.id.toString()))
		{
			contentHolder = objElement;
		}
		else
		{
			contentHolder = null;	
		}
	}
};

function findObjChildren(oElement){
    var s, n, e, x;  
    e = new Enumerator(oElement.children);          
    for (;!e.atEnd();e.moveNext())           
      {
         x = e.item();
 
         if(checkID(x.id.toString()))
         {
          contentHolder = x;
          return;  
         }
      }
      contentHolder = null;
      return;
 
};

function checkID(strElementID){
	if((strElementID.indexOf("RSCMS-",0) > -1))
	{
		contentType = "RSCMS-";
		return (true);	
	}
	if((strElementID.indexOf("tbxMenu",0) > -1))
	{
		contentType = "tbxMenu_menu";
		return (true);	
	}	
	return (false);
};

function showhideASP(srcObj,show) 
{
	 var colASP = (srcObj.getElementsByTagName("ASP") || document.getElementsByClassName("asp"));
	 for(var i=0; i< colASP.length;i++)
	 {
		var x = colASP(i);
		if(x.tagName == "ASP")
		{
		    try
		    {
		        var newNode = document.createElement("DIV");
		        newNode.style.cssText = x.style.cssText;
		        newNode.className = "asp";
		        newNode.innerHTML = x.innerHTML;
		        x = x.replaceNode(newNode);
		    }
		    catch(e)
		    {
		        alert(e.description);
		    }
		}
		x.contentEditable=false;
		if(show)
		{
	        if(x.id != "Declarations")
	        {
				//x.style.border = "2px solid Gold";
				//x.title = "ASP.NET Code ( " + x.id + " )";
			}
		}
		else
		{
			x.removeAttribute("style");
	        x.removeAttribute("title");	        			
	   }

	}
    if(show)
        findFlash(srcObj, true);
    else
        findFlash(srcObj, false);
};

function showhideRSINCLUDE(srcObj,show) 
{
	 var colRSINCLUDE = (srcObj.getElementsByTagName("RSINCLUDE") || document.getElementsByClassName("module"));
	 for(var i=0; i< colRSINCLUDE.length;i++)
	 {
		var x = colRSINCLUDE(i);
		if(x.tagName == "RSINCLUDE")
		{
		    try
		    {
		        var newNode = document.createElement("DIV");
		        newNode.style.cssText = x.style.cssText;
		        newNode.className = "module";
		        newNode.innerHTML = x.innerHTML;
		        x = x.replaceNode(newNode);
		    }
		    catch(e)
		    {
		        alert(e.description);
		    }
		}		
		if(show)
		{
			//x.style.border = "1px dashed Green";
			//x.contentEditable=false;
			x.title = "include=( " + x.src + " )";
		}
		else
		{
			x.removeAttribute("style");
	        x.removeAttribute("title"); 			
	   }

	}
};

function showhideDIV(srcObj,show) 
{
	 var colDIV = srcObj.getElementsByTagName("DIV");
	 for(var i=0; i< colDIV.length;i++)
	 {
		var x = colDIV(i);
		if(show)
		{
			//x.style.border = "1px dotted Blue";
			x.contentEditable=true;
		}
		else
		{
			//x.removeAttribute("style");
			x.removeAttribute("contentEditable");
	   }
	}
	if(contentHolder)
	{
	    if(show)
	        contentHolder.className = contentHolder.className + " rsCMS";
	    else
	        contentHolder.className = contentHolder.className.Replace("rsCMS","").trim(); 
	}
};


function showhideEditableChildren(srcObj,show) 
{
	var colEdit = (srcObj.getElementsByTagName("TBXEDIT") || document.getElementsByClassName("editarea"));
	for(var i=0; i< colEdit.length;i++)
	{
		var x = colEdit(i);
		if(x.tagName == "TBXEDIT")
		{
		    try
		    {
		        var newNode = document.createElement("DIV");
		        newNode.style.cssText = x.style.cssText;
		        newNode.className = "editarea";
		        newNode.innerHTML = x.innerHTML;
		        x = x.replaceNode(newNode);
		    }
		    catch(e)
		    {
		        alert(e.description);
		    }
		}				
		if(show)
		{
			//x.style.border = "2px solid PowderBlue";
			x.contentEditable=true;
			x.attachEvent('oncontextmenu',contextMenu);
			x.title = "Content Area (Editable)";			
		}
		else
		{
			x.contentEditable=false;
			x.detachEvent('oncontextmenu',contextMenu);
	        x.removeAttribute("title"); 
	        x.removeAttribute("style");
		}

	}
};

function showhideChildrenTables(srcObj,show)
{
};

function findFlash(obj, show)
{
    var tag = "";
    if(show)
    {
        var objectCol = obj.getElementsByTagName("object");
        for(var i=0;i<objectCol.length;i++)
        {
            if(objectCol(i).type == "application/x-shockwave-flash")
                wrapFlashObj(objectCol(i),true);
        }
    }
    else
    {
        var objectCol = document.getElementsByClassName("flash");
        for(var i=objectCol.length-1;i>-1;i--)
        {
            wrapFlashObj(objectCol(i),false);
        }
    }
};

function wrapFlashObj(obj, show)
{
    if(show)
    {
        var wrapper = document.createElement("DIV");
        wrapper.className = "flash";
        wrapper.contentEditable = true;
        oElement = obj.insertAdjacentElement("beforeBegin", wrapper);
        oElement.appendChild(obj);
    }
    else
    {
        var oRemoved = obj.removeNode(false);
    }
};


var menu, activeEl, oMenuPopup;
function contextMenu()
{
	if(!toolboxWin) return true;
	if (!event.ctrlKey)
	{
		displayMenu();
		return false;
	}
}; 


function displayMenu() {
	var strH=null;
	if(arguments.length > 0)
	{
		activeEl = arguments[0];	
	}
	else
	{
		activeEl = event.srcElement;
	}
	if(arguments.length > 0)
	{
		oMenuPopup = arguments[3].createPopup();	
	}
	else
	{
		oMenuPopup = window.createPopup();
	}	
  	var oPopupDoc = oMenuPopup.document;
  	var strH = new String();
  	oMenu = getContextMenus(activeEl);
	if(typeof(oMenu) == "object")
	{
		strH = oMenu.menuStr;
		
		if(strH != null)
		{
			strH = "<html><BODY topmargin=0 leftmargin=0 bottommargin=0 scroll=no rightmargin=0 style=\"border : 1px solid #6593CF;\">" + strH + "</body></html>";
			if(arguments.length > 0)
			{
		  		oPopupDoc.write(strH.Replace("parent.clickMenu(this)","parent.dialogArguments.clickMenu(this)"));
		  		oMenuPopup.show(arguments[1], arguments[2], 200, oMenu.height, arguments[3].event.srcElement);
		  	}
		  	else
		  	{
		  		oPopupDoc.write(strH);
		  		oMenuPopup.show(event.clientX + (document.scrollLeft?document.scrollLeft:document.documentElement.scrollLeft) , event.clientY + (document.scrollTop?document.scrollTop:document.documentElement.scrollTop), 200, oMenu.height, document.body);
		  	}
		}
	}
};

function clickMenu(el) {
   var mnuCaption = el.firstChild.nextSibling.innerText;
   switch (el.id) {
     case "mnuSELECT" :
       oMenuPopup.hide();
       toolboxWin.editDD(activeEl);
	   break;
     case "mnuASP" :
   	   /*oMenuPopup.hide();
       toolboxWin.editASP(activeEl);*/
       alert("Adding ASP directly is no longer supported, please create a module instead!")
       break;    
     case "mnuASPADD" :
   	   oMenuPopup.hide();
       toolboxWin.addASP(activeEl);
       break; 
     case "mnuRSINCLUDE" :
   	   oMenuPopup.hide();
       toolboxWin.addInclude();
       break;    
     case "mnuRSINCLUDEADD" :
   	   oMenuPopup.hide();
       toolboxWin.addInclude();
       break;                 
     case "mnuIMAGE" :
   	   oMenuPopup.hide();
       toolboxWin.editImage(activeEl);
	   break;
     case "mnuANCHOR" :
   	   oMenuPopup.hide();
       toolboxWin.editHyperlink(activeEl);
	   break;	   
     case "mnuTABLE" :
   	   oMenuPopup.hide();
	   activeEl = activeEl.parentElement.parentElement.parentElement;
       toolboxWin.editTable(window);
	   break;
     case "mnuTABLEDIRECT" :
   	   oMenuPopup.hide();
       toolboxWin.editTable(window);
	   break;
	 case "mnuFLASH" :
	   oMenuPopup.hide();
	   activeEl = activeEl.getElementsByTagName("EMBED")(0); 
	   toolboxWin.showFlashProperties();
	   break; 
     case "mnuSIZE2TALL" :
   	   oMenuPopup.hide();
   	   while(activeEl.tagName != 'TABLE')
   	   {
   	    activeEl = activeEl.parentElement;
   	   }
       toolboxWin.size2Tallest(activeEl);
	   break;	   
     case "mnuTD" :
   	   oMenuPopup.hide();
       toolboxWin.editCell(window);
	   break;
	 case "mnuINS_ROW" :
   	   oMenuPopup.hide();
       toolboxWin.addRow(activeEl);
	   break;
	 case "mnuHEADER_ROW" :
   	   oMenuPopup.hide();
       toolboxWin.headerRow(activeEl);
	   break; 
	 case "mnuSPLITCELLS" :
   	   oMenuPopup.hide();
       toolboxWin.splitCells(activeEl,false, true);
	   break;
	 case "mnuSPLITHEADERCELLS" :
   	   oMenuPopup.hide();
       toolboxWin.splitCells(activeEl,true, true);
	   break;	   
	 case "mnuMERGECELLS" :
   	   oMenuPopup.hide();
       toolboxWin.mergeCells(activeEl);
	   break;
	 case "mnuMERGEROWS" :
   	   oMenuPopup.hide();
       toolboxWin.mergeRows(activeEl);
	   break;
	 case "mnuSPLITROWS" :
   	   oMenuPopup.hide();
       toolboxWin.splitCells(activeEl,false, false);
	   break;	   	   
	 case "mnuDATA_ROW" :
   	   oMenuPopup.hide();
       toolboxWin.dataRow(activeEl);
	   break;		   	   
	 case "mnuINS_COL" :
	   oMenuPopup.hide();
       toolboxWin.addCol(activeEl);
	   break;
	 case "mnuDEL_ROW" :
   	   oMenuPopup.hide();
       toolboxWin.delRow(activeEl);
	   break;
	 case "mnuDEL_COL" :
 	   oMenuPopup.hide();
       toolboxWin.delCol(activeEl);
	   break;
	 case "mnuSTYLE" :
 	   oMenuPopup.hide();
 	   if(activeEl.tagName == "FLASH")
 	       activeEl = activeEl.getElementsByTagName("EMBED")(0);  
	   getItemStyles();
	   break;
	 case "mnuATTRIBUTES" :
 	   oMenuPopup.hide();
 	   if(activeEl.tagName == "FLASH")
 	       activeEl = activeEl.getElementsByTagName("EMBED")(0);  
	   getItemAttributes();
	   break;
	 case "mnuParentSTYLE" :
 	   oMenuPopup.hide();
	       getParentStyles();
	   break;
	 case "mnuParentATTRIBUTES" :
 	   oMenuPopup.hide();
	       getParentAttributes();
	   break;	   
	 case "mnuProperties" :
 	   oMenuPopup.hide();
       toolboxWin.showProperties();
	   break;	
	 case "mnuFORMELEMENT" :
 	   oMenuPopup.hide();
       toolboxWin.editFormElement(activeEl);
	   break;		    
	 case "mnuFORMELEMENT2" :
 	   oMenuPopup.hide();
       toolboxWin.editForm();
	   break;	
	 case "mnuCUT" :
 	   oMenuPopup.hide();
       toolboxWin.cut();
	   break;	
	 case "mnuCOPY" :
 	   oMenuPopup.hide();
       toolboxWin.copy();
	   break;		   
	 case "mnuPASTE" :
 	   oMenuPopup.hide();
       toolboxWin.paste();
	   break;	
	 case "mnuTBXEDIT" :
 	   oMenuPopup.hide();
       toolboxWin.removeTBXEDIT(activeEl);
	   break;
	 case "mnuTBXADD" :
 	   oMenuPopup.hide();
       toolboxWin.addTBXEDIT(window);
	   break;
	 case "mnuREMLAYOUT" :
 	   oMenuPopup.hide();
       toolboxWin.remRSLAYOUT(activeEl);	 
	 	break;
	 case "mnuADDLAYOUT" :
 	   oMenuPopup.hide();
       toolboxWin.addRSLAYOUT(window);	 
	 	break;	 	
	 case "mnuShapeProperties" :
 	   oMenuPopup.hide();
       toolboxWin.showShapeProperties(window);
	   break;	
	 case "mnuBringToFront" :
 	   oMenuPopup.hide();	
	   var biggestZIndex = getBigestZIndex(); 
	   activeEl.style.zIndex = biggestZIndex+1;
	   break;
	 case "mnuSendToBack" :
 	   oMenuPopup.hide();
	   var smallestZIndex = getSmallestZIndex(); 
	   activeEl.style.zIndex = smallestZIndex-1;
	   break;
	case "mnuBringForward" :
 	   oMenuPopup.hide();
	   activeEl.style.zIndex++;
	   break;
	case "mnuSendBackward" :
 	   oMenuPopup.hide();
	   activeEl.style.zIndex--;
	   break; 
	case "mnuWrap" :
 	   oMenuPopup.hide();
	   toolboxWin.wrapWith(toolboxWin.lastWrappedTag);
	   break;
	case "mnuEditPartialHTML" :
 	   oMenuPopup.hide();
	   toolboxWin.editPartialHTML();
	   break;	    
	case "mnuRemove" :
		oMenuPopup.hide();
		toolboxWin.removeElement(activeEl);
		break;
	case "mnuDuplicate" :
		oMenuPopup.hide();
		toolboxWin.duplicateElement(activeEl);
		break;			
	case "mnuEditTag" :
		oMenuPopup.hide();
		toolboxWin.EditTag(activeEl);
		break;	
	case "mnuSPELLWRONG" :
		oMenuPopup.hide();
	    activeEl.innerText = mnuCaption;
	    activeEl.className = "rsSpellCorrect";
		break;	
	case "mnuSPELLNONE" :
		oMenuPopup.hide();
		break;	
	case "mnuSPELLADD" :
		oMenuPopup.hide();
		toolboxWin.spellAdd(activeEl.innerText.toLowerCase());
		toolboxWin.Words[activeEl.innerText.toLowerCase()].status = "rsSpellCorrect";
		toolboxWin.spellCheck();		
		break;						    	   
	case "mnuSPELLIGNORE" :
		oMenuPopup.hide();
		toolboxWin.Words[activeEl.innerText.toLowerCase()].status = "rsSpellCorrect";
		toolboxWin.spellCheck();
		break;	
  }
}; 

function inHolder(obj, className)
{
    if(!obj.tagName)
        return false;
    if(obj.tagName == "BODY")
    {
        return null;
    }
    else
    {
        if(obj.className == className)
        {
            return obj;
        }
        else
        {
            if(obj.parentElement)
                inHolder(obj.parentElement, className);
            else
                return null;
        }
    }
}  

function getContextMenus(El)
{
	var myMenu = new menu();
	var bSpell = ((El.tagName == "SPAN" && El.className == "_word rsSpellWrong") || (El.tagName == "SPAN" && El.className == "_word rsSpellCorrect") || (El.tagName == "SPAN" && El.className == "_word rsSpellIgnore")  || (El.tagName == "SPAN" && El.className == "_word rsSpellUnknown"));
	var bSpellWrong = (El.tagName == "SPAN" && El.className == "_word rsSpellWrong");
	if(!bSpell)
    {
	    myMenu.addItem("mnuCUT","Cut","/RSCMS/images/cut.gif");
	    myMenu.addItem("mnuCOPY","Copy","/RSCMS/images/copy.gif");
	    myMenu.addItem("mnuPASTE","Paste","/RSCMS/images/paste.gif");
	    myMenu.addItem("mnuRemove","Remove","/RSCMS/images/delete.gif");
	    myMenu.addItem("mnuDuplicate","Duplicate","/RSCMS/images/toolbar/02134.gif");	    
	    myMenu.addSeparator("mnuSEP");
	}
	/*START SPECIAL CASES (ASP , MODULE, FLASH, */
	var oASP = inHolder(El, "asp");
	if(oASP)
	{
	    activeEl = oASP;
	    if(UserType > 3)
		{
			myMenu.addItem("mnuASP","Edit ASP","/RSCMS/images/aspedit_small.gif");
			myMenu.addSeparator("mnuSEP");
		}
	    return myMenu.write();	    
	}
	var oRSINCLUDE = inHolder(El, "module");
	if(oRSINCLUDE)
	{
	    activeEl = oRSINCLUDE;
	    if(UserType > 3)
		{
			myMenu.addItem("mnuRSINCLUDE","Edit Include","/RSCMS/images/include.gif");
			myMenu.addSeparator("mnuSEP");
		}
	    return myMenu.write();	    
	}
	var oFLASH = inHolder(El, "flash");
	if(oFLASH)
	{
	    activeEl = oFLASH;
	    if(UserType > 3)
		{
		myMenu.addItem("mnuFLASH","Flash Properties","/RSCMS/images/swf.gif");
		myMenu.addSeparator("mnuSEP");
		}
	    return myMenu.write();	    
	}	
	/*END SPECIAL CASES*/
	
	if(",CAPTION,COL,COLGROUP,FRAMESET,HTML,TBODY,TD,TFOOT,TH,THEAD,TR,".indexOf("," + El.tagName + ",") < 0 && (bSpell == false))
	{
	  myMenu.addItem("mnuEditTag","Edit Tag ... ","/RSCMS/images/transparent.gif");
	}
	if(toolboxWin.lastWrappedTag != "" && toolboxWin.lastWrappedTag != "null" && toolboxWin.lastWrappedTag != null)
	{ 
	    var sel = window.document.selection;
	    if(sel.type == "Text")
	    {
	      myMenu.addItem("mnuWrap","Wrap with " + toolboxWin.lastWrappedTag,"/RSCMS/images/wraptag.gif");  
	    }
	}
	var sel2 = window.document.selection;
	if(sel2.type == "Text")
	{
	    myMenu.addItem("mnuEditPartialHTML","Edit Partial HTML","/RSCMS/images/existing_hyperlink_small.gif");  
	}
	switch (El.tagName) 
	{ 
        case "DIV" :
		    if(UserType > 3 && El.className == "editarea")
	        {
		        myMenu.addSeparator("mnuSEP");
		        myMenu.addItem("mnuTBXEDIT","Remove Editable Area","/RSCMS/images/tbxedit_small.gif");
		        myMenu.addSeparator("mnuSEP");
	        }
            break;		  	
	    case "IMG"  :
		    myMenu.addItem("mnuIMAGE","Image Properties","/RSCMS/images/insertImage.gif");
		    if (El.parentElement.tagName == "A"){
			    myMenu.addItem("mnuANCHOR","Hyperlink Properties","/RSCMS/images/hyperlink.gif");
		    }
		    myMenu.addSeparator("mnuSEP");
	       break;
	    case "A"  :
		    myMenu.addItem("mnuANCHOR","Hyperlink Properties","/RSCMS/images/hyperlink.gif");
		    myMenu.addSeparator("mnuSEP");
	       break;		   
	    case "SELECT" :
		    myMenu.addItem("mnuFORMELEMENT","Drop Down Properties","/RSCMS/images/frmDropDown.gif");
 		    myMenu.addItem("mnuFORMELEMENT2","Form Properties","/RSCMS/images/frmform.gif");		
		    myMenu.addSeparator("mnuSEP");
	       break;
	    case "TEXTAREA" :
    	    myMenu.addItem("mnuFORMELEMENT","Text Area Properties","/RSCMS/images/frmtextarea.gif");
 		    myMenu.addItem("mnuFORMELEMENT2","Form Properties","/RSCMS/images/frmform.gif");
		    myMenu.addSeparator("mnuSEP");
 	        break;
	    case "INPUT" :
		    switch (El.type)
		    {
		    case "text":
			    myMenu.addItem("mnuFORMELEMENT","Text Box Properties","/RSCMS/images/frmTextbox.gif");
			    break;
		    case "hidden":
			    myMenu.addItem("mnuFORMELEMENT","Hidden Properties","/RSCMS/images/frmHidden.gif");
			    break;
		    case "password":
			    myMenu.addItem("mnuFORMELEMENT","Password Properties","/RSCMS/images/frmTextbox.gif");
			    break;
		    case "radio":
			    myMenu.addItem("mnuFORMELEMENT","Option Properties","/RSCMS/images/frmOptionButton.gif");
			    break;
		    case "checkbox":
			    myMenu.addItem("mnuFORMELEMENT","Checkbox Properties","/RSCMS/images/frmcheckbox.gif");
			    break;		
		    case "submit":
			    myMenu.addItem("mnuFORMELEMENT","Submit Properties","/RSCMS/images/frmbutton.gif");
			    break;	
		    case "button":
			    myMenu.addItem("mnuFORMELEMENT","Button Properties","/RSCMS/images/frmbutton.gif");
			    break;					
		    }				
 		    myMenu.addItem("mnuFORMELEMENT2","Form Properties","/RSCMS/images/frmform.gif");
		    myMenu.addSeparator("mnuSEP");
	        break;	   
	    case "TD"  : 
		    myMenu.addItem("mnuTABLE","Table Properties","/RSCMS/images/table.gif");
		    myMenu.addItem("mnuTD","Table Cell Properties","/RSCMS/images/tableCell.gif");
		    myMenu.addSeparator("mnuSEP");
		    myMenu.addItem("mnuINS_ROW","Insert Row","/RSCMS/images/insert_row.gif");
		    myMenu.addItem("mnuINS_COL","Insert Column","/RSCMS/images/insert_column.gif");
		    myMenu.addItem("mnuDEL_ROW","Delete Row","/RSCMS/images/delete_row.gif");
		    myMenu.addItem("mnuDEL_COL","Delete Column","/RSCMS/images/delete_column.gif");
		    var tr = El;
		    while(tr.tagName != "TR")
			    tr = tr.parentElement;
		    if(El.cellIndex < tr.cells.length -1 && El.rowSpan == 1)
			    myMenu.addItem("mnuMERGECELLS","Merge Next Cell","/RSCMS/images/MergeColumns.gif");
		    if(El.colSpan > 1)
			    myMenu.addItem("mnuSPLITCELLS","Split Horizontally","/RSCMS/images/SplitCell.gif");
			var table = tr;
		    while(table.tagName != "TABLE")
			    table = table.parentElement;			
			if(tr.rowIndex + El.rowSpan < table.rows.length &&  table.rows.length > 1 &&  El.colSpan == 1)
			{
			    myMenu.addItem("mnuMERGEROWS","Merge Cell Below","/RSCMS/images/merge_cells.gif");       
			}
			if(El.rowSpan > 1)
			{
			    myMenu.addItem("mnuSPLITROWS","Split Vertically","/RSCMS/images/merge_cells.gif");  
			}    	
		    myMenu.addItem("mnuHEADER_ROW","Convert To Header Row","/RSCMS/images/header_row.gif");
		    myMenu.addItem("mnuSIZE2TALL","Size To Tallest Row","/RSCMS/images/insert_row.gif");
		    myMenu.addItem("mnuADDLAYOUT","Add Layout Node","/RSCMS/images/show_layout.gif");
    	    break;
	    case "TABLE"  : 
		    myMenu.addItem("mnuTABLEDIRECT","Table Properties","/RSCMS/images/table.gif");
    	    break;    	
	    case "TH"  : 
		    myMenu.addItem("mnuTABLE","Table Properties","/RSCMS/images/table.gif");
		    myMenu.addItem("mnuTD","Table Cell Properties","/RSCMS/images/tableCell.gif");
		    myMenu.addSeparator("mnuSEP");
		    myMenu.addItem("mnuINS_ROW","Insert Row","/RSCMS/images/insert_row.gif");
		    myMenu.addItem("mnuINS_COL","Insert Column","/RSCMS/images/insert_column.gif");
		    myMenu.addItem("mnuDEL_ROW","Delete Row","/RSCMS/images/delete_row.gif");
		    myMenu.addItem("mnuDEL_COL","Delete Column","/RSCMS/images/delete_column.gif");
		    var tr = El;
		    while(tr.tagName != "TR")
			    tr = tr.parentElement;
		    if(El.cellIndex < tr.cells.length -1)
			    myMenu.addItem("mnuMERGECELLS","Merge With Next Cell","/RSCMS/images/MergeColumns.gif");
		    if(El.colSpan > 1)
			    myMenu.addItem("mnuSPLITHEADERCELLS","Split Cells","/RSCMS/images/SplitCell.gif");			
		    myMenu.addItem("mnuDATA_ROW","Convert To Data Row","/RSCMS/images/data_row.gif");		
		    myMenu.addItem("mnuSIZE2TALL","Size To Tallest Row","/RSCMS/images/insert_row.gif");
		    myMenu.addItem("mnuADDLAYOUT","Add Layout Node","/RSCMS/images/show_layout.gif");
	        break;
	    case "RSLAYOUT" :
		    myMenu.addItem("mnuREMLAYOUT","Remove Layout Node","/RSCMS/images/show_layout.gif");    
		    break;    	    
	}
	if(!bSpell)
	{
	    if(UserType > 3)
		{	
		    /*if(!myMenu.inMenu("mnuASP"))
		    {
				    myMenu.addItem("mnuASPADD","Add ASP Code","/RSCMS/images/aspadd_small.gif");
		    }*/
		    if(!myMenu.inMenu("mnuTBXEDIT"))
		    {
				    myMenu.addItem("mnuTBXADD","Add Editable Area","/RSCMS/images/tbxadd_small.gif");
		    }
	        if(!myMenu.inMenu("mnuRSINCLUDE"))
	        {
			        myMenu.addItem("mnuRSINCLUDEADD","Add Include","/RSCMS/images/include.gif");
	        }
	    }		
	}	

	myMenu.addSeparator("mnuSEP");
	
	if(El.tagName != El.parentElement.tagName)
	{
		if(!bSpell)
		{
			myMenu.addItem("mnuParentSTYLE",getFriendlyName(El.parentElement) + " Style","/RSCMS/images/style.gif");			
			if(UserType > 3)
			{
				myMenu.addItem("mnuParentATTRIBUTES",getFriendlyName(El.parentElement) + " Attributes","/RSCMS/images/taskViewProperties.gif");	
			}
		}
	}
	if(!bSpell)
	{
		myMenu.addItem("mnuSTYLE",getFriendlyName(El) + " Style","/RSCMS/images/style.gif");
		if(UserType > 3)
		{		
			myMenu.addItem("mnuATTRIBUTES",getFriendlyName(El) + " Attributes","/RSCMS/images/taskViewProperties.gif");
		}
	}	
	if(bSpellWrong)
	{
	    try
	    {
	        if(toolboxWin.Words[El.innerText.toLowerCase()])
	        {
	            if(toolboxWin.Words[El.innerText.toLowerCase()].suggestions != null)
	            {
	                for(var w=0; w < toolboxWin.Words[El.innerText.toLowerCase()].suggestions.length; w++)
	                {
                		if(activeEl.innerText.charCodeAt(0) > 64 && activeEl.innerText.charCodeAt(0) < 91)
	                    {
	                        myMenu.addItem("mnuSPELLWRONG",toolboxWin.Words[El.innerText.toLowerCase()].suggestions[w].toTitleCase(),"/RSCMS/images/spellChecker.gif");
	                    }
	                    else
	                    {
	                        myMenu.addItem("mnuSPELLWRONG",toolboxWin.Words[El.innerText.toLowerCase()].suggestions[w],"/RSCMS/images/spellChecker.gif");
	                    }
	                }    
	            }
	            else
	            {
	                myMenu.addItem("mnuSPELLNONE","No Suggestions","/RSCMS/images/spellChecker.gif");
	            }
	        }
	        else
	        {
	            myMenu.addItem("mnuSPELLNONE","No Suggestions","/RSCMS/images/spellChecker.gif");
	        }
	    }
	    catch(e){}
	    myMenu.addSeparator("mnuSEP");
		myMenu.addItem("mnuSPELLADD","Add Word","/RSCMS/images/spellChecker.gif");
		myMenu.addItem("mnuSPELLIGNORE","Ignore All","/RSCMS/images/spellChecker.gif");

	}
	myMenu.addSeparator("mnuSEP");	
	return myMenu.write();	
 };

function getFriendlyName(El)
{
	switch (El.tagName)
	{
          case "A":
          return "Hyperlink";
         break;
          case "ACRONYM":
          return "Acronym";
         break;
          case "ADDRESS":
          return "Address";
         break;
          case "APPLET":
          return "Applet";
         break;
          case "AREA":
          return "Area";
         break;
          case "B":
          return "Bold";
         break;
          case "BR":
          return "Line Break";
         break;
          case "BUTTON":
          return "Button";
         break;
          case "CENTER":
          return "Center";
         break;
          case "COMMENT":
          return "Comment";
         break;
          case "CUSTOM":
          return "Custom";
         break;
          case "DEL":
          return "Revised";
         break;
          case "DIR":
          return "Directory";
         break;
          case "DIV":
          return "Division";
         break;
          case "DL":
          return "Definition List";
         break;
         break;
          case "DT":
          return "Definition Term";
         break;
          case "EM":
          return "Italic";
         break;
          case "EMBED":
          return "Embeded";
         break;
          case "FIELDSET":
          return "Field Set";
         break;
          case "FONT":
          return "Font";
         break;
          case "FORM":
          return "Form";
         break;
          case "FRAME":
          return "Frame";
         break;
          case "FRAMESET":
          return "Frame Set";
         break;
          case "HEAD":
          return "Head";
         break;
          case "HR":
          return "Horizontal Rule";
         break;
          case "I":
          return "Italic";
         break;
          case "IFRAME":
          return "Inner Frame";
         break;
          case "IMG":
          return "Image";
         break;
          case "INPUT":
          switch (El.type)
          {
           	case "text":
           		return "Text Box";
           		break;
           	case "hidden":
           		return "Hidden";
           		break;
           	case "password":
           		return "Password";
           		break;
           	case "radio":
           		return "Option";
           		break;
           	case "checkbox":
           		return "Checkbox";
           		break;		
           	case "submit":
           		return "Submit Button";
           		break;	
           	case "button":
           		return "Button";
           		break;	           		
          }
         break;
          case "INS":
          return "Inserted";
         break;
          case "ISINDEX":
          return "Prompt";
         break;
          case "KBD":
          return "Fixed Width Font";
         break;
          case "LABEL":
          return "Label";
         break;
          case "LEGEND":
          return "Legend";
         break;
          case "LI":
          return "List Item";
         break;
          case "MAP":
          return "Map";
         break;
          case "MARQUEE":
          return "Marquee";
         break;
          case "MENU":
          return "Menu";
         break;
          case "NOBR":
          return "No Line Break";
         break;
          case "NOFRAMES":
          return "No Frames";
         break;
          case "NOSCRIPT":
          return "No Script";
         break;
          case "OBJECT":
          return "Object";
         break;
          case "OL":
          return "Numbered List";
         break;
          case "OPTGROUP":
          return "Option Group";
         break;
          case "OPTION":
          return "Option";
         break;
          case "P":
          return "Paragraph";
         break;
          case "PRE":
          return "Fixed Width Font";
         break;
          case "RUBY":
          return "Ruby";
         break;
          case "S":
          return "Strike Through";
         break;
          case "SAMP":
          return "Code Sample";
         break;
          case "SELECT":
          return "List Box";
         break;
          case "SMALL":
          return "Smaller Font";
         break;
          case "SPAN":
          return "SPAN";
         break;
          case "STRIKE":
          return "Strike Through";
         break;
          case "STRONG":
          return "Bold";
         break;
          case "SUB":
          return "Subscript";
         break;
          case "SUP":
          return "Superscript";
         break;
          case "TABLE":
          return "Table";
         break;
          case "TBODY":
          return "Table Body";
         break;
          case "TD":
          return "Table Cell";
         break;
          case "TEXTAREA":
          return "Multiline Text";
         break;
          case "TFOOT":
          return "Table Footer";
         break;
          case "TH":
          return "Table Heading Cell";
         break;
          case "THEAD":
          return "Table Heading Row";
         break;
          case "TITLE":
          return "Title";
         break;
          case "TR":
          return "Table Row";
         break;
          case "TT":
          return "Fixed Width Font";
         break;
          case "U":
          return "Underline";
         break;
          case "UL":
          return "Bulleted List";
         break;
          case "WBR":
          return "Soft Line Break";
         break;
          case "XML":
          return "XML Data Island";
         break;
	 default :
	 return El.tagName;
	 break;
	}
};

function menu()
{	
	this.style="";
	this.items = new Array();
	this.tblHeader = "";
	this.tblFooter = "</table>"
	this.addItem = _addItem;
	this.addSeparator = _addSeparator;
	this.inMenu = _inMenu;
	this.separators = 0;
	this.menuStr ="";
	this.height=0;
	this.write = _write;

	function menuItem(ID,Caption, imagePath)
	{
		this.tblBody = "<tr><td><a href=#><div class=\"divItem\"><table border=\"0\" height=\"23\" cellpadding=\"0\" cellspacing=\"0\" width=200><tr id=\"" + ID + "\" class=\"menuMore\" onclick=\"parent.clickMenu(this)\"><td style=\"width:26px; background-color: #E9EEEE;\"><img border=\"0\" src=\"" + imagePath + "\"></td><td width=\"150\">" + Caption + "</td><td width=\"17\" class=\"more\">&nbsp;</td></tr></table></div></a></td></tr>";
		return this;
	};

	function menuSeparator(ID)
	{
		this.tblBody = "<tr bgcolor=#BFDBFF style=\"height:1px\"><td height=1></td></tr>";
		return this;
	};

	function _addItem(ID, Caption, imagePath)
	{
		this.items[this.items.length] = new menuItem(ID, Caption, imagePath);
	};
	
	function _addSeparator(ID)
	{
		this.items[this.items.length] = new menuSeparator(ID);
		this.separators++;
	};
	
	function _inMenu(ID)
	{
		for(var i=0;i<this.items.length;i++)
		{
			if(this.items[i].tblBody.indexOf(ID) > -1)
			{
				return true;
			}
		}
		return false;
	};
	
	function _write()
	{	
		this.style = "<style>.menu{font-family: MS Sans Serif; font-size: 9pt; padding-left: 0px; height:"+ ((this.items.length - this.separators)* 23 + this.separators) + "px; align: center; cursor:default}.menuMore{font-family: MS Sans Serif; font-size: 9pt; padding-left: 1px; height:21px; align: center; cursor:default}.divItem{height:23px;}A:link {text-decoration : none;color:infotext;cursor:default;} A:hover {border-style : solid; border-width :1px; border-color:#FFBD69; background-color:#FFE7A2;}</style>";
		this.tblHeader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"menu\" width=\"200\" height=\"" + ((this.items.length - this.separators)* 23 + this.separators) + "\">";	
		var menuStr = this.style + this.tblHeader; 
		for(var i=0; i< this.items.length; i++)
		{	 
			menuStr += this.items[i].tblBody;
		}
		menuStr += this.tblFooter;	
		this.menuStr = menuStr;
		this.height= ((this.items.length - this.separators)* 23 + this.separators)	;
		return this;
	};
};

var OpenedWin = null;
function getItemStyles() {
   
    if (OpenedWin == null) {
	  OpenedWin = showModelessDialog('/RSCMS/currentStylePopup.aspx?isParent=false', window , 'center:true;left:0px;dialogHeight:538px;dialogWidth:266px;status:no;scroll:no;');
	}
};	  

function getParentStyles() {
   
    if (OpenedWin == null) {
	  OpenedWin = showModelessDialog('/RSCMS/currentStylePopup.aspx?isParent=true', window , 'center:true;left:0px;dialogHeight:538px;dialogWidth:266px;status:no;scroll:no;');
	}
};

var OpenedAttWin = null;
function getItemAttributes() {
   
    if (OpenedAttWin == null) {
	  OpenedAttWin = showModelessDialog('/RSCMS/currentAttributePopup.aspx?isParent=false', window , 'center:true;left:0px;dialogHeight:538px;dialogWidth:266px;status:no;scroll:no;');
	}
};

  
function getParentAttributes() {
   
    if (OpenedAttWin == null) {
	  OpenedAttWin = showModelessDialog('/RSCMS/currentAttributePopup.aspx?isParent=true', window , 'center:true;left:0px;dialogHeight:538px;dialogWidth:266px;status:no;scroll:no;');
	}
};