function setControlMode(controlId, newMode) {
	var control = document.getElementById(controlId);
	var newClassName = "" + control.type + newMode;
	
	switch (control.type) {
	    case "text":
		    control.disabled = false;
		    control.readOnly=(newMode!='Write');
		    control.className=newClassName;
            break;
        case "textarea":
		    control.disabled=false;
		    control.readOnly=(newMode!='Write');
		    control.className="text"+newMode;
            break;
        case "select-one":
		    var textControl = document.getElementById(controlId + 'Text');
		    var disabledControl = document.getElementById(controlId + 'DisabledText');
		    if (newMode=='Write'){
			    textControl.style.display = "none";
			    control.style.display = ""; 
			    disabledControl.style.display = "none";
		    }
		    else if (newMode=="Read"){
			    textControl.style.display = "";
			    control.style.display = "none"; 
			    disabledControl.style.display = "none";
		    }
		    else if (newMode=="Disabled"){
			    textControl.style.display = "none";
			    control.style.display = "none"; 
			    disabledControl.style.display = "";
		    }
		    else if (newMode=="ReadDisabled"){
			    textControl.style.display = "none";
			    control.style.display = "none"; 
			    disabledControl.style.display = "";
		    }
		    control.className=newClassName;
		    disabledControl.className=newClassName;
		    textControl.className=newClassName;
		    break;
        case "checkbox":
		    var labelControl = document.getElementById(controlId + 'Label');
		    var emptyImgControl = document.getElementById(controlId + 'Empty');
		    var checkedImgControl = document.getElementById(controlId + 'Checked');
		    var disabledImgControl = document.getElementById(controlId + 'Disabled');
		    if (newMode=='Write'){
			    control.style.display = "";
			    disabledImgControl.style.display = "none";
			    emptyImgControl.style.display = "none";
			    checkedImgControl.style.display = "none";
			    labelControl.disabled = false;
		    }
		    else if (newMode=="Read"){
			    control.style.display = "none";
			    disabledImgControl.style.display = "none";
			    labelControl.disabled = false;
			    if (control.checked){
				    emptyImgControl.style.display = "none";
				    checkedImgControl.style.display = "";
			    }
			    else{
				    emptyImgControl.style.display = "";
				    checkedImgControl.style.display = "none";
			    }
		    }
		    else if ((newMode=="Disabled")||(newMode=="ReadDisabled")){
			    control.style.display = "none";
			    disabledImgControl.style.display = "";
			    labelControl.disabled = "disabled";
			    emptyImgControl.style.display = "none";
			    checkedImgControl.style.display = "none";
		    }
		    control.className=newClassName;
		    emptyImgControl.className=newClassName;
		    checkedImgControl.className=newClassName;
		    disabledImgControl.className=newClassName;
            break;
        default:
            control.disabled=((newMode=='Disabled')||(newMode=='ReadDisabled'));
            control.readOnly=((newMode=='Read') ||(newMode=='ReadDisabled'));
            control.className=newClassName;
            break;        	        
	}	
}

function setModeReadOnly(controlId, isReadOnly){
	var control = document.getElementById(controlId);
	var type = control.type;
	//if (type == undefined){
	//	type = "span";
	//}
	var css = control.className;
	
	if (isReadOnly==true){
		if (css == type + 'Write'){
			setControlMode(controlId,"Read");	
		}
		else if (css == type + 'Disabled'){
			setControlMode(controlId,"ReadDisabled");
		}
		else if ((css == type + 'ReadDisabled') || (css == type + 'Read')){
		}
		else{ 
		//no css type has been assigned yet
			setControlMode(controlId,"Read");
		}
	}
	else{
		if (css == type + 'Read'){
			setControlMode(controlId,"Write");	
		}
		else if (css == type + 'ReadDisabled'){
			setControlMode(controlId,"Disabled");
		}
		else if ((css == type + 'Disabled') || (css == type + 'Write')){
			
		}
		else{
		//no css type has been assigned yet
			setControlMode(controlId,"Write");
		}
	}
}

function setModeDisabled(controlId, isDisabled){
	var control = document.getElementById(controlId);
	var type = control.type;
	//if (type == undefined){
	//	type = "span";
	//}
	var css = control.className;
	
	if (isDisabled==true){
		if (css == type + 'Write'){
			setControlMode(controlId,"Disabled");	
		}
		else if (css == type + 'Read'){
			setControlMode(controlId,"ReadDisabled");
		}
		else if ((css == type + 'Disabled') || (css == type + 'ReadDisabled')){
		}
		else{
			setControlMode(controlId,"Disabled");
		}
	}
	else{
		if (css == type + 'Disabled'){
			setControlMode(controlId,"Write");	
		}
		else if (css == type + 'ReadDisabled'){
			setControlMode(controlId,"Read");
		}
		else if ((css == type + 'Write') || (css == type + 'Read')){
					}
		else{
		//no css type has been assigned yet
			setControlMode(controlId,"Write");
		}
	}
}

function setModes(controlId, Enabled, ReadOnly){
	setModeDisabled(controlId,!Enabled);
	setModeReadOnly(controlId,ReadOnly);
}