// $Id: cms.js,v 1.7 2004/02/23 16:02:26 justin Exp $

// cancel a cms edit
function CMScancel(fm) {
	if (CMScheckForSave('')) {
		fm.todo.value='';
		fm.submit();
	}
}

// change todo value and submit
function CMSdoThis(fm,val) {
	fm.todo.value=val;
	fm.submit();
}

// change a menu item on mouseover
function CMSmenuOver(id) {
	document.getElementById(id).style.background='url(/img/cms/backMenuSteel_over.gif) repeat-x';
}

// change a menu item on mouseout
function CMSmenuOut(id) {
	document.getElementById(id).style.background='';
}

// mouseover an editable
function CMSeditableOver(id) {
	document.getElementById(id).style.background='#666666';
}

// mouseout an editable
function CMSeditableOut(id) {
	document.getElementById(id).style.background='#403C34';
}

// mouseover a resume item
function CMSresumeOver(id) {
	CMSeditableOver('resume_'+ id);
	imgSwap('arrowDown_'+ id, '/img/cms/arrowDown_over.gif');
	imgSwap('arrowUp_'+ id, '/img/cms/arrowUp_over.gif');
}

// mouseout a resume item
function CMSresumeOut(id) {
	CMSeditableOut('resume_'+ id);
	imgSwap('arrowDown_'+ id, '/img/cms/arrowDown.gif');
	imgSwap('arrowUp_'+ id, '/img/cms/arrowUp.gif');
}

var CMSchangedFm;
var CMScxlFm;

// track the form that holds a changed item
function CMSchangeFm(fm) {
	CMSchangedFm = fm;
}

// look for a changed form and warn user
function CMSdiscardChanges(fm) {
	var msg = "Discard changes?";
	if (CMSchangedFm && CMSchangedFm != fm && !confirm(msg)) return;
	if (CMScxlFm != fm) fm.submit();
	CMScxlFm = "";
}

// look for a changed form and warn user
function CMScheckForSave(fm) {
	var msg = "Discard changes?";
	return !CMSchangedFm || (CMSchangedFm != fm && confirm(msg));
}

// confirm a delete request for an item
function CMSresumeDelete(fm) {
	var msg = "Delete this resume item?";
	if (CMScheckForSave(fm) && confirm(msg)) {
		CMSdoThis(fm,"deleteCMSresume");
	} else {
		CMScxlFm = fm;
	}
}

// confirm a delete request for a group
function CMSresumeDelete_group(fm) {
	var msg = "You are about to delete a group.  Deleting this group will delete any items assigned to it.  You may want to assign these items to another group before proceeding.\n\nAre you sure you want to delete this group?";
	if (CMScheckForSave(fm) && confirm(msg)) {
		CMSdoThis(fm,"deleteCMSresume_group");
	} else {
		CMScxlFm = fm;
	}
}

// confirm a delete request for an item
function CMSportfolioDelete(fm) {
	var msg = "Delete this portfolio item?";
	if (CMScheckForSave(fm) && confirm(msg)) {
		CMSdoThis(fm,"deleteCMSportfolio");
	} else {
		CMScxlFm = fm;
	}
}

// confirm a delete request for a group
function CMSportfolioDelete_group(fm) {
	var msg = "You are about to delete a group.  Deleting this group will delete any items assigned to it.  You may want to assign these items to another group before proceeding.\n\nAre you sure you want to delete this group?";
	if (CMScheckForSave(fm) && confirm(msg)) {
		CMSdoThis(fm,"deleteCMSportfolio_group");
	} else {
		CMScxlFm = fm;
	}
}

// clear the value of a select box
function clearSelect(ctl) {
	for (var i=0; i<ctl.options.length; i++) ctl.options[i].selected = false;
}


// set the value of a form field
function setFormValue(fld,val) {
		switch (fld.type) {
			case "radio":
				setRadio(fld,val);
				break;

			case "select-one":
			case "select-multiple":
				setOption(fld,val);
				break;

			case "checkbox":
				fld.checked = val;
				break;

			case "textarea":
			case "text":
			case "password":
				fld.value = val;
				break;
		}
}

// get the value of a form field
function getFormValue(fld) {
		switch (fld.type) {
			case "radio":
				return getRadio(fld);
				break;

			case "select-one":
			case "select-multiple":
				return getOption(fld);
				break;

			case "checkbox": // do we change the value or check it?
				return fld.checked;
				break;

			case "hidden":
			case "textarea":
			case "text":
			case "password":
			default:
				return fld.value;
				break;
		}
}

