// COPYRIGHT Redbrick Solutions Inc. 2005-2006 ALL RIGHT RESERVED
var upm = "arrow upmod";
var upr = "arrow up";
var downm = "arrow downmod";
var downr = "arrow down";

var HIGHROW;

var style = 'reddit';

function hide () {for (i = 0; i < arguments.length; i++) {var e = $(arguments[i]); if (e) e.style.display = "none";}}
function show () {for (i = 0; i < arguments.length; i++) {var e = $(arguments[i]); if (e) e.style.display = "";}}

function init() {
    setTimeout(function () {
            var ad = $("ad");
            if (!ad.src || ad.src.length == 0) {
                ad.src="http://static.reddit.com/ad.html";
            }
        }, 1);
}

function setMod(id, c) {
    if (id && c) {
        var up = $("up" + id);
        var down = $("down" + id);
        if (c == "u") {
            if (down.className == downm) setPoints(id, 2);
            else setPoints(id, 1);
            up.className = upm;
            down.className = downr;
        }
        else if (c == "d") {
            if (up.className == upm) setPoints(id, -2);
            else setPoints(id, -1);
            up.className = upr;
            down.className = downm;
        }
        else if (c == "r") {
            if (up.className == upm) setPoints(id, -1);
            else setPoints(id, 1);
            up.className = upr;
            down.className = downr;
        }
    }
}

function setPoints(id, c) {
    if (logged) {
        var points = $("score" + id);
        if (points) {
            var score = points.innerHTML;
            var index = score.indexOf(' ');
            if (index > -1)
                score = score.substring(0, index);
            var score = parseInt(score) + c;
            var pointtext = " point";
            if (score != 1) pointtext += "s";

            if (style=='reddit') {
                points.innerHTML = score + pointtext;
                points.className = "little highlight";
            }
            else if (style == 'blog1') {
                points.innerHTML = score + pointtext;
            }
            else if (style == 'blog2') {
                points.innerHTML = score;
            }
            else if (style == 'blog3') {
                points.innerHTML = score;
            }
        }
    }
}

function setClick(id) {
    if (id && logged) {
        var title = $("title" + id);
        if (title) title.className = "title loggedin click";
    }
}

function setModCookie(id, c) {
    if (logged) createCookie("mod", readCookie("mod") + id + ":" + c + ":");
}

function setClickCookie(id) {
    if (logged) createCookie("click", readCookie("click") + id + ":");
}

function setHideCookie(id) {
    if (logged) createCookie("hide", readCookie("hide") + id + ":");
}

function vpass(pass) {
    var passre = new RegExp(".{3,20}");
    return passre.exec(pass);
}

function vuser(user) {
    var nameRE = new RegExp("^[A-Za-z0-9-_]{3,20}$");
    return nameRE.exec(user);
}

function login(f) {
    op = f.op.value;
    paras = f.getElementsByTagName("p");
    for (x=0; x < paras.length; x++) {
        if (paras[x].className == "error") {
            e = paras[x];
            break;
        }
    }
 
    e.innerHTML = "";
    if (!vuser(f.user.value)) {
        e.innerHTML = "invalid username";
        return false;
    }
    if (!vpass(f.passwd.value)) {
        e.innerHTML = "invalid password";
        return false;
    }
    if (op == "reg" && f.passwd.value != f.passwd2.value) {
        e.innerHTML = "passwords don't match";
        return false;
    }
    
    if (Ajax.getTransport()) {
        params = new Array("ajax=1&op=", op,
                           "&user=", f.user.value,
                           "&passwd=", encodeURIComponent(f.passwd.value),
                           "&rem=", f.rem.value);
        params = params.join("")
        completefn = function(r) {
            var errorcode = r.responseText;
            if (errorcode && errorcode.length > 0) {
                errorcode = parseInt(errorcode);
                if (errorcode == 0) window.location.reload(true)
                else if (errorcode == 1) e.innerHTML = "invalid login";
                else if (errorcode == 2) e.innerHTML = "that username is not available";
            }
        }
        new Ajax.Request('/login', {method: "post", parameters: params, onComplete: completefn});
        return false;
    }
    else return true; 
}

