
var tabs = new Array(
'customTab',
'automaticTab',
'HTMLTab',
'moduleTab'
)

// Available modules
var modules;

var currentPreviewObject;
function updateDisplayOptions(tab) {
	var type = document.getElementById(tab+'ContentType').value;
	var container = document.getElementById(tab+'DisplayOptions');
	if (container.className != type+'Display') {
		var d = new Date()
		var t = d.getTime()
		var url = '/admin/ajax/displayOptions/?type='+type+'&mode=' +tab+'&ts=' + t;
		var callbackFun = 
		{ 
			success: function(o) {updateDisplayOptionsReturn(o)}, 
			failure: function(o) {updateDisplayOptionsReturn(o)}
		}; 
		var request = YAHOO.util.Connect.asyncRequest('GET', url, callbackFun);
	}
}

function updateDisplayOptionsReturn(o) {
	var d = eval("eval("+o.responseText+");");
	if (document.getElementById(d.mode+'DisplayOptions').className != d.type+'Display') {
		document.getElementById(d.mode+'DisplayOptions').innerHTML = d.data;
		document.getElementById(d.mode+'DisplayOptions').className = d.type+'Display';
	}
}

function changeTab(name) {
	hidePanes();
	subjectsTA(true);
	for (i=0; i<tabs.length; i++) {
		document.getElementById(tabs[i]).style.display = 'none';
	}
	document.getElementById(name+'Tab').style.display = '';
	document.getElementById('ddcType').value = name;
	document.getElementById('ddInsertButton').style.display = '';
	
	switch(name) {
		case 'custom':
			subjectsTA();
			document.getElementById('previewContent').style.display = '';
		break;
		case 'automatic':
			subjectsTA();
			document.getElementById('previewContent').style.display = '';
		break;
		case 'HTML':
			document.getElementById('previewContent').style.display = '';
		break;
		default:
			
		break;
	}
}

function hidePanes() {
	document.getElementById('availableContent').style.display = 'none';
	document.getElementById('previewContent').style.display = 'none';
	document.getElementById('availableContentHeader').innerHTML = 'Available Content';
}

function subjectsTA(disable) {
	document.getElementById('ddSearchResults').style.display = 'none';
	if (disable) {
		document.getElementById('availableContentHeader').innerHTML = '';
		document.getElementById('availableContent').style.display = 'none';
		document.getElementById('ddSubjects').style.display = 'none';	
	} else {
		if (document.getElementById('availableContentHeader').innerHTML == 'Available Subjects')
			return;
		document.getElementById('availableContentHeader').innerHTML = 'Available Subjects';
		document.getElementById('ddMatchSubjectsHeading').innerHTML   = 'Matching Subjects';
		document.getElementById('ddSuggestSubjectsHeading').innerHTML = 'Suggested Subjects';
		document.getElementById('ddMatchSubjects').innerHTML   = 'Please start typing to find subjects';
		document.getElementById('ddSuggestSubjects').innerHTML = '';
		document.getElementById('availableContent').style.display = '';
		document.getElementById('ddSubjects').style.display = '';
	}
}

function placesTA(disable) {
	document.getElementById('ddSearchResults').style.display = 'none';
	if (disable) {
		document.getElementById('availableContentHeader').innerHTML = '';
		document.getElementById('availableContent').style.display = 'none';
		document.getElementById('ddSubjects').style.display = 'none';		
	} else {
		if (document.getElementById('availableContentHeader').innerHTML  == 'Available Places')
			return;
		document.getElementById('availableContentHeader').innerHTML   = 'Available Places';
		document.getElementById('ddMatchSubjectsHeading').innerHTML   = 'Matching Places';
		document.getElementById('ddSuggestSubjectsHeading').innerHTML = 'Suggested Places';
		document.getElementById('ddMatchSubjects').innerHTML   = 'Please start typing to find places';
		document.getElementById('ddSuggestSubjects').innerHTML = '';
		document.getElementById('availableContent').style.display = '';
		document.getElementById('ddSubjects').style.display = '';
	}
}