// set the selection of a select box or radio button group
function setOption(ctl,val) {
	for (var i=0; i<ctl.options.length; i++) ctl.options[i].selected = ctl.options[i].value == val;
}

// get the selected value of a select box
function getOption(ctl) {
	for (var i=0; i<ctl.options.length; i++) if (ctl.options[i].selected)  return ctl.options[i].value;
}

// set the selection of a radio button set
function setRadio(ctl,val) {
	for (var i=0; i<ctl.length; i++) ctl[i].checked = ctl[i].value == val;
}

// return the selected value of a radio button set
function getRadio(ctl) {
	for (var i=0; i<ctl.length; i++) if (ctl[i].checked) return ctl[i].value;
}


// reset crop values
function removeCrop(t) {
	var fm = document.formControl;

	if (t) {
		fm.tx1.value = "";
		fm.ty1.value = "";
		fm.tx2.value = "";
		fm.ty2.value = "";
	} else {
		fm.x1.value = "";
		fm.y1.value = "";
		fm.x2.value = "";
		fm.y2.value = "";
	}
}

// switch image preview mode
function CMSpreview(mode) {
	var fmCtl = document.formControl;

	// save all values
	CMSsaveControlInfo();

	// save values to save form
	CMSsaveImgAdjust();

	fmCtl.img.value = mode;
	fmCtl.submit(); // update preview pane
	fmCtl.target = "_self";
	fmCtl.cpnt.value = "control";
	fmCtl.submit(); // update control pane
}

// save info to control placeholders based on mode
function CMSsaveControlInfo(mode) {
	var fmCtl = window.parent.frameControl.document.formControl;
	var fmSave = window.parent.formPortfolioItem;

	fmSave.thumbX1.value = getFormValue(fmCtl.tx1);
	fmSave.thumbY1.value = getFormValue(fmCtl.ty1);
	fmSave.thumbX2.value = getFormValue(fmCtl.tx2);
	fmSave.thumbY2.value = getFormValue(fmCtl.ty2);
	fmSave.thumbBrightness.value = getFormValue(fmCtl.tb);
	fmSave.thumbContrast.value = getFormValue(fmCtl.tc);
	fmSave.thumbQuality.value = getFormValue(fmCtl.tq);
	fmSave.cropX1.value = getFormValue(fmCtl.x1);
	fmSave.cropY1.value = getFormValue(fmCtl.y1);
	fmSave.cropX2.value = getFormValue(fmCtl.x2);
	fmSave.cropY2.value = getFormValue(fmCtl.y2);
	fmSave.brightness.value = getFormValue(fmCtl.b);
	fmSave.contrast.value = getFormValue(fmCtl.c);
	fmSave.quality.value = getFormValue(fmCtl.q);
	fmSave.filespec.value = getFormValue(fmCtl.fs);
}

// save image manipulation values to save form
function CMSsaveImgAdjust(fmSave) {
	var fmCtl = window.parent.frameControl.document.formControl;
	var fmSave = window.parent.formPortfolioItem;

	fmSave.cropX1.value = getFormValue(fmCtl.x1);
	fmSave.cropY1.value = getFormValue(fmCtl.y1);
	fmSave.cropX2.value = getFormValue(fmCtl.x2);
	fmSave.cropY2.value = getFormValue(fmCtl.y2);
	fmSave.thumbX1.value = getFormValue(fmCtl.tx1);
	fmSave.thumbY1.value = getFormValue(fmCtl.ty1);
	fmSave.thumbX2.value = getFormValue(fmCtl.tx2);
	fmSave.thumbY2.value = getFormValue(fmCtl.ty2);
	fmSave.brightness.value = getFormValue(fmCtl.b);
	fmSave.contrast.value = getFormValue(fmCtl.c);
	fmSave.quality.value = getFormValue(fmCtl.q);
	fmSave.thumbBrightness.value = getFormValue(fmCtl.tb);
	fmSave.thumbContrast.value = getFormValue(fmCtl.tc);
	fmSave.thumbQuality.value = getFormValue(fmCtl.tq);
	fmSave.filespec.value = fmCtl.fs.value;
}

//DEBUG
function debugFormContents(fm) {
	var msg = "DEBUG FORM CONTENTS\n----\n";

	for(var i=0; i<fm.elements.length; i++) {
		msg += "\n"+ fm.elements[i].name +"::"+ fm.elements[i].value;
	}

	msg += "\n\n----\nSend this form?";

	return confirm(msg);
}