function logout() {$("outform").submit()}

function removeSiteDom(id) {
    var row = $("site" + id);
    if (row) {
        var rowNum = row.rowIndex;
        var table = row.parentNode;
        for (x = 0; x < 4; x++) table.deleteRow(rowNum);
    }
}

function friend(action, name, link) {
    if (action == 'delete') var text = document.createTextNode('removed');
    else var text = document.createTextNode('added');
    var parent = link.parentNode;
    parent.replaceChild(text, link);
    new Ajax.Request('/prefs/friends', {method: 'post', parameters: "ajax=1&action="+action+"&name="+name});
    return false;
}

function hideSite(id) {
    setHideCookie(id);
    removeSiteDom(id);
    new Ajax.Request('/ajax', {parameters: "action=hide&id="+id});
}

function unhideSite(id) {
    setHideCookie(id);
    removeSiteDom(id);
    new Ajax.Request('/ajax', {parameters: "action=unhide&id="+id});
}

function deletetoggle(link, type) {
    var parent = link.parentNode;
    link.blur();

    var areyousure = document.createElement('span');
    areyousure.className = 'error';
    areyousure.innerHTML = 'are you sure? ';
    parent.insertBefore(areyousure, link);

    var slash = document.createTextNode(' / ');
    parent.appendChild(slash);

    var no = document.createElement('a');
    no.ays = areyousure;
    no.className = 'bylink'
    no.innerHTML = 'no';
    no.href='#';
    var oldtext = link.innerHTML
    no.onclick = function() {return delete_no(areyousure, link, slash, no, oldtext)}
    parent.appendChild(no);

    if (type == 'delete') {
        link.onclick = function() {return delete_yes(parent)}
    }
    else {
        link.onclick = function() {return report_yes(areyousure, link, slash, no, oldtext)}
    }

    link.innerHTML = 'yes';

    return false;
}

function delete_yes(form) {
    form.submit();
    return false;
}

function delete_no(areyousure, yeslink, slash, nolink, oldtext) {
    areyousure.parentNode.removeChild(areyousure);
    slash.parentNode.removeChild(slash);
    nolink.parentNode.removeChild(nolink);
    yeslink.innerHTML = oldtext;
    yeslink.onclick = function() {return deletetoggle(yeslink)};
    return false;
};

function report_yes(areyousure, yeslink, slash, nolink) {
    var form = areyousure.parentNode
    areyousure.parentNode.removeChild(areyousure);
    slash.parentNode.removeChild(slash);
    nolink.parentNode.removeChild(nolink);

    var reported = document.createElement('span');
    reported.innerHTML = 'reported';
    form.replaceChild(reported, yeslink);

    new Ajax.Request('/report', {parameters: "id="+form.id.value});
    return false;
}

function mod(id, uc, uh) {
    if (!logged) {
        offset = window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;

        $('cover').style.top = offset + 'px';
        $('loginpopup').style.top = 100 + offset + 'px';
        show("cover", "loginpopup");

        return;
    }

    var up = $("up" + id);
    var down = $("down" + id);
    var dir;

    if (uc && up.className == upm || !uc && down.className == downm) {
        setMod(id, "r");
        setModCookie(id, "r");
        dir = 0;
    }
    else if (uc) {
        setMod(id, "u");
        setModCookie(id, "u");
        dir = 1;
    }
    else if (!uc) {
        setMod(id,"d");
        setModCookie(id, "d");
        dir = -1;
    }

    if (logged) new Ajax.Request('/ajax', {parameters: "action=mod&id="+id+"&dir="+dir+"&uh="+uh});
}

function save(id) {
    var save = $("save" + id);
    save.innerHTML = "saved";
    new Ajax.Request('/ajax', {parameters: "action=save&id=" + id});
}

