try {
function showOnly(divId) {
    document.getElementById('changes').style.display = 'block';

    var diffs = getElementsBySelector("div.diff-window")
    
    for(i=0; i < diffs.length; i++) {
        diffs[i].style.display = 'none'
    }
    
    var div = document.getElementById(divId);
    if(div) {
        div.style.display = 'block';
    }
}

function submitButtons() {
  return new Array(document.getElementById("btnSave"),
                   document.getElementById("btnDiscard"));
}

function disableSubmit() {
    var btns = submitButtons();
    for(i=0; i < btns.length; i++) {
        btns[i].disabled = true;
        btns[i].oldColor = btns[i].style.color;
        btns[i].style.color = '#90c0e0';
    }
}

function enableSubmit() {
    var btns = submitButtons();
    for(i=0; i < btns.length; i++) {
        btns[i].disabled = false;
        btns[i].style.color = btns[i].oldColor;
    }
}

function loadingNotice() {
    return document.getElementById("loading");
}

function extraPropertiesLoading() {
    disableSubmit();
    loadingNotice().style.display = 'block';
}

function extraPropertiesLoaded() {
    enableSubmit();
    loadingNotice().style.display = 'none';
}

function tooglePasswordConfirmation(show) {
	document.getElementById("authentication_errors").style.display =
    document.getElementById("confirm_field").style.display =
      document.getElementById("confirm_label").style.display = show ? '':'none';

	document.getElementById("user_password_confirmation").disabled = !show;

	document.forms[0].action = show ? '/account/signup' : '/account/login';
}

function check_password_confirmation() {
    var passwd = document.getElementById('user_password').value;
    var passwd_confirm = document.getElementById('user_password_confirmation').value;
    var do_not_match_warn = document.getElementById('passwords_do_not_match');
    
    if (passwd_confirm == '' || passwd == '' || passwd == passwd_confirm) {
      do_not_match_warn.style.display = 'none';
    } else {
      do_not_match_warn.style.display = 'block';
    }
}

//copied from niftycube
//TODO try to DRY this
function getElementsBySelector(selector){
var i,j,selid="",selclass="",tag=selector,tag2="",v2,k,f,a,s=[],objlist=[],c;
if(selector.find("#")){ //id selector like "tag#id"
    if(selector.find(" ")){  //descendant selector like "tag#id tag"
        s=selector.split(" ");
        var fs=s[0].split("#");
        if(fs.length==1) return(objlist);
        f=document.getElementById(fs[1]);
        if(f){
            v=f.getElementsByTagName(s[1]);
            for(i=0;i<v.length;i++) objlist.push(v[i]);
            }
        return(objlist);
        }
    else{
        s=selector.split("#");
        tag=s[0];
        selid=s[1];
        if(selid!=""){
            f=document.getElementById(selid);
            if(f) objlist.push(f);
            return(objlist);
            }
        }
    }
if(selector.find(".")){      //class selector like "tag.class"
    s=selector.split(".");
    tag=s[0];
    selclass=s[1];
    if(selclass.find(" ")){   //descendant selector like tag1.classname tag2
        s=selclass.split(" ");
        selclass=s[0];
        tag2=s[1];
        }
    }
var v=document.getElementsByTagName(tag);  // tag selector like "tag"
if(selclass==""){
    for(i=0;i<v.length;i++) objlist.push(v[i]);
    return(objlist);
    }
for(i=0;i<v.length;i++){
    c=v[i].className.split(" ");
    for(j=0;j<c.length;j++){
        if(c[j]==selclass){
            if(tag2=="") objlist.push(v[i]);
            else{
                v2=v[i].getElementsByTagName(tag2);
                for(k=0;k<v2.length;k++) objlist.push(v2[k]);
                }
            }
        }
    }
return(objlist);
}

} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('function showOnly(divId) {\n    document.getElementById(\'changes\').style.display = \'block\';\n\n    var diffs = getElementsBySelector(\"div.diff-window\")\n    \n    for(i=0; i < diffs.length; i++) {\n        diffs[i].style.display = \'none\'\n    }\n    \n    var div = document.getElementById(divId);\n    if(div) {\n        div.style.display = \'block\';\n    }\n}\n\nfunction submitButtons() {\n  return new Array(document.getElementById(\"btnSave\"),\n                   document.getElementById(\"btnDiscard\"));\n}\n\nfunction disableSubmit() {\n    var btns = submitButtons();\n    for(i=0; i < btns.length; i++) {\n        btns[i].disabled = true;\n        btns[i].oldColor = btns[i].style.color;\n        btns[i].style.color = \'#90c0e0\';\n    }\n}\n\nfunction enableSubmit() {\n    var btns = submitButtons();\n    for(i=0; i < btns.length; i++) {\n        btns[i].disabled = false;\n        btns[i].style.color = btns[i].oldColor;\n    }\n}\n\nfunction loadingNotice() {\n    return document.getElementById(\"loading\");\n}\n\nfunction extraPropertiesLoading() {\n    disableSubmit();\n    loadingNotice().style.display = \'block\';\n}\n\nfunction extraPropertiesLoaded() {\n    enableSubmit();\n    loadingNotice().style.display = \'none\';\n}\n\nfunction tooglePasswordConfirmation(show) {\n	document.getElementById(\"authentication_errors\").style.display =\n    document.getElementById(\"confirm_field\").style.display =\n      document.getElementById(\"confirm_label\").style.display = show ? \'\':\'none\';\n\n	document.getElementById(\"user_password_confirmation\").disabled = !show;\n\n	document.forms[0].action = show ? \'/account/signup\' : \'/account/login\';\n}\n\nfunction check_password_confirmation() {\n    var passwd = document.getElementById(\'user_password\').value;\n    var passwd_confirm = document.getElementById(\'user_password_confirmation\').value;\n    var do_not_match_warn = document.getElementById(\'passwords_do_not_match\');\n    \n    if (passwd_confirm == \'\' || passwd == \'\' || passwd == passwd_confirm) {\n      do_not_match_warn.style.display = \'none\';\n    } else {\n      do_not_match_warn.style.display = \'block\';\n    }\n}\n\n//copied from niftycube\n//TODO try to DRY this\nfunction getElementsBySelector(selector){\nvar i,j,selid=\"\",selclass=\"\",tag=selector,tag2=\"\",v2,k,f,a,s=[],objlist=[],c;\nif(selector.find(\"#\")){ //id selector like \"tag#id\"\n    if(selector.find(\" \")){  //descendant selector like \"tag#id tag\"\n        s=selector.split(\" \");\n        var fs=s[0].split(\"#\");\n        if(fs.length==1) return(objlist);\n        f=document.getElementById(fs[1]);\n        if(f){\n            v=f.getElementsByTagName(s[1]);\n            for(i=0;i<v.length;i++) objlist.push(v[i]);\n            }\n        return(objlist);\n        }\n    else{\n        s=selector.split(\"#\");\n        tag=s[0];\n        selid=s[1];\n        if(selid!=\"\"){\n            f=document.getElementById(selid);\n            if(f) objlist.push(f);\n            return(objlist);\n            }\n        }\n    }\nif(selector.find(\".\")){      //class selector like \"tag.class\"\n    s=selector.split(\".\");\n    tag=s[0];\n    selclass=s[1];\n    if(selclass.find(\" \")){   //descendant selector like tag1.classname tag2\n        s=selclass.split(\" \");\n        selclass=s[0];\n        tag2=s[1];\n        }\n    }\nvar v=document.getElementsByTagName(tag);  // tag selector like \"tag\"\nif(selclass==\"\"){\n    for(i=0;i<v.length;i++) objlist.push(v[i]);\n    return(objlist);\n    }\nfor(i=0;i<v.length;i++){\n    c=v[i].className.split(\" \");\n    for(j=0;j<c.length;j++){\n        if(c[j]==selclass){\n            if(tag2==\"\") objlist.push(v[i]);\n            else{\n                v2=v[i].getElementsByTagName(tag2);\n                for(k=0;k<v2.length;k++) objlist.push(v2[k]);\n                }\n            }\n        }\n    }\nreturn(objlist);\n}\n'); throw e }