HANZO = {};
HANZO.cdweb = function () {
	var provider = "1324";
	var cycleIp = '200.155.11.162';

	var cycleHost = 'http://' + cycleIp + '/hanzo/';

	var mediaHost = 'http://dietaja.uol.com.br/celular/';

	var cdweb_action = 'http://cdweb.hanzo.com.br/cdweb/subscribeRedirectChannel.do';

	var vivo_proxy = cycleHost + 'cdweb_proxy.asp';
	
	var vivoPage = "vivo_dietaja.html";
	var subscribePage = "subscribe.html";
	var successPage = "success.html";
	var errorPage = "error.html";
	var sendTokenPage = "sendToken.html";
	var indexPage = "index.html";
	
	
	var vivoToken = cycleHost + vivoPage;
	var sendToken = mediaHost + sendTokenPage;
	var index = mediaHost + indexPage;
	var subscribe = mediaHost + subscribePage;
	var success = mediaHost + successPage;
	var error = mediaHost + errorPage;
	
	var popx = 430;
	var popy = 170;
	var result = '_self';
	var validateForm;
	var page;
	// Messages
	var NO_MOBILE = "Por favor preencha o número do seu celular com o código de área";
	var ONLY_NUMBERS = "O campo celular só pode conter números!";
	var NO_CHANNEL = "Você deve escolher um canal para assinar.";
	var NO_CARRIER = "Por favor, escolha uma operadora."
	function addOption(el, pair) {
		var op = document.createElement('option');
		op.value = pair[0];
		op.text = pair[1];
		try{
			el.add(op, null);//W3C
		}catch(e){
			el.add(op);//IE only
		}	
	}
	function isVivo() {
		return page === vivoToken;
	}

	function addHidden(el, pair) {
		var ipt;
		  try {// Hack due to IE's bad DOM implementation
		    ipt = document.createElement("<input name="+pair[1]+">");
		  } catch (e) { }
		  if (!ipt || !ipt.name) { // Not in IE, then... Standards
		    ipt = document.createElement('input')
		    ipt.name = pair[1];
		  }
		ipt.type = 'hidden';
		ipt.value = pair[0];
		el.appendChild(ipt);
	}
	function renderForm(hanzo_form) {
		var carrier = hanzo_form.carrier;
	  
	  addHidden(hanzo_form, [1081, "channelId"]);

		
		addOption(carrier, [0, "Sua operadora"]);
  		addOption(carrier, [1006, "Brasil Telecom"]);
  		addOption(carrier, [1010, "Claro"]);
  		addOption(carrier, [1002, "CTBC"]);
  		addOption(carrier, [1001, "Oi"]);
  		addOption(carrier, [1009, "Sercomtel"]);
  		addOption(carrier, [1005, "Tim"]);
		isVivo()?addOption(carrier, [1004, "Vivo"]) : addOption(carrier, [9999, "Vivo"]);
  		addOption(carrier, [1007, "Vivo Minas"]);
	}
	function populateFields(hanzo_form,service,provider,action,sendToken,subscribe,success,error,form_action,form_target){
		hanzo_form.action = form_action;
		hanzo_form.target = form_target;
		hanzo_form.onSubmit = "return false";
		hanzo_form.method = "post";
		
		addHidden(hanzo_form, ["true", "sendDisabled"]);
		addHidden(hanzo_form, [service, "serviceId"]);
		addHidden(hanzo_form, [provider, "providerId"]);
		addHidden(hanzo_form, [action, "action"]);
		addHidden(hanzo_form, [sendToken, "sendTokenURL"]);
		addHidden(hanzo_form, [subscribe, "subscribeURL"]);
		addHidden(hanzo_form, [success, "successURL"]);
		addHidden(hanzo_form, [error, "errorURL"]);
		if (hanzo_form.mobileDefault === undefined) {
			addHidden(hanzo_form, ["ex:2100000001", "mobileDefault"]);
		}
	}
	function validateChannelForm(hanzo_form) {
		var hanzo_val = hanzo_form.mobile.value;
		if (hanzo_val.charAt(0) === '0'){
			hanzo_form.mobile.value = hanzo_val = hanzo_val.substring(1, 11);
		}
		if (hanzo_val === null || hanzo_val.length !== 10) {
		   HANZO.cdweb.displayMessage(NO_MOBILE);
		   hanzo_form.mobile.focus();
		   return false;
		} 
		if (!isInteger(hanzo_val)) {
		   HANZO.cdweb.displayMessage(ONLY_NUMBERS);
		   hanzo_form.mobile.focus();
		   return false;
		}
		if (hanzo_form.channelId.value === '0') {
			HANZO.cdweb.displayMessage(NO_CHANNEL);
			return false;
		}
		return true;
	}
	function validateTokenForm(hanzo_form) {
		var val = hanzo_form.token.value;
		if (val === null || val === "" || val.length !== 5) {
	   		alert("Por favor preencha o campo senha");
	   		hanzo_form.token.focus();
	   	return false;
		} 
	return true;
	}
	function populateHanzoForm(hanzo_form, hanzo_type) {
		switch(hanzo_type){
			case 1: renderForm(hanzo_form); populateFields(hanzo_form,"1",provider,"1",sendToken,subscribe,success,error,cdweb_action,result); break;
			case 2: populateFields(hanzo_form,"1",provider,"2","","",success,error,cdweb_action,result); break;  
			case 4: renderForm(hanzo_form); populateFields(hanzo_form,"1",provider,"1",vivoToken,'',success,error,vivo_proxy,result); break; 
		}
	}
	function initForm(hanzo_form) {
		hanzo_form.mobile.maxLength = hanzo_form.mobileDefault.value.length;
		hanzo_form.mobile.size = hanzo_form.mobileDefault.value.length;
		hanzo_form.mobile.value = hanzo_form.mobileDefault.value;
		disableFields(hanzo_form, true);
		hanzo_form.carrier.selectedIndex = 0;
	}
	function disableFields(hanzo_form, hanzo_b) {
		hanzo_form.mobile.disabled = hanzo_b;
		hanzo_form.sendDisabled.value = hanzo_b;
	}
	function PageQuery(hanzo_q) {
		if (hanzo_q.length > 1) this.hanzo_q = hanzo_q.substring(1, hanzo_q.length);
		else this.hanzo_q = null;
		this.keyValuePairs = new Array();
		if (hanzo_q) {
			for(var hanzo_i = 0; hanzo_i < this.hanzo_q.split("&").length; hanzo_i++) {
				this.keyValuePairs[hanzo_i] = this.hanzo_q.split("&")[hanzo_i];
			}
		}
		
		this.getKeyValuePairs = function() { return this.keyValuePairs; }
		
		this.getValue = function(hanzo_s) {
			for(var hanzo_j = 0; hanzo_j < this.keyValuePairs.length; hanzo_j++) {
				if (this.keyValuePairs[hanzo_j].split("=")[0] == hanzo_s) {
					return this.keyValuePairs[hanzo_j].split("=")[1];
				}
			}
			return false;
		}
		this.getParameters = function() {
			var hanzo_a = new Array(this.getLength());
			for(var hanzo_j = 0; hanzo_j < this.keyValuePairs.length; hanzo_j++) {
				a[hanzo_j] = this.keyValuePairs[hanzo_j].split("=")[0];
			}
			return hanzo_a;
		}
		this.getLength = function() { return this.keyValuePairs.length; }
	}
	function queryString(hanzo_key) {
		var hanzo_page = new PageQuery(window.location.search);
		return unescape(hanzo_page.getValue(hanzo_key));
	}

	function setCarrierAction(carrierId, hanzo_form) {
		var vivoDiv = document.getElementById("mobile_vivo");
		var allDiv = document.getElementById("mobile_all");
		var channelId = hanzo_form.channelId.value;
		hanzo_form.mobile.maxLength = 11;
		if (carrierId === '9999') carrierId = '1004';
		if (carrierId === '0') {
			if (hanzo_form.mobile.value === '') {
				hanzo_form.mobile.maxLength = hanzo_form.mobileDefault.value.length;
				hanzo_form.mobile.size = hanzo_form.mobileDefault.value.length;
				hanzo_form.mobile.value = hanzo_form.mobileDefault.value;
			}
			disableFields(hanzo_form, true);
			
	  } else if (carrierId === '1004') {
			if (isVivo()) {
				disableFields(hanzo_form, false);
				if (hanzo_form.mobile.value === hanzo_form.mobileDefault.value) {
					hanzo_form.mobile.value = "";
					hanzo_form.mobile.maxlength = 11;
				}
			hanzo_form.mobile.focus();
			} else {
				window.location = vivoToken + '?o=' + carrierId + '&m=' + hanzo_form.mobile.value;
				initForm(hanzo_form);
			}
		} else {
			if (isVivo()) {
				window.location = sendToken + '?o=' + carrierId + '&m=' + hanzo_form.mobile.value;
			} else {
				disableFields(hanzo_form, false);
				if (hanzo_form.mobile.value === hanzo_form.mobileDefault.value) {
					hanzo_form.mobile.value = "";
					hanzo_form.mobile.maxlength = 11;
				}
				hanzo_form.mobile.focus();
			}
		}
	}
	//Validating functions
	function isDigit(hanzo_num) {
		if (hanzo_num.length > 1) {
			return false;
		}
		var string = "1234567890";
		if (string.indexOf(hanzo_num) !== -1) {
			return true;
		}
		return false;
	}	
	function isInteger(hanzo_val) {
		for(var hanzo_i=0; hanzo_i<hanzo_val.length; hanzo_i++) {
			if (!isDigit(hanzo_val.charAt(hanzo_i))) {return false;}
		}
		return true;
	}
	function getCarrierFromURL() {
		var parameter = queryString('o');
		if (parameter === 'false') {
			parameter = '0';
		}
		return parameter;
	}
	function getChannelFromURL() {
		var parameter = queryString('c');
		if (parameter === 'false') {
			parameter = '0';
		}
		return parameter;
	}
	function getMobileFromURL() {
		var parameter = queryString('m');
		if (parameter === 'false' || parameter === hanzo_form.mobileDefault.value) {
			parameter = hanzo_form.mobileDefault.value;
		}
		return parameter;
	}
	return {		
		
		sendForm: function (hanzo_form) {
			if (hanzo_form.sendDisabled.value === 'false') {
				if (validateForm(hanzo_form)) {
					if (window.name !== result) 
                window.open('', result, 'toolbar = no, width = ' + popx + ', height = ' + popy);
          			hanzo_form.target = result;
          			hanzo_form.submit();
				}
			}else{
				this.displayMessage(NO_CARRIER);
			}
		},
		
		setCarrierAction: setCarrierAction,//exposing the function
		
		displayAction: function (formName) {
			page = window.location.href.split("?")[0]; 
			if (formName) {
				hanzo_form = document.getElementById(formName);
			}
			if (this.displayMessage === undefined) {//just set the way the messages are going to be shown
				this.displayMessage = function (txt) { alert(txt) };
			}
			if (page === sendToken || page === mediaHost || page === index) {
				populateHanzoForm(hanzo_form, 1);
				initForm(hanzo_form);
				hanzo_form.mobile.value = getMobileFromURL();
				hanzo_form.carrierId.value = getCarrierFromURL();
				setCarrierAction(hanzo_form.carrierId.value, hanzo_form);
				validateForm = validateChannelForm;
			} else if (page === vivoToken) {
				populateHanzoForm(hanzo_form, 4);
				initForm(hanzo_form);
				hanzo_form.mobile.value = getMobileFromURL();
				hanzo_form.carrierId.value = getCarrierFromURL();
				setCarrierAction(hanzo_form.carrierId.value, hanzo_form);
				validateForm = validateChannelForm;
			} else if (page === subscribe) {
				populateHanzoForm(hanzo_form, 2);
				hanzo_form.sendDisabled.value = false;
				validateForm = validateTokenForm;
			} else if (page === error) {
				var hanzo_action = queryString('action').replace("-", "");
				try{
					document.getElementById("hanzo_msg" + hanzo_action).style.display = "block";
				} catch(err){
					document.getElementById("hanzo_msg1000").style.display="block";
				}
			} else if (page === success) {
				var hanzo_channel = queryString('channel');
				if (hanzo_channel != 'false') {
			        if(document.getElementById) { 
							for (var hanzo_i=0; hanzo_i < 10; hanzo_i++)  hanzo_channel = hanzo_channel.replace("+", " "); 	
			    	} 
					var hanzo_keyword = queryString('keyword');
					if (hanzo_keyword != 'false') {
						if (document.getElementById) { 
							for (var hanzo_i=0; hanzo_i < 10; hanzo_i++)  hanzo_keyword = hanzo_keyword.replace("+"," "); 
							document.getElementById("labelKeyword").innerHTML = hanzo_keyword;
							document.getElementById("labelChannel2").innerHTML = hanzo_channel;
						} 
						document.getElementById("hanzo_msg2").style.display = "block";
					} else {
						document.getElementById("labelChannel1").innerHTML = hanzo_channel;
						document.getElementById("hanzo_msg1").style.display = "block";
					}
				}
			
				var hanzo_opt = queryString('opt');
				if (hanzo_opt !== 'false'){
					document.getElementById("hanzo_msg3").style.display = "block";
					document.getElementById("hanzo_msg4").style.display = "block";
				} else {
					document.getElementById("hanzo_msg5").style.display = "block";
				}
			}
		}	
		//	
	};
} ();