function unsave(id) {
    setHideCookie(id);
    removeSiteDom(id);
    new Ajax.Request('/ajax', {parameters: "action=unsave&id=" + id});
}

function showcomment(id) {
    show('arrows'+id, 'body'+id, 'little'+id);
    hide('collapse'+id);
    return false;
}

function highlight (id) {
    var last = $("titlerow" + HIGHROW);
    if (last) last.className = "titleNorm";
    var row = $("titlerow" + id);
    if (row) {
        HIGHROW = id;
        row.className = "highRow";
    }
}

function clearTitle(box) {
    box.value = "";
    box.style.color = "black";
    box.onfocus = null;
}

function chkfeedback() {
    var name = $("name").value;
    var nameerr = $("nameerr");
    if(name == "") {
      nameerr.innerHTML = "please enter a name";
      return false;
    }
}

function chksub() {
    $("status").innerHTML = ""
    if ($("url")) {
        var url = $("url")
        var urlerr = $("urlerr");
        var cap = $('captcha');
        var caperr =$('caperr');

        if (url.value == "" || url.style.color=="gray") {
          urlerr.innerHTML = "please enter a url";
          return false;
        }
        else {urlerr.innerHTML = ""};

        if (cap && (cap.value=='' || cap.style.color=='gray')) {
          caperr.innerHTML = 'type the letters';
          return false;
        }
        else if (caperr) {caperr.innerHTML=''}
        
        function fixtitle(r) {
          var t = r.responseText;
          if (t && t.length > 0) {
            var el = $("title");
            el.focus();
            el.value = t;
            $("status").innerHTML = "";
          }
          else {
            $("status").innerHTML = "";
            $("titleerr").innerHTML = "no title could be found";
          }
        }

        $("titleerr").innerHTML = "";
        var title = $("title");
        if ((title.value.length == 0 || title.style.color == "gray") && url.value != "self") {
            $("status").innerHTML = "fetching title...";
            new Ajax.Request('/ajax', {method: "get",
                  parameters: "action=checkurl&url="+encodeURIComponent(url.value),
                  oncomplete: fixtitle});
            return false;
        }
    }

    var to = $("to");
    var from = $("from");
    if (to.value.length > 0 && from.value.length == 0) {
        $("status").innerHTML = "you must enter a from address to send recommendations";
        return false;
    }
}

function chksrbox() {
    sr = $("sr");
    if (sr.value != "none" && !sr.options[sr.selectedIndex].getAttribute("nocross")) {
        $("cross").disabled="";
        $("srlbl").style.color="black"
    }
    else {
        $("cross").disabled="disabled";
        $("srlbl").style.color="gray"
    }
}

function focusother() {$("radother").checked = true;}

function rwt(el, id, name, prefix) {
    if (!prefix) prefix="";
    setClickCookie(id);
    setClick(id);
    el.href=prefix+"/goto?id=" + name;
    el.onmousedown="";
    return true;
}

function reply(id) {show("reply"+id); $("commentreply" + id).focus();}
function editcomment(id) {hide("display"+id, "little"+id); show("edit"+id); $("commentedit"+id).focus()}

function chkcomment(id) {
    ta = $("comment" + id);
    err = $("err" + id);
    if (err.innerHTML != "") err.innerHTML = ""
    if (ta == null) {return false;}
    if (ta.style.color == "gray" || ta.value == "") {
        err.innerHTML = "enter a comment";
        ta.focus();
        return false;
    }
    else if (ta.value.length > 10000) {
        err.innerHTML = "comment is too long";
        ta.focus();
        return false;
    }
    else {
        if (err.innerHTML != "") err.innerHTML = ""
    }
    return true;
}

//cookie setting junk
function createCookie(name,value,days){if (days){var date = new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString();}else expires="";document.cookie=name+"="+value+expires+"; path=/; domain=reddit.com";} 

function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i< ca.length;i++){var c =ca[i];while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}return null;}
