var theElement = null;
var curOpac = 100;
var newOpac = null;
var direction = 'minus';
var s = null;

function beam() {
    var beamMax = 100;
    var beamMin = 30;

    if (theElement == null) {
        theElement = this;
    }

    if (curOpac >= beamMax) {
        direction = 'minus';
    } else if (curOpac <= beamMin) {
        direction = 'bonus';
    }

    if (direction == 'bonus') {
        newOpac = curOpac + 1;
    } else {
        newOpac = curOpac - 1;
    }
    curOpac = newOpac;

    changeOpac(newOpac,theElement.id);

    s = setTimeout('beam()', 10);
}

function stopbeam() {
    clearTimeout(s);
    theElement.style.opacity = 100;
    theElement.style.MozOpacity = 100;
    theElement.style.KhtmlOpacity = 100;
    theElement.style.filter = "alpha(opacity=100)";
    theElement = null;
    curOpac = 100;
    direction = 'minus';
}

function showcard() {
    this.style.display = 'none';
    document.getElementById('card').style.display = 'inline-block';
    document.getElementById('mykey').focus();
}

function hidecard() {
    document.getElementById('card').style.display = 'none';
    document.getElementById('key').style.display = 'inline-block';
}

function doesntFit() {
    var myKey = document.getElementById('mykey');
    myKey.setAttribute('readOnly','readOnly');
    myKey.style.color = 'Red';
    myKey.value = 'this key does not fit';
    setTimeout("opacity('mykey')",1000);
}

function resetKey() {
    var myKey = document.getElementById('mykey');
    myKey.value = '';
    myKey.removeAttribute('readOnly');
    myKey.style.color = '#000000';
    myKey.style.opacity = 100;
    myKey.style.MozOpacity = 100;
    myKey.style.KhtmlOpacity = 100;
    myKey.style.filter = "alpha(opacity=100)";
    myKey.focus();
}

var curTop = null;
var curLeft = null;

function doesFit() {
    /*var card = document.getElementById('card');
    curTop = card.offsetTop;
    curLeft = card.offsetLeft;
    card.style.position = 'absolute';
    card.style.top = curTop + 'px';
    card.style.left = curLeft + 'px';
    card.style.marginTop = 0;
    document.getElementById('head').style.display = 'none';
    slideUp('card',1);*/
    fadeBlank();
}

function slideUp(id,i) {
    if (i > 25) {
        curTop = curTop - 25;
    } else {
        curTop = curTop - i;
    }
    document.getElementById(id).style.top = curTop + 'px';
    i++;
    if (i > 35) {
        //document.getElementById('keyform').submit();
        document.location = 'http://private.x-m-l.org';
        return;
    }
    setTimeout("slideUp('"+id+"',"+i+")",20);
}

window.onload = function(){
    var key = document.getElementById('key');
    key.onmouseover = beam;
    key.onmouseout = stopbeam;
    key.onclick = showcard;

    document.getElementById('closecard').onclick = hidecard;
}

/* Blending */

function opacity(id) {
    var opacStart = 100;
    var opacEnd = 0;
    var speed = 10;
    var timer = 0;

    for(var i = opacStart; i >= opacEnd; i--) {
        setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
        timer++;
    }
}

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";

    if (opacity == 0) {
        resetKey();
    }
}

function fadeBlank() {
    var opacStart = 0;
    var opacEnd = 100;
    var speed = 10;
    var timer = 0;

    document.getElementById('blank').style.height = 100 + '%';
    document.getElementById('blank').style.width = 100 + '%';
    document.getElementById('blank').style.display = 'block';

    for(var i = opacStart; i <= opacEnd; i++) {
        setTimeout("changeOpac(" + i + ",'blank')",(timer * speed));
        timer++;
    }

    setTimeout(function() {
        document.location = 'http://private.x-m-l.org';
    }, 1500);
}

/* AJAX part: */

var xmlHttp;

function tryKey() {
    document.getElementById('mykey').blur();
    var str = document.getElementById('mykey').value;
    if (str.length==0) {
        doesntFit();
        return;
    }
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
        alert ("Je browser ondersteunt dit helaas niet.");
        return;
    }
    var url="trykey.php";
    url=url+"?key="+str;
    url=url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function stateChanged() {
    if (xmlHttp.readyState==4) {
        var response = xmlHttp.responseText;
        if (response == 'fits') {
            doesFit();
        } else {
            doesntFit();
        }
    }
}

function GetXmlHttpObject() {
    var xmlHttp=null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