function previewHTMLContent() {
	if (currentPreviewObject && document.getElementById(currentPreviewObject.id)) {
		if (document.getElementById('editMode').value == 'true') {
			document.getElementById('editMode').value = '';
			removeBox(currentPreviewObject.id, true);
		} else {
			currentPreviewObject.getEl().parentNode.removeChild(currentPreviewObject.getEl());
		}
	}
	var box = new ContentBox('box', (MSJS.dd.newGroupID()));
	box.boxType    = 'HTML';
	box.heading    = document.getElementById('HTMLContentHeading').value;
	box.useHeading = document.getElementById('HTMLUseHeading').checked;
	box.theme      = document.getElementById('HTMLContentTheme').value;
	box.generateBox();
	currentPreviewObject = box;
	document.getElementById('previewContentArea').innerHTML = '';
	document.getElementById('previewContentArea').appendChild(box.HTML);
}

function previewAutomaticContent() {
	if (currentPreviewObject && document.getElementById(currentPreviewObject.id)) {
		if (document.getElementById('editMode').value == 'true') {
			document.getElementById('editMode').value = '';
			removeBox(currentPreviewObject.id, true);
		} else {
			currentPreviewObject.getEl().parentNode.removeChild(currentPreviewObject.getEl());
		}
	}

	var box = new ContentBox('box', (MSJS.dd.newGroupID()));
	box.heading    = document.getElementById('automaticContentHeading').value;
	box.useHeading = document.getElementById('automaticUseHeading').checked;
	box.type       = document.getElementById('automaticContentType').value;
	box.count      = document.getElementById('automaticContentCount').value;
	box.format     = document.getElementById('automaticContentDisplay').value;
	box.subject    = document.getElementById('automaticContentSubject').value;
	box.theme      = document.getElementById('automaticContentTheme').value;
	box.boxType    = 'automatic';
	box.generateBox();
	currentPreviewObject = box;
	document.getElementById('previewContent').style.display = '';
	document.getElementById('previewContentArea').innerHTML = '';
	document.getElementById('previewContentArea').appendChild(box.HTML);
}

function updateHeading(caller) {
	if (!(currentPreviewObject 
		  && document.getElementById(currentPreviewObject.id)) 
		  || !document.getElementById('automaticUseHeading').checked) {
		return;
	}
	currentPreviewObject.heading = caller.value;
	document.getElementById('grphead'+currentPreviewObject.id).innerHTML = currentPreviewObject.heading;
}

function updateTheme(caller) {
	if (!currentPreviewObject || !document.getElementById(currentPreviewObject.id)) {
		if (document.getElementById('ddcType').value == 'HTML') {
			
		}
		return;
	}
	currentPreviewObject.theme = caller.value;
	document.getElementById(currentPreviewObject.id).className = currentPreviewObject.theme;
	if (caller.id.indexOf('automatic') > -1) {
		if (document.getElementById('automaticNewWindow').checked) {
			document.getElementById(currentPreviewObject.id).className += ' newWindow';
		}
	} else if (caller.id.indexOf('custom') > -1) {
		if (document.getElementById('customNewWindow').checked) {
			document.getElementById(currentPreviewObject.id).className += ' newWindow';
		}
	}
}

function toggleHeading(caller) {
	if (!currentPreviewObject) {
		return;
	}
	if (caller.checked) {
		document.getElementById(currentPreviewObject.headerId).style.display = '';
		currentPreviewObject.useHeading = true;
	} else {
		document.getElementById(currentPreviewObject.headerId).style.display = 'none';
		currentPreviewObject.useHeading = false;
	}
}

