var imgLoader = new Image();
imgLoader.src = "/webContent/images/ajax/loader.gif";
var imgYes = new Image();
imgYes.src = "/webContent/images/ajax/yes.png";
imgYes.title = "Geschikt nummer.";
imgYes.className = "yui-tip";

var imgNo = new Image();
imgNo.src = "/webContent/images/ajax/no.png";
imgNo.title = "Momenteel worden alleen KPN, HI of Yildiz nummers ondersteund.";
imgNo.className = "yui-tip";

var lastMsisdn = null;

/**
 * Make an regular expression to see if msisdn is valid.
 */
function isValidMsisdn(msisdn) {
    var reg1 = /^06/;
    var reg2 = /^[0-9]{10}$/;
    return msisdn.match(reg1) && msisdn.match(reg2);
}

/**
 * Check if msisdn is valid,
 * if so, check if msisdn is supported.
 */
function checkMsisdn(msisdn, iconConId, messageConId) {
    if (msisdn!=lastMsisdn) {
        lastMsisdn = msisdn;
        if (isValidMsisdn(msisdn)) {
            setMsisdnMessage(2, iconConId, messageConId);
            doCMRequest(msisdn, iconConId, messageConId);
        } else {
            setMsisdnMessage(-1, iconConId, messageConId);
        }
}
}
/**
 * Make the actual call.
 * Check if msisdn is supported
 */
function doCMRequest(msisdn, iconConId, messageConId) {
    //Ajax Object:
    var AjaxObject = {
        //Success handler:
        handleSuccess:function(o) {
            setMsisdnMessage(parseInt(o.responseText), iconConId, messageConId);
        },
        //Failure handler:
        handleFailure:function(o) {
            alert("Kon het mobiele nummer niet controlleren!");
        },
        //Make request:
        startRequest:function() {
            YAHOO.util.Connect.asyncRequest('POST', '/vm/api/check-msisdn/', callback, 'msisdn='+msisdn);
        }
    };
    //Callback object:
    var callback = {
        success:AjaxObject.handleSuccess,
        failure:AjaxObject.handleFailure,
        scope:AjaxObject
    };    
    AjaxObject.startRequest();
}
/**
 * Set (un)supported msisdn message.
 */
function setMsisdnMessage(response, iconConId, messageConId) {
    var iconContainer = document.getElementById(iconConId);
    var messageContainer = document.getElementById(messageConId);
    messageContainer.innerHTML = "";
    document.getElementById("mySubmit").disabled = true;
    switch(response) {
        case 1:
            iconContainer.innerHTML = "";
            iconContainer.appendChild(imgYes);
            document.getElementById("mySubmit").disabled = false;
        break;
        case 0:
            iconContainer.innerHTML = "";
            iconContainer.appendChild(imgNo);
            messageContainer.innerHTML = imgNo.title;
        break;
        case -1:
            iconContainer.innerHTML = "";
        break;
        default:
            iconContainer.innerHTML = "";
            iconContainer.appendChild(imgLoader);
        break;
    }
    
}
/**
 * Return het eerste "ronde" kwartier
 */
function getMinuteValue() {
    var minuut = new Date().getMinutes();
    var returnValue = "00";
    if (minuut < 10 || minuut>55) returnValue = "15";
    else if (minuut >= 10 && minuut<25) returnValue = "30";
    else if (minuut >= 25 && minuut<40) returnValue = "45";
    else if (minuut >=40  && minuut<55) return value = "00";
    return returnValue;
}
/**
 * Return het huidige uur.
 */
function getHourValue() {
    var datum = new Date();
    var uur = datum.getHours();
    if (datum.getMinutes()>40) {
        uur++;
    }
    return uur;
}

function sendActivationCode(msisdn) {
     //Ajax Object:
    var AjaxObject = {
        //Success handler:
        handleSuccess:function(o) {
            document.getElementById("firstStep").style.display = "none";
            document.getElementById("secondStep").style.display = "";
            document.getElementById("hash").value = o.responseText;
        },
        //Failure handler:
        handleFailure:function(o) {
            alert("Kon activatie code niet verzenden!\n\n"+o.responseText);
        },
        //Make request:
        startRequest:function() {
            YAHOO.util.Connect.asyncRequest('POST', '/vm/api/send-activation-code/', callback, 'msisdn='+msisdn);
        }
    };
    //Callback object:
    var callback = {
        success:AjaxObject.handleSuccess,
        failure:AjaxObject.handleFailure,
        scope:AjaxObject
    };
    AjaxObject.startRequest();
}

var tries = 0;
function sendForm(oForm) {
         //Ajax Object:
    var AjaxObject = {
        //Success handler:
        handleSuccess:function(o) {
            switch(parseInt(o.responseText)) {
                case 1:
                    alert("Bedankt!\n\nJe ontvangt nu binnen een minuut vZine in je voicemail!");
                    location.href=location.href;
                    /*
                     document.getElementById("firstStep").style.display = "";
                     document.getElementById("secondStep").style.display = "none";
                     document.getElementById("form").msisdn.value="";
                     document.getElementById("form").sms.value="";
                     document.getElementById("msisdnIcon").innerHTML="";
                    */
                break;
                case 0:
                    tries++;
                    oForm.activation.value = "";
                    document.getElementById("activationMessage").innerHTML = "De code was verkeerd, probeer het nog eens.";
                break;
            }
        },
        //Failure handler:
        handleFailure:function(o) {
            alert("Kon activatie code niet verzenden!\n\n"+o.responseText);
        },
        //Make request:
        startRequest:function() {
            YAHOO.util.Connect.setForm(oForm);
            YAHOO.util.Connect.asyncRequest('POST', '/vm/api/send-vzine/', callback);
        }
    };
    //Callback object:
    var callback = {
        success:AjaxObject.handleSuccess,
        failure:AjaxObject.handleFailure,
        scope:AjaxObject
    };
    if (tries<3) {
        AjaxObject.startRequest();
    } else {
        document.getElementById("dynamicArea").style.display="none";
        alert("De code was te vaak verkeerd ingevoerd!");
    }
}

function sendVzine(oForm) {
    if (oForm.hash.value.length > 0) {
        sendForm(oForm);
    } else {
        sendActivationCode(oForm.msisdn.value);
    }
    return false;
}

/**
 * Set de time values
 */
function setTimeValues() {
    document.getElementById("minute").value = getMinuteValue();
    document.getElementById("hour").value = getHourValue();
}
