function logout() {
    YAHOO.util.Cookie.remove("auth");
    location.href = '/';
}
function mysubmit(formname, method) {
    var myform = eval('document.'+formname);

    var form = new Object();
    var reg_log;

    for(var i=0;i<myform.elements.length;i++) {
        var key = myform.elements[i];
        if(key.type == 'button' || key.type == 'submit') continue;

        if(key.type == 'radio') {
            if(key.checked) {
                reg_log = key.value;
            } else {
                continue;
            }
        }

        form[key.name] = key.value;
    }

    form[".epoch"] = new Date().getTime();
    if(YAHOO.util.Cookie.get("auth"))
        form["auth"] = YAHOO.util.Cookie.get("auth");
        
    var url = '/api/hoster/' + method + '?inserial=json&data=' + encodeURI(JSON.stringify(form));
    var myCallback = {
        success: function(oResponse) {
            var ref = eval("(" + oResponse.responseText + ")");
            return checkback(ref);
        },
        failure: function(oResponse) {
            alert("failed with " + JSON.stringify(oResponse));
        }
    };
    var getFileRequest = YAHOO.util.Connect.asyncRequest('GET', url, myCallback);
    return false;
}
function checkback(ref) {
    if(ref && ref.status) {
        if(ref.status == 'ok' && ref.data && ref.data.auth) {

            var cookie_date = new Date ( );  // current date & time
            cookie_date.setTime ( cookie_date.getTime() + 86400 * 365 );
            document.cookie = 'auth=' + ref.data.auth + '; expires=' + cookie_date.toGMTString() + '; domain=.spack.net;';

            location.href = 'http://my.spack.net/';
        } else if(ref.status == 'ok' && ref.data && (ref.data.domain_id || ref.data.linker_url_added)) {
            location.reload();
        } else if(ref.status == 'error' && ref.error) {
            alert(JSON.stringify(ref));
            if(ref.error.match('password')) {
                document.getElementById('password_error').innerHTML = ref.error;
            } else if(ref.error.match('unknown')) {
                
                var newValue = 'register';
                var radioObj = document.theform.reg_log;
                for(var i = 0; i < radioObj.length; i++) {
                    radioObj[i].checked = false;
                    if(radioObj[i].value == newValue.toString()) {
                        radioObj[i].checked = true;
                    }
                }



                myhide('register');
                document.getElementById('email_error').innerHTML = ref.error + '<br>perhaps to need to register';
            } else if(ref.error.match('taken')) {
                alert('Sorry, that domain is already taken');
            }
        }
    }
}
function getForm() {
    var form = new Object()
    var tmp = unescape(location.search.substring(1,location.search.length))
    tmp = tmp.split(/&/)
    for(var i=0; i<tmp.length; i++){
        var temp=tmp[i].split(/=/)
        form[temp[0]] = temp[1]
    }
    return form;
}
function authBounce(authValue) {
    var bounceHostname = location.hostname;
    bounceHostname = bounceHostname.replace(/^www\./, "");
    var url = '/?auth=' + authValue + '&.epoch=' + (new Date().getTime());
    location.href = url;
}
function handle_auth(formname, reg_log) {
    var myform = eval('document.'+formname);

    var form = new Object();

    for(var i=0;i<myform.elements.length;i++) {
        var key = myform.elements[i];
        if(key.type == 'button' || key.type == 'submit') continue;

        if(key.type == 'radio' || key.type == 'checkbox') {
            if(key.name == 'iagree' && key.checked) {
                form[key.name] = key.value;
            } else if(key.checked) {
                reg_log = key.value;
                form['reg_log'] = reg_log;
                continue;
            } else {
                continue;
            }
        }

        form[key.name] = key.value;
    }

    var url = '/api/spack/' + reg_log + '?.epoch=' + new Date().getTime() + '&inserial=json&data=' + encodeURI(JSON.stringify(form));
    var myCallback = {
        success: function(oResponse) {
    	    var ref = eval("(" + oResponse.responseText + ")");
            return handle_auth_checkback(ref);
        },
        failure: function(o) {alert("failed with " + JSON.stringify(o))} 
    };
    var getFileRequest = YAHOO.util.Connect.asyncRequest('GET', url, myCallback);
    return false;
}
function handle_auth_checkback(ref) {
    if(ref && ref.status) {
        if(ref.status == 'ok' && ref.data && ref.data.auth) {

            var auth = ref.data.auth;
            var domain = location.hostname;

            YAHOO.util.Cookie.remove("auth");
            YAHOO.util.Cookie.set("auth", auth, { expires: new Date("January 12, 2025") }); 

            authBounce(auth);
        } else if(ref.status == 'error' && ref.error) {
            if(ref.error.match('password')) {
                document.getElementById('password_error').innerHTML = ref.error;
            } else if(ref.error.match('username taken :.')) {
                alert('Sorry, that username is already taken :\)');
            } else if(ref.error.match('iagree')) {
                alert('Please agree to the terms of service.');
            } else if(ref.error.match('denied')) {
                alert('Please check your password.');
            } else if(ref.error.match('unknown')) {
                
                var newValue = 'register';
                var radioObj = document.theform.reg_log;
                for(var i = 0; i < radioObj.length; i++) {
                    radioObj[i].checked = false;
                    if(radioObj[i].value == newValue.toString()) {
                        radioObj[i].checked = true;
                    }
                }
                myhide('register');
                document.getElementById('email_error').innerHTML = ref.error + '<br>perhaps to need to register';
            }
        }
    }
}
function signUp(form) {
    var qs=makeForm(form);
    var url='http://zilla.spack.net/api/spack/install?' + qs;
    ajaxGet(url, function(resp){showInfoForm()});
}
function logIn(form) {
    var qs=makeForm(form);
    var url='http://zilla.spack.net/api/spack/login?' + qs;
    ajaxGet(url, function(resp){handleLogIn(resp)});
}
function showInfoForm() {
    document.getElementById('signup_login_div').style.visibility='hidden';
    document.getElementById('add_info_div').style.visibility='visible';
}
function addInfo(form) {
    var url='http://zilla.spack.net/api/spack/install?email='+form.email.value;
    ajaxGet(url, function(resp){showInfoForm()});
}
function makeForm(this_form) {
    var form=new Object();
    for(var i=0;i<this_form.elements.length;i++) {
        var key=this_form.elements[i];
        if(key.type == 'button' || key.type == 'submit') continue;
        form[key.name]=key.value;
    }
    return 'inserial=json&data='+JSON.stringify(form);
}
function handleLogIn(resp) {
    if(resp.auth) {
        SetCookie(resp.cookie_name, resp.cookie_value, 365);
    }
}
function SetCookie(cookieName,cookieValue,nDays) {
    var today = new Date();
    var expire = new Date();
    if (nDays==null || nDays==0) nDays=1;
    expire.setTime(today.getTime() + 3600000*24*nDays);
    document.cookie = cookieName+"="+escape(cookieValue)
        + ";expires="+expire.toGMTString();
}
function base_url() {
    return location.protocol + '//' + location.hostname;
}