function searchCustomContent() {
	if (!customInsertPosition) {
		customInsertPosition = insertPosition;
	}
	customContentType    = document.getElementById('customContentType').value;
	customFileName       = document.getElementById('customFileName').value;
	customContentSubject = document.getElementById('customContentSubject').value;
	customLocation       = document.getElementById('customContentSubject').value;
	customContentFormat  = document.getElementById('customContentDisplay').value;
	// Make the request
	var d = new Date()
	var t = d.getTime()

	var url = '/admin/ajax/browser?searchType=custom&subject=' + encodeURIComponent(customContentSubject) + '&ts=' + 
			  t + '&type=' + customContentType + '&format='+customContentFormat;

	var callbackFun = 
		{ 
			success: function(o) {customSearchReturn(o)}, 
			failure: function(o) {customSearchReturn(o)}
		}; 
	
	var request = YAHOO.util.Connect.asyncRequest('GET', url, callbackFun);		
}
var customSearchBox;
function customSearchReturn(o) {
	if (!document.getElementById(customSearchBox)) {
		var box = new ContentBox('custombox', (MSJS.dd.newGroupID()));
		box.heading     = document.getElementById("customContentHeading").value;
		box.boxType        = 'custom';
		box.useHeading  = document.getElementById("customUseHeading").checked;
		box.theme       = document.getElementById("customContentTheme").value;
		box.generateBox();
		currentPreviewObject = box;
	}
	
	document.getElementById('availableContentHeader').innerHTML = 'Available Content';
	document.getElementById('ddSubjects').style.display = 'none';
	document.getElementById('ddSearchResults').style.display = '';
	
	var rs = eval(o.responseText);
	var box = rs[0];

	box = document.getElementById('ddSearchResults');
	/**
	 * Response codes:
     * 200: Ok
	 * 404: Subject not found
	 * 405: No content found under subject
	 */
	if (rs[1] != 200) {
		this.hasContent = false;
		var message;
		switch (rs[1]) {
		case 404:
			message = 'Invalid subject entered';
		break;
		case 405:
			message = 'No contents with given type were found under given subject';
		break;
		}
		var p = document.createElement('p');
		p.className = 'errorBox';
		p.innerHTML = message;
		box.innerHTML = '';
		box.appendChild(p);
		return;
	}
	box.innerHTML = '';
	var format = document.getElementById('customContentDisplay').value;
	for (i=2; i<rs.length; i++) {
		mdiv = document.createElement('div');
		mdiv.className = 'addHandle';
		mdiv.id = 'customblob' + (MSJS.dd.groups.length + 1);

		sdiv = document.createElement('div');
		sdiv.className = 'content';
		
		ecdiv = document.createElement('div');
		ecdiv.className = 'enterblob';
		ecdiv.id = 'enterblob' + mdiv.id;
		ecdiv.style.height = '2px';
		ecdiv.innerHTML = '&nbsp;';
		dt = document.createElement('dt');
		dt.id = 'grpDT' + box.id + i;
		dt.innerHTML = '<a href="'+rs[i].link+'">'+rs[i].title+'</a>';
		if (format != 2) {
			dd = document.createElement('dd');
			dd.id = 'grpDD' + box.id + i;
			dd.innerHTML = (format==1)?rs[i].contents:rs[i].summary;
			dt.appendChild(dd);
		}

		b = new contentBlob();
		b.id = mdiv.id;
		b.cmsID = rs[i].id;
		b.format = format;

		MSJS.dd.blobs.push(b);
		//sdiv.appendChild(dt);
		sdiv.innerHTML = rs[i].html;
		mdiv.appendChild(sdiv);
		mdiv.appendChild(ecdiv);
		box.appendChild(mdiv);
		MSJS.dd.addGroup(mdiv.id, 2);
	}
		MSJS.dd.initIP();
}

/**
 * Inserts a content box in the requested position
 *
 * @param htmlNode div    An HTML node representing the DIV to be inserted
 * @return void
 */
