var createDropdowns = function() {
	var dropdownClasses	= ['month', 'day', 'year', 'carrier'];
	var dropdowns		= ['newsletterMonth', 'newsletterDay', 'newsletterYear', 'newsletterCarrier'];
	var labels			= ['Mon', 'Day', 'Year', 'Carrier'];		
	var i = 0;
	var size = dropdowns.length;
	
	for (i = 0; i < size; i++) {
		jQuery('#' + dropdowns[i]).addClass('skinnedDropdown ' + dropdownClasses[i]);
		jQuery('#' + dropdowns[i] + ' .selectLabel').text(labels[i]);
		jQuery('#' + dropdowns[i] + ' select').change(function(){
				
		var nextText = jQuery(this).children('option').get(this.selectedIndex).text;
				
		if (jQuery(this.parentNode).attr('id') == 'newsletterMonth') {
			nextText = nextText.substr(0, 3);
		}
				
		jQuery(this.parentNode).children('.selectLabel').text(nextText);
			});
		}
	
	}

	function setMonthFromNucleus(){	
		if(monthFrmNucleus != null){
			var dtArry = monthFrmNucleus.split("-");
			document.getElementById("inputBirthYear").value = dtArry[0];
			document.getElementById("inputBirthMonth").value = dtArry[1];			
			document.getElementById("inputBirthDay").value = parseInt(dtArry[2]);
			var monthOptions = document.getElementById("inputBirthMonth").options;
			if(monthOptions != null){
				for(var i=0; i<monthOptions.length; i++){
					if(monthOptions[i].value == dtArry[1]){
						document.getElementById("inputBirthMonth").selectedIndex = i;
						selectedMonthValue = monthOptions[i].text;
					} 
				}
			}
		}
	}

	function fetchCarriers(populatorModuleName, serviceName, inparamName, inParamValue, monthFrmNucleus){
		// test
		var str = "/" + populatorModuleName + "/" + serviceName + "/" + inparamName + "/" + inParamValue;
		jQuery.ajax({
	         type: "GET",
	         url: str,
	         dataType: "xml",
	         error: function(){
	    	},   
	         success: function(xml) {
	        	var carrierId = "";
	        	var carrierName = "";
	        	jQuery("[@nodeName=ea:carrier]",xml).each(function(){
					carrierId = jQuery(this).children("[@nodeName=ea:id]").text();
					carrierName = jQuery(this).children("[@nodeName=ea:name]").text();
					jQuery("#selectCarrier").append("<option value='"+carrierId+"' >"+carrierName+"</option>");  
	        	});
	        	setCarrierIdFromNucleus();
	        	setMonthFromNucleus();
	        	createDropdownsAfterCall(monthFrmNucleus);
			}
		});
	}
	
	function fetchRegularCarriers(populatorModuleName, serviceName, inparamName, inParamValue, monthFrmNucleus)
	{
		var aurl = "/populator/all-carriers/cntr/1";
		jQuery.ajax({
	         type: "GET",
	         url: aurl,
	         dataType: "xml",
	         error: function(){
	    	},   
	         success: function(xml) {
	        	var carrierId = "";
	        	var carrierName = "";
	        	jQuery("[@nodeName=ea:carrier]",xml).each(function(){
					carrierId = jQuery(this).children("[@nodeName=ea:id]").text();
					carrierName = jQuery(this).children("[@nodeName=ea:name]").text();
					jQuery("#selectCarrier").append("<option value='"+carrierId+"' >"+carrierName+"</option>");  
	        	});
	        	setCarrierIdFromNucleus();
	        	setMonthFromNucleus();
	        	createDropdownsAfterCall(monthFrmNucleus);
			}
		});
	}

	var createDropdownsAfterCall = function(userDOB) {
		if(userDOB != null && userDOB.length > 0){
			var dropdownClasses	= ['month', 'day', 'year', 'carrier'];
			var dropdowns		= ['newsletterMonth', 'newsletterDay', 'newsletterYear', 'newsletterCarrier'];
			var labels = new Array();
			labels[0] = selectedMonthValue.substr(0, 3);
			labels[1] = document.getElementById("inputBirthDay").value;
			labels[2] = document.getElementById("inputBirthYear").value;
			labels[3] = selectedCarrierValue;
			
			var i = 0;
			var size = dropdowns.length;
			for (i = 0; i < size; i++) {
				jQuery('#' + dropdowns[i]).addClass('skinnedDropdown ' + dropdownClasses[i]);
				jQuery('#' + dropdowns[i] + ' .selectLabel').text(labels[i]);
				jQuery('#' + dropdowns[i] + ' select').change(function(){
					
				var nextText = jQuery(this).children('option').get(this.selectedIndex).text;
					
				if (jQuery(this.parentNode).attr('id') == 'newsletterMonth') {
					nextText = nextText.substr(0, 3);
				}
					
				jQuery(this.parentNode).children('.selectLabel').text(nextText);					
				});
			}
		}
		else{
			createDropdowns();
		}
	}
	
	function isRegisteredForNewsletter(){
			var emailObj = document.getElementById("email");
			if(emailObj.value != ""){
				apos=emailObj.value.indexOf("@");
				dotpos=emailObj.value.lastIndexOf(".");
				if(apos<1||dotpos-apos<2){
					alert("Please Enter your Email");
					emailObj.focus();
					return false;
				}
				var queryStr = "/populator/getalerts/eventId/newsletter/alertParam/" + emailObj.value;
				jQuery.ajax({
			         type: "GET",
			         url: queryStr,
			         dataType: "xml",
			         error: function(){
			        	regFlag = "no";
			        	return false;
			    	},   
			         success: function(xml) {
				         jQuery("[@nodeName=alerts]",xml).each(function(){
				        	 var totalRes = jQuery(this).find("[@nodeName=total_size]").text();
				        	 if(totalRes > 0){
				        		 document.getElementById("signMeUp").checked = true;
				        		 regFlag = "yes";
				        	 }
				        	 else{
				        		 document.getElementById("signMeUp").checked = false;
				        		 regFlag = "no";
				        	 }
			        		 return true;
				         });   
			    	}
				});
			}
	}

	function setCarrierIdFromNucleus(){
		if(carrierIdFrmNucleus != null && carrierIdFrmNucleus != ""){
			var carrierOptions = document.getElementById("selectCarrier").options;
			if(carrierOptions != null)	{
				for(var i=0; i<carrierOptions.length; i++){
					if(carrierOptions[i].value == carrierIdFrmNucleus)	{
						document.getElementById("selectCarrier").selectedIndex = i;
						selectedCarrierValue = carrierOptions[i].text;
					}
				}
			}
		}
	}
	
	function validateNewsForm(){
		var emailObj = document.getElementById("email");
		apos=emailObj.value.indexOf("@")
		dotpos=emailObj.value.lastIndexOf(".")		
		var emailValidation=true;
		var birthDayValidation=true;
		var carrierValidation=true;
		var signMeValidation=true;
		var errorMsg="";

		if(apos<1||dotpos-apos<2){
			emailValidation=false;
			errorMsg="Please Enter your Email";
			emailObj.focus();
		}
		
		var monthObj = document.getElementById("inputBirthMonth");
		if(monthObj.value == -1)	{
			birthDayValidation=false;
			errorMsg +="\nPlease Enter your Birthday";
			monthObj.focus();
		}
		else{
			var month=pad(monthObj.value , 2, "0", 1);
			document.getElementById("bMonth").value =month;
		}
		var dayObj = document.getElementById("inputBirthDay");
		if(dayObj.value == -1)	{
			if(birthDayValidation){
				errorMsg +="\nPlease Enter your Birthday";
				birthDayValidation=false;
			}
			dayObj.focus();
		}
		else{
			var day =pad(dayObj.value , 2, "0", 1);
			document.getElementById("bDate").value = day; 
		}
		var yrObj = document.getElementById("inputBirthYear");
		if(yrObj.value == -1){
			if(birthDayValidation){
				errorMsg +="\nPlease Enter your Birthday";
				birthDayValidation=false;
			}
			yrObj.focus();
		}
		else{
			document.getElementById("bYear").value = yrObj.value;
		}

		if(monthObj.value ==2){
			if(yrObj.value % 4 == 0 && dayObj.value > 29){						
				errorMsg +="\nPlease Enter Correct Birthday";
				birthDayValidation=false;
				dayObj.focus();
			}
			else if(yrObj.value % 4 != 0 && dayObj.value > 28){						
				errorMsg +="\nPlease Enter Correct Birthday";
				birthDayValidation=false;
				dayObj.focus();
			}
		}
		if((monthObj.value == 4 || monthObj.value == 6 || monthObj.value == 9 || monthObj.value == 11) && dayObj.value > 30){
			errorMsg +="\nPlease Enter Correct Birthday";
			birthDayValidation=false;
			dayObj.focus();
		}
		var carrierObj = document.getElementById("selectCarrier");
		if(carrierObj.value == -1) {
			carrierValidation=false;
			errorMsg +="\nPlease choose your Carrier";
			carrierObj.focus();
		}
		else{
			document.getElementById("carrierNm").value = carrierObj.value; 
		}

		if(document.getElementById("signMeUp").checked == false) {
			signMeValidation=false;
			errorMsg +="\nPlease check the Sign Me Up box";
		}

		if(!(emailValidation && birthDayValidation && carrierValidation && signMeValidation)){
			alert(errorMsg);
			return false;
		}
		
		var ErrorText="";
		var startingdate=new Date(Number(yrObj.value)+13, monthObj.value-1, dayObj.value) //Month is 0-11 in JavaScript
		var today=new Date()
		if(today.getTime()-(startingdate.getTime())<0){
			ErrorText += "Sorry, but you do not meet the criteria for registration. \n";
			monthObj.focus();
		}
		if(ErrorText.length >0) {
			alert(ErrorText);
			return false
		} else {
			return true;
		}		
	}

	function temp123(){
		if(validateNewsForm()){
			var str = "/populator/newsAlert/email/" + document.getElementById("email").value + "/ocId/" 
						+ document.getElementById("carrierNm").value + "/dob/"
						+ document.getElementById("bMonth").value + "-" 
						+ document.getElementById("bDate").value + "-"
						+ document.getElementById("bYear").value + "/optin/1";
			jQuery.ajax({
                type: "GET",
                url: str,
                dataType: "xml",
                error: function(){
	        		alert('Error processing request!');
	    		},
                success: function(xml) {
	    			var msg = "";
	            	jQuery("alert",xml).each(function(){
	            		msg = jQuery(this).children("registered").text();	            		 					 
	    				jQuery(".newsletterContainer").empty(); 
						jQuery(".newsletterContainer").html("<br><br><center><b style='color:#fff'>Thanks for signing up for the mobile email newsletter!  Ensure delivery by adding    eamobile@fun.ea.com to your address book!</b></center>")
	            	});
				}
			});
		}
	}

	function pad(str, len, pad, dir) {		 
		if (typeof(len) == "undefined") { var len = 0; }
		if (typeof(pad) == "undefined") { var pad = ' '; }
		if (typeof(dir) == "undefined") { var dir = STR_PAD_RIGHT; }
	 
		if (len + 1 >= str.length) {	 
			switch (dir){	 
				case STR_PAD_LEFT:
					str = Array(len + 1 - str.length).join(pad) + str;
				break;
	 
				case STR_PAD_BOTH:
					var right = Math.ceil((padlen = len - str.length) / 2);
					var left = padlen - right;
					str = Array(left+1).join(pad) + str + Array(right+1).join(pad);
				break;
	 
				default:
					str = str + Array(len + 1 - str.length).join(pad);
				break;	 
			} 	 
		}
	 	return str;
	 } 