var xmlHttp;
var click_email = 0, click_pass = 0;

function loaded() {
    var holder = new Array();
    var images = ["/images/button-login-hover.png", "/images/button-register-hover.png" ];
    var num = images.length;
    for (var i=0; i<num; i++) {
        holder[i] = new Image();
        holder[i].src = images[i];
    }
}
function clearEmail(obj) {
    if (click_email == 0) {
        obj.value = "";
        click_email = 1;
    }
    return false;
}

function clearPassword(obj) {
    if (click_pass == 0) {
        // Change password field to password type for password entry
        var newfield = obj.cloneNode(true);
        newfield.type  = "password";
        newfield.value = "";
        obj.parentNode.replaceChild(newfield, obj);
        setTimeout("document.login.login_password.focus();", 100);
        click_pass = 1;
    }
    return false;
}


function doLogin() {
    var obj = document.getElementById("loginstatus");
    obj.style.color = "#00cc00";
    obj.innerHTML = "Logging in...";
    submitform("post", "login", "callbackLogin");
}
function callbackLogin() {
    if (xmlHttp.readyState == 4) {
        var obj = document.getElementById("loginstatus");
        if (xmlHttp.status == 200) {
             if (xmlHttp.responseText == 1) {
                 obj.style.color = "#00cc00";
                 obj.innerHTML = "Success, please wait...";
                 document.location = "/";
             } else {
                  obj.style.color = "#ff7777";
                  obj.innerHTML = "Login incorrect.";
             }
        } else {
            obj.style.color = "#ff7777";
            obj.innerHTML = "Error, please try again.";
        }
    }
}

function doRegister() {
    var obj = document.getElementById("registerstatus");
    obj.style.color = "#00cc00";
    obj.innerHTML = "Registering...";
    submitform("post", "register", "callbackRegister");
}
function callbackRegister() {
    if (xmlHttp.readyState == 4) {
        var obj = document.getElementById("registerstatus");
        if (xmlHttp.status == 200) {
             var resp = eval('('+ xmlHttp.responseText +')');
             var show = "";
             var errors = 0;
             for (var i=0; i < resp.resp.length; i++){
                 if (resp.resp[i].status == 0) {
                     obj.style.color = "#ff7777";
                     if (resp.resp[i].msg != "h")
                         show  = show + resp.resp[i].msg + "<br/>";
                     document.getElementById(resp.resp[i].name).style.backgroundColor = "#ffcccc";
                     errors++;
                 } else
                     document.getElementById(resp.resp[i].name).style.backgroundColor = "#e3f6ff";
             }
             if (errors == 0) {
                 document.getElementById("regbox").className = "regsuccess";
                 document.getElementById("regbox").innerHTML = "<br/><br/>Your account has been created!<br/><br/>Please login to start broadcasting, and get details about directing people to your cam stream.";
             } else {
                 obj.innerHTML = show;
             }
        } else {
            obj.style.color = "#ff7777";
            obj.innerHTML = "Error, please try again.";
        }
    }
}


function formvars(formname) {
    var str = "";
    theform = document.forms[formname];
    for (var i=0, thelen=theform.length; i<thelen; i++) {
        if (theform.elements[i].type == "checkbox") {
            if (theform.elements[i].checked == true)
                str = str + theform.elements[i].name + "=" + theform.elements[i].value + "&";
        } else if (theform.elements[i].type == "radio") {
            if (theform.elements[i].checked == true)
                str = str + theform.elements[i].name + "=" + theform.elements[i].value + "&";
        } else
            str = str + theform.elements[i].name + "=" + theform.elements[i].value + "&";
    }
    return str;
}

function submitform(method, formname, callback) {
    var action = document.forms[formname].action;
    var args   = formvars(formname).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');

    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }

    xmlHttp.open(method, action, true);
    if (method.toLowerCase() == "post") {
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", args.length);
    }
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.onreadystatechange = eval(callback);     // Variable function name
    xmlHttp.send(args);
}