function insertBox (div) {	

  //allow dash after untill content has been inserted
  if(document.getElementById('dashwrap'))
      document.getElementById('dashwrap').style.display = '';

	hideTiny();
	var editMode = false;
	if (document.getElementById('editMode').value == 'true') {
		editMode = true;
	}
	/*if (document.getElementById('ddcType').value == 'HTML') {
		var nbox = new ContentBox('nbox');
		nbox.boxType = 'HTML';
		nbox.generateBox();
		currentPreviewObject = nbox;
		currentPreviewObject.hasContent = true;
	}*/
	if (!div && document.getElementById('ddcType').value == 'custom' && currentPreviewObject) {
		insertPosition = customInsertPosition;
		customSearchBox = '';
		currentPreviewObject.hasContent = true;
	}
	if (!div && !currentPreviewObject) {
		if (document.getElementById('ddcType').value == 'custom') {
			alert('Please search for content before inserting a custom content box');
		} else {
			alert('Please use the preview button before adding content');
		}
		return;
	}
	if (currentPreviewObject && !currentPreviewObject.hasContent && !document.getElementById('ddcType').value == 'custom') {
		var cnf = confirm('Are you sure you want to insert a blank content block?');
		if (!cnf) {
			return;
		}
	}
	if (!div) {
		var div = currentPreviewObject.HTML;
		var fromPreview = true;
	}
	if (insertPosition) {
		if (insertPosition.id.indexOf('sub')>-1) {
			insertPosition = document.getElementById(insertPosition.id+'b');
			arr = new Array();
			if (insertPosition.childNodes.length > 0) {
				insertPosition.insertBefore(div, insertPosition.childNodes[0]);
			} else {
				insertPosition.appendChild(div);
			}
		} else {
			if (insertPosition.id.indexOf('customblob')>-1) {
				var parent = insertPosition.parentNode;
			} else {
				var parent = insertPosition.parentNode;
			}
			pos = parent.childNodes.length;
			for (i=0; i<parent.childNodes.length; i++) {
				if (parent.childNodes[i] == insertPosition) {
					pos = i;
					break;
				}
			}
			if(pos+1 == parent.childNodes.length) {
				parent.appendChild(div);
			} else {
				parent.insertBefore(div, parent.childNodes[pos+1]);
			}
		}
		/*if (document.getElementById('ddcType').value == 'HTMLOO') {
			MSJS.dd.addGroup(nbox.id);
			grp = MSJS.dd.groups[MSJS.dd.groups.length-1];
			grp.setHandleElId(nbox.handleId);
			grp.invalidHandleClasses.push('ddnhandle');
			MSJS.dd.initIP();
			popInsertion();
			tinyMCE.init({
				mode : "none",
				editor_selector : "simpleEditor",
				editor_deselector : "richEditor",
				theme : "simple"
			});
			document.getElementById('ddcType').value = '';
			document.getElementById('editMode').value = '';
			currentPreviewObject = '';
			customInsertPosition = '';
			insertPosition = '';
		} else */
		if (fromPreview) {
			document.getElementById(currentPreviewObject.handleId).style.display = '';
			document.getElementById(currentPreviewObject.enterId).style.display = '';
			if (document.getElementById('editMode').value != 'true') {
				MSJS.dd.addGroup(currentPreviewObject.id);
				grp = MSJS.dd.groups[MSJS.dd.groups.length-1];
				if (currentPreviewObject.handleId) {
					grp.setHandleElId(currentPreviewObject.handleId);
				}
				grp.invalidHandleClasses.push('ddnhandle');
				MSJS.dd.initIP();
				if (MSJS.dd.currentViewID) {
					currentPreviewObject.groupView = MSJS.dd.currentViewID;
				}
				MSJS.dd.boxes.push(currentPreviewObject);
			}
			popInsertion();
			document.getElementById('ddcType').value = '';
			document.getElementById('editMode').value = '';
			document.getElementById('heading').style.display = '';
			currentPreviewObject = '';
			customInsertPosition = '';
			insertPosition = '';
		}
	}
}

/**
 * Popup content insertion box
 *
 * This function toggles the insertion box dialog declared
 * in MSJS.dd.IPPop.
 *
 * @param string caller   Instance of the caller (used to position
 *                        insertion box dialog.
 * @return void
 */
function popInsertion (caller) {
	var pop = document.getElementById("insertPopup");
	if (pop.style.display == 'none') {
		if (caller) {
			insertPosition = caller.parentNode;
		}
		if (document.getElementById('editMode').value == 'true') {
			document.getElementById('cbInsertButton').value = '  Edit  ';
			document.getElementById('cbCancelButton').style.display = 'none';
		}
		pop.style.display = '';
	} else {
		pop.style.display = 'none';
		document.getElementById('cbInsertButton').value = 'Insert';
		document.getElementById('cbCancelButton').style.display = '';
	}
}

/**
 * Remove content box
 *
 * @param string caller   Instance of the caller (used to remove the box).
 * @return void
 */
