var telescopeTrigger = Class.create();
telescopeTrigger.prototype = {
	url: '/webservice/telescope/proxy.jsp',
	params: {
		c: '',
		msisdn: '0',
		carrier: 0,
		s: 'web',
		rv: 'buy'
	},
	country: null,
	encodedParams: '',
	data: 0,
	message: '',
	txtOptin: true,
	sku: 0,

	initialize: function () {
		var myGlobalHandlers = {
			onCreate: function() {
				$("spinner").style.visibility = "visible";
				Form.disable("frmMobile");
				Element.setOpacity("formBox", .4);
			},

			onComplete: function() {
				if (Ajax.activeRequestCount == 0) {}
			}
		};
		Ajax.Responders.register(myGlobalHandlers);
	},

	setContent: function (cid) {
		this.params.c = cid;
	},

	encodeParams: function () {
		var h = $H(this.params);
		this.encodedParams = encodeURIComponent(h.toQueryString());
	},

	submitTelescopeTrigger: function () {
		// Clean out effects from previous error
		Element.hide("idError");

		// msisdn kept as param and not converted to object to make the rest of the script flow.
		this.params.msisdn = $("msisdn").getValue();
		var phoneNumber = new PhoneNumber(this.params.msisdn);
		
		// get the carrier
		this.params.carrier = $('idCarrier').getValue();
		if (this.params.carrier == '') {
			this.message = "We've detected an error: Please select a carrier.";
			this.displayMessage($("idMsisdnLbl"));
			return;
		}

		// Simple validation #2: Check phone number before it's modified
		phoneNumber.clean();
		this.params.msisdn = phoneNumber.getNumber();
		if (this.params.msisdn == "") { this.message = "You forgot an important step: Please enter your mobile phone number."; this.displayMessage($("idMsisdnLbl")); return; }
		
		this.params.termsandconditions = ($('chkTandC').getValue() ? true : false);
		if (this.params.termsandconditions == false) {
			this.message = "You must accept ther terms and conditions in order to sign-up for WWE Mobile Alerts"; 
			this.displayMessage($("idMsisdnLbl")); 
			return;
		}
			
		if (phoneNumber.isValidUS()) {
			//add 00 for international
			this.params.msisdn = '001' + this.params.msisdn;
			//this.params.carrier = $('idCarrier').getValue();
			this.txtOptin = ($("chkOptin").getValue() ? true : false);
			var showResult = this.showResult.bind(this);
			new Ajax.Request(this.url, { 
					method: 'get', 
					parameters: {msisdn:this.params.msisdn,carrier:this.params.carrier}, 
					onSuccess: function(transport){ showResult(transport) },
					onFailure: function() { 
						this.message = "Sorry, a communications error has occurred.  After several minutes, please try again."; 
						this.displayMessage($("idMsisdnLbl"));
					}
			});
		} else {
			this.message = "We've detected an error: Please enter a valid US mobile phone number.";
			this.displayMessage($("idMsisdnLbl"));
		}
	},

	showResult: function (transport) {
		this.data = eval('('+ transport.responseText.strip() + ')');

		switch (this.data.telescopetrigger.status) {
			case 'OK':
				$("content").style.display = "none";
				$("successContent").style.display = "block";
				this.sku = $("sku").getValue();
				this.createPixTrkImg();
				this.sendAnalyticsEvent();
				break;
			case 'NO_VARS':
			case 'INVALID_MSISDN':
				$("spinner").style.visibility = "hidden";
				Form.enable("frmMobile");
				Element.setOpacity("formBox", 1.0);

				this.message = "We've detected an error: Please enter a valid mobile phone number.";
				this.displayMessage($("idMsisdnLbl"));
				break;
			case 'INVALID_USERNM':
				$("spinner").style.visibility = "hidden";
				Form.enable('frmMobile');
				Element.setOpacity("formBox",1.0);

				this.message = "We've detected an unrecoverable error: Please alert the system administrator.";
				this.displayMessage($("idMsisdnLbl"));
				break;
			case 'MSISDN_LIMIT':
				// Make everything transparent except error message.
				$("spinner").style.visibility = "hidden";
				$("contentWrap").style.background = "#ffffff";   /* IE6 hack to fix distorted bold text when opacity filter used */
				Element.setOpacity("contentWrap", .25);
				Element.setOpacity("formBox", .25);
				this.message = "Your daily limit has been reached. Please come back tomorrow and try again.";
				this.displayMessage();
				break;
			default:
				$("content").style.display = "none";
				$("errorContent").style.display = "block";
		}
	},

	sendAnalyticsEvent: function () {

	},

	displayMessage: function (errorField) {
		if (errorField) { errorField.style.color = "#ff0000"; }
		$("idError").update(this.message);
		$("idError").style.display = "inline";
	},

	createPixTrkImg: function() {
		var txtOpt = (this.txtOptin) ? 1 : 0;
		var randomnumber=Math.floor(Math.random()*11);
		new Insertion.Bottom('successContent','<i' + 'mg sr'+'c="http://gen.wwe.com/trac/gif.php?PIXID=18&Str1='+ this.params.msisdn +'&Str2=FAN&randm='+randomnumber+'" border="0" width="1" height="1"/>');
	}
}