/*
 * (c) 2010 Drop In Media LLC, all rights reserved.
 * Remote Subscriber Web Integration API.
 *
 * Written by: Konstantin Gredeskoul <kig@dropinmedia.com>
 */

if (typeof Dropinmedia == "undefined") { var Dropinmedia = {}; }
if (typeof Dropinmedia.SignupForm == "undefined") { Dropinmedia.SignupForm = {}; }
if (typeof Dropinmedia.PinForm == "undefined") { Dropinmedia.PinForm = {}; }

Dropinmedia.SignupForm.validate = function(event) {
    var form = $('dropinmedia.webapi-init');
    var tandc = form['tandc'];
    if (tandc && !tandc.checked) {
        alert("Please agree to terms and conditions to enable your service.");
        Event.stop(event);
        return;
    }

    var v = form['area'].value + form['n1'].value + form['n2'].value;
    // replace non-digits with nothing
    v = v.replace(/[^\d]+/g, '');
    form['msisdn'].value = v;

    var phone = v;
    if (phone != null && phone.length != 10) {
        alert('Looks like the phone number you entered is missing some digits.');
        Event.stop(event);
        return;
    }

    var carrier = $('carrierId').value;
    if (carrier == undefined || carrier == "") {
        alert('Please make sure to select your wireless carrier.');
        Event.stop(event);
        return;
    }
}

// returns true if the key enetered is numeric, false otherwise
Dropinmedia.ensureNumeric = function(event) {
    if (!event) event = window.event;

    var key = String.fromCharCode(event.keyCode);
    if (key == '(' || key == ')' || key == ' ' || key == '-' || event.shiftKey || event.ctrlKey || event.altKey) {
        Event.stop(event);
    }

    // numbers or backspace
    var k = event.keyCode;
    if ((k >= 48 && k <= 57) || k == 8 || k == 9 || k == 37 || k == 39 || k == 46 ) {
        return;
    }
    
    Event.stop(event);
}

// returns value of a parameter, such as ...?q=hello
// call uriParam('q') returns "hello"
Dropinmedia.uriParam = function(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return results[1];
}

// load observers
Event.observe(window, 'load', function(event) {
    var signupForm = $('dropinmedia.webapi-init');
    if (signupForm) {
        Event.observe(signupForm, 'submit', Dropinmedia.SignupForm.validate);
        Event.observe('area', 'keydown', Dropinmedia.ensureNumeric);
        Event.observe('n1', 'keydown', Dropinmedia.ensureNumeric);
        Event.observe('n2', 'keydown', Dropinmedia.ensureNumeric);
    }
    var pinForm = $('dropinmedia.webapi-verify');
    if (pinForm) {
        // Event.observe(pinForm, 'submit', Dropinmedia.PinForm.validate);
        Event.observe('pin', 'keydown', Dropinmedia.ensureNumeric);
    }
    var error = Dropinmedia.uriParam("error");
    if (error != "undefined" && error != "") {
        alert(unescape(error.replace(/\+/g, " ").replace(/^\s+/g, '')));
    }
})