function removeBox(caller, confirmed) {
	if (!confirmed) {
		var sure = confirm('Are you sure you want to remove this content box?');
		if (!sure) {
			return;
		}
	}
	saveLayout();
	for (i=0; i<MSJS.dd.groups.length; i++){
		if (MSJS.dd.groups[i].id == caller) {
			MSJS.dd.groups[i].unreg();
			// Remove TinyMCE (if any)
			var tinyArea = document.getElementById('txt'+caller);
			if (tinyArea) {
				tinyMCE.execCommand('mceRemoveControl', true, tinyArea.id);
			}
			var children = document.getElementById(caller).childNodes;
			var enterToRemove;
			for (j in children) {
				if (children[j].id && children[j].id.indexOf('enter') > -1) {
					enterToRemove = children[j].id;
				}
			}
			document.getElementById(caller).parentNode.removeChild(document.getElementById(caller));
			MSJS.dd.groups.splice(i,1);
			for (j in MSJS.dd.columns) {
				if(MSJS.dd.columns[j] == enterToRemove) {
					MSJS.dd.columns.splice(j, 1);
					break;
				}
			}
		}
	}
	var blobsToRemove;
	for (i=0; i<MSJS.dd.boxes.length; i++){
		if (MSJS.dd.boxes[i].id == caller) {
			if(MSJS.dd.boxes[i].blobs) {
				blobsToRemove = new Array();
				blobsToRemove = MSJS.dd.boxes[i].blobs;
			}
			MSJS.dd.boxes.splice(i,1);
			break;
		}
	}
	if (blobsToRemove) {
		var prot = 0; // Make sure we don't go in an infinite loop
		while (blobsToRemove.length > 0 && prot < 100) {
			for (i=0; i<MSJS.dd.groups.length; i++){
				if (MSJS.dd.groups[i].id == blobsToRemove[0].id) {
					MSJS.dd.groups.splice(i,1);
					blobsToRemove.splice(0,1);
					break;
				}
			}
			prot++;
		}
	}
}

/**
 * Edit a content box
 *
 * @param grpName  Group ID to edit
 * @return void
 */
function editBox(grpName) {
  
  // hide dashboard untill content has been inserted
	if(document.getElementById('dashwrap'))
      document.getElementById('dashwrap').style.display = 'none';

	var box;
	for (i=0; i<MSJS.dd.boxes.length; i++) {
		if (MSJS.dd.boxes[i].id == grpName) {
			box = MSJS.dd.boxes[i];
			break;
		}
	}
	if (box) {
		changeTab(box.boxType);
		document.getElementById('ddcType').value = box.boxType;
		if (box.boxType == 'custom') {
			document.getElementById('heading').style.display = 'none';
			document.getElementById('editMode').value = 'true';
			document.getElementById('customContentHeading').value = box.heading;
			document.getElementById('customUseHeading').checked =   box.useHeading;
			document.getElementById('customContentType').value =    box.type;
			document.getElementById('customContentDisplay').value = box.format;
			document.getElementById('customContentTheme').value =   box.theme;
			popInsertion();

			currentPreviewObject = box;
			currentPreviewObject.HTML = box.getEl();
			customSearchBox = box.id;
			customInsertPosition = getEditPosition(box.getEl());
			document.getElementById(box.handleId).style.display = 'none';
			document.getElementById(box.enterId).style.display = 'none';
			document.getElementById('previewContentArea').innerHTML = '';
			document.getElementById('previewContentArea').appendChild(box.getEl());
			
			
		} else if (box.boxType == 'automatic') {
			document.getElementById('heading').style.display = 'none';
			document.getElementById('editMode').value = 'true';
			document.getElementById('automaticContentHeading').value = box.heading;
			document.getElementById('automaticUseHeading').checked =   box.useHeading;
			document.getElementById('automaticContentType').value =    box.type;
			document.getElementById('automaticContentCount').value =   box.count;
			document.getElementById('automaticContentDisplay').value = box.format;
			document.getElementById('automaticContentSubject').value = box.subject;
			document.getElementById('automaticContentTheme').value =   box.theme;
			popInsertion();
			currentPreviewObject = box;
			currentPreviewObject.HTML = box.getEl();
			insertPosition = getEditPosition(box.getEl());
			document.getElementById(box.handleId).style.display = 'none';
			document.getElementById(box.enterId).style.display = 'none';
			document.getElementById('previewContentArea').innerHTML = '';
			document.getElementById('previewContentArea').appendChild(box.getEl());
			document.getElementById('previewContent').style.display = '';
		} else if (box.boxType == 'HTML') {
			document.getElementById('heading').style.display = 'none';
			document.getElementById('editMode').value = 'true';
			document.getElementById('HTMLContentHeading').value = box.heading;
			document.getElementById('HTMLUseHeading').checked =   box.useHeading;
			document.getElementById('HTMLContentTheme').value =   box.theme;
			currentPreviewObject = box;
			currentPreviewObject.HTML = box.getEl();
			insertPosition = getEditPosition(box.getEl());
			document.getElementById(box.handleId).style.display = 'none';
			document.getElementById(box.enterId).style.display = 'none';
			document.getElementById('previewContentArea').innerHTML = '';
			document.getElementById('previewContentArea').appendChild(box.getEl());
			document.getElementById('previewContent').style.display = '';
			popInsertion();
		}
	}
}

