var WebBlast = function(){
    this.successFunction = null;
    this.failureFunction = null;
    this.onErrorBeforeSending = null;
    var self = this;
    
}

WebBlast.send = function(messageNode, numberNode, doHideShowExternal){
    function jsonpCallback(data){
        if (!data.error || data.error == null) {
            if (message.hasClass('message_error')) {
                message.removeClass('message_error');
            }
            message.addClass('message_success');
            message.update(data.result);
			
            if (self.successFunction) 
                self.successFunction();
        }
        else {
            if (message.hasClass('message_success')) {
                message.removeClass('message_success');
            }
            message.addClass('message_error');
            message.update(data.error);
            if (self.failureFunction) 
                self.failureFunction();
        }
    }
    function getUrlParam(param) {
        var params = Ext.urlDecode(location.search.substring(1));
        return param ? params[param] : params;
    };
    var self = this;
    
    if(messageNode) { var message = Ext.get(messageNode); }
    else { var message = Ext.get("message"); }
    self.message = message;
    if(numberNode) { var number = Ext.get(numberNode); }
    else  { var number = Ext.get("number"); }
    
    var error = "";
    if (methodName == "optout"){
		var myBody = {
        method  : methodName,
        number  : number.dom.value,
        country : country,
        callback : jsonpCallback
        };
	}
	else{
		var myBody = {
        method  : methodName,
        number  : number.dom.value,
        country : country,
        service : club,
        callback : jsonpCallback
    };
	}
	
    var tagid = getUrlParam("tagid"); 
    if (tagid) { myBody.tagid = tagid; }
    
    if (myBody.number.length <= 8) { error = "Invalid number" }
    if (!myBody.number.match(/^\+?\d+$/)) { error = "Invalid number"; }
    if (message) {
        if(message.hasClass('message_error')){
                message.removeClass('message_error');
            }
            message.addClass('message_success');
            message.update("Sending ..."); 
        if (error) {
            if(message.hasClass('message_success')){
                message.removeClass('message_success');
            }
            message.addClass('message_error');
            message.update(error);
        }
        if(!doHideShowExternal)
            message.show();
    }
    if(error && self.onErrorBeforeSending) { self.onErrorBeforeSending(); }
    if (!error) {
       JSONP.request('http://'+ host +'/app/rpc',{
        callbackKey : 'callback',
        params : myBody,
        callback : jsonpCallback
       });
       return false;
    }
}