function getEditPosition(obj) {
	if (obj.parentNode.id.indexOf('sub') > - 1) {
		var parent = obj.parentNode;
		var children = new Array();
		for (i=0; i<parent.childNodes.length; i++) {
			if (parent.childNodes[i].id) {
				children.push(parent.childNodes[i]);
			}
		}
		if (children.length > 1) {
			for (i=0; i<children.length; i++) {
				if (children[i].id == obj.id) {
					if (i == 0) {
						return parent.parentNode;
					} else {
						return children[i-1];
					}
				}
			}
		} else {
			return parent.parentNode;
		}
	}
}
/**
 * Save content boxes layout
 *
 * Saves the content boxes into a JSON string and saves it in input with "layout" ID
 *
 * @param void
 * @return void
 */
function saveLayout() {
	var subs = new Array();
	var r = new RegExp("^sub[0-9]*$");
	for (i=0; i<MSJS.dd.columns.length; i++) {
		if (document.getElementById(MSJS.dd.columns[i])) {
			var snode = document.getElementById(MSJS.dd.columns[i]).parentNode;
			if (snode.id.indexOf('sub')>-1) {
				if(r.exec(snode.id)) {
					subs.push(snode.id);
				}
			}
		}
	}
	
	// Save our current options
	var options = new ContentBox();
	options.id = 'pageOptions';
	options.boxType    = 'options';
	if (typeof(window['scm']) != 'undefined') {
		options.scm = scm.save();
	}
	options.templateStyle = document.getElementById('templateStyle').value;
	MSJS.dd.boxes.push(options);
	var layout = '['; // Place holder for layout JSON string
	for (i=0; i<subs.length; i++) {
		var sub = document.getElementById(subs[i]+'b');
		var children = sub.childNodes;
		var groups = new Array();

		// Save page options first
		if (i==0)
			groups[0] = 'pageOptions';
		
		for (j=0; j<children.length; j++) {
			if (children[j].id && children[j].id.indexOf('grp') >-1) {
				groups.push(children[j].id);
			}
		}
		layout += '{"' + subs[i] + '":['; 
		for (j=0; j<groups.length; j++) {
			for (x=0; x<MSJS.dd.boxes.length; x++) {
				if (groups[j] == MSJS.dd.boxes[x].id) {
					layout += '{'; 
					layout += '"templateStyle":"'+document.getElementById('templateStyle').value+'",';
					layout += '"boxType":"'+MSJS.dd.boxes[x].boxType+'",';
					layout += '"name":"'+MSJS.dd.boxes[x].name+'",';
					if (MSJS.dd.boxes[x].theme && MSJS.dd.boxes[x].theme.indexOf('newWindow')) {
						MSJS.dd.boxes[x].theme.replace(/newWindow/,"");
						layout += '"newWindow":true,';
					}
					layout += '"theme":"'+MSJS.dd.boxes[x].theme+'",';
					layout += '"useHeading":'+((MSJS.dd.boxes[x].useHeading)?'true':'false')+',';
					if (MSJS.dd.boxes[x].heading != "Please enter a heading or uncheck the \"Use Heading\" box")
						layout += '"heading":"'+MSJS.dd.boxes[x].heading+'",';
					layout += '"type":"'+MSJS.dd.boxes[x].type+'",';
					layout += '"count":"'+MSJS.dd.boxes[x].count+'",';
					layout += '"format":"'+MSJS.dd.boxes[x].format+'",';
					layout += '"subject":"'+MSJS.dd.boxes[x].subject+'",';
					layout += '"id":"'+MSJS.dd.boxes[x].id+'",';
					layout += '"contentId":"'+MSJS.dd.boxes[x].contentId+'",';
					layout += '"handleId":"'+MSJS.dd.boxes[x].handleId+'",';
					layout += '"headerId":"'+MSJS.dd.boxes[x].headerId+'",';
					layout += '"fileName":"'+MSJS.dd.boxes[x].fileName+'",';
					layout += '"location":"'+MSJS.dd.boxes[x].location+'",';
					layout += '"contents":"'+MSJS.dd.boxes[x].contents+'",';
					layout += '"parent":"'+MSJS.dd.boxes[x].parent+'",';
					layout += '"rendered":"'+MSJS.dd.boxes[x].rendered+'",';
					layout += '"isSlideShow":"'+MSJS.dd.boxes[x].isSlideShow+'",';
					layout += '"photoSize":"'+MSJS.dd.boxes[x].photoSize+'",';
					layout += '"slideShowSpeed":"'+MSJS.dd.boxes[x].slideShowSpeed+'",';
					if (MSJS.dd.boxes[x].scm)
						layout += '"scm":"'+ MSJS.dd.boxes[x].scm +'",';
					if (MSJS.dd.boxes[x].group && MSJS.dd.boxes[x].group != 0)
						layout += '"group":"'+ MSJS.dd.boxes[x].group +'",';
					if (MSJS.dd.boxes[x].groupView && MSJS.dd.boxes[x].groupView != 0)
						layout += '"groupView":"'+ MSJS.dd.boxes[x].groupView +'",';
					layout += '"slideShowDesc":"'+MSJS.dd.boxes[x].slideShowDesc+'"';

					if (MSJS.dd.boxes[x].boxType == 'module') {
						layout += ',"entryPoint":"'+MSJS.dd.boxes[x].entryPoint+'"';
					}
					if (MSJS.dd.boxes[x].boxType == 'custom') {
						var box = document.getElementById(MSJS.dd.boxes[x].id);
						var bblock;
						for (z in box.childNodes) {
							if (box.childNodes[z].id.indexOf('contentBlockgrp') > -1) {
								bblock = box.childNodes[z];
								break;
							}
						}
						var blobs = new Array();
						for (z=0; z<bblock.childNodes.length; z++) {
							for (a in MSJS.dd.blobs) {
								if (bblock.childNodes[z].id &&
								   (MSJS.dd.blobs[a].id == bblock.childNodes[z].id)) {
									blobs.push(MSJS.dd.blobs[a]);
									break;
								}
							}
						}
						if (blobs.length > 0) {
							layout += ',"blobs":[';
							layout +='{"id":"'+blobs[0].id+'",';
							layout +='"cmsid":"'+blobs[0].cmsID+'",';
							layout +='"format":"'+blobs[0].format+'"}';
							for (z=1; z<blobs.length; z++) {
								layout +=',{"id":"'+blobs[z].id+'",';
								layout +='"cmsid":"'+blobs[z].cmsID+'",';
								layout +='"format":"'+blobs[z].format+'"}';
							}
							layout += ']';
							MSJS.dd.boxes[x].blobs = blobs;
						}
					}
					if (MSJS.dd.boxes[x].boxType == 'HTML') {
						var textareaContentsID = MSJS.dd.boxes[x].textareaContentsID;
						layout += ',"textareaID":"'+MSJS.dd.boxes[x].textareaID+'"';
						layout += ',"textareaContentsID":"'+MSJS.dd.boxes[x].textareaContentsID+'"';
						if (document.getElementById(textareaContentsID)) {
							layout += ',"textareaContents":"';
							layout += encodeURIComponent(document.getElementById(textareaContentsID).value);
							layout += '"';
						}
					}
					layout += '}';
					if (j<groups.length-1) {
						layout += ',';
					}
				}
			}
		}
		layout += ']}';
		if (i<subs.length-1) {
			layout += ',';
		}
	}
	layout += ']';
	document.getElementById('layout').value = layout;
	// SCM Page views
	if (typeof(window['scm']) != 'undefined' && scm.pageGroups.length > 0) {
		try {
			document.getElementById('pageGroups').value = 
								scm.pageGroups.join(',');
		} catch (err) {
			alert("Error while trying to save page wide groups.\n\n"+err.message);
		}
	}
}

function createNewContent(callerName) {
	var type = document.getElementById(callerName+'ContentType').value;
	var loc = '/admin/newResource/?type='+type;
	window.open(loc, type);
}

function showSlideShow(cancel) {
	if (cancel) {
		document.getElementById('slideShow').style.display = 'none';
		document.getElementById('regSlideShow').style.display = '';
		document.getElementById('customUseHeading').checked = true;
		toggleHeading(document.getElementById('customUseHeading'));
		updateSlideShow(true);
	} else {
		searchCustomContent();
		document.getElementById('slideShow').style.display = '';
		document.getElementById('regSlideShow').style.display = 'none';
		document.getElementById('customUseHeading').checked = false;
		toggleHeading(document.getElementById('customUseHeading'));
		updateSlideShow();
	}
}

function updateSlideShow(remove) {
	if(!currentPreviewObject) {
		return;
	}
	
	if (remove) {
		currentPreviewObject.isSlideShow = false;
	} else {
		currentPreviewObject.isSlideShow = true;
		currentPreviewObject.photoSize   = document.getElementById('photoSize').value;
		currentPreviewObject.slideShowSpeed = document.getElementById('slideShowSpeed').value;
		currentPreviewObject.slideShowDesc = document.getElementById('slideShowDesc').checked;
	}
}

function getModules() {
	if (modules) {
		return updateModules('i');
	}
	var d = new Date()
	var t = d.getTime()
	var url = '/admin/ajax/modules/?getModules=true&ts=' + t;
	var callbackFun = 
	{ 
		success: function(o) {updateModules(o)}, 
		failure: function(o) {updateModules(o)}
	}; 
	var request = YAHOO.util.Connect.asyncRequest('GET', url, callbackFun);
}

function updateModules(o) {
	if (o != 'i') {
		var m = eval("eval("+o.responseText+");");
		if (m) {
			var html = '';
			for (i=0; i<m.length; i++) {
				html += '<div class="module"><a href="javascript:getModule(\''+m[i].entryPoint+'\');">'
				+m[i].name+'</a><p class="description">'+m[i].description+'</p></div>';
			}
			modules = html;
		}
	} else {
		var html = modules;
	}
	if (modules) {
		document.getElementById('modArea').innerHTML = html;
	}
}

function getModule(modURI) {
	var d = new Date()
	var t = d.getTime()
	var url = modURI + '?contentBrowser=true&admin=true&ts=' + t;
	var callbackFun = 
	{ 
		success: function(o) {modulePreview(o)}, 
		failure: function(o) {modulePreview(o)}
	}; 
	var request = YAHOO.util.Connect.asyncRequest('GET', url, callbackFun);
}

function modulePreview(o) {
	document.getElementById('previewContent').style.display = '';
	var m = eval("eval("+o.responseText+");");

	if (m) {
		var box = new ContentBox('box', (MSJS.dd.newGroupID()));
		box.useHeading = false;
		box.type       = document.getElementById('automaticContentType').value;
		box.count      = document.getElementById('automaticContentCount').value;
		box.format     = document.getElementById('automaticContentDisplay').value;
		box.subject    = document.getElementById('automaticContentSubject').value;
		box.theme      = document.getElementById('automaticContentTheme').value;
		box.entryPoint = m.entryPoint;
		box.data       = m.data;
		box.boxType    = 'module';
		box.generateBox();
		currentPreviewObject = box;
		document.getElementById('previewContent').style.display = '';
		document.getElementById('previewContentArea').innerHTML = '';
		document.getElementById('previewContentArea').appendChild(box.HTML);
	}
}
