// for GOL only
Object.extend(marketMessagService, {
	managers:{
		constants:{
			// not sure if we need any of these.
			ASSET_PATH:"/Asset_Archive/PLWeb/content/0001/988/315/assets/",
			PRIVACY_POLICY_LINK:"http://gap.eu/privacy-policy/",
			EMAIL_XML_STRING:"?req=<?xml version='1.0' encoding='UTF-8'?><DRRESPONSE><LOGIN>GapUKRegistration</LOGIN><PASSWORD>R1BVbml0ZWRLaW5nZG9tUmVn</PASSWORD><SOURCE>"
		},
		internationalShippingManager:{
			interceptMarket:null,
			nowTime:null,
			timeNowInMilliSecs:null,
			interceptDateRaw:null,
			interceptBrand:null,
			interceptBusinessUnit:null,
			interceptSeenCookieKey:null,
			interceptSeenExpire:null,
			userSetShippingViaGlobeTrotterPopup:null,
			hasUserSetShippingViaGlobeTrotterPopup:null,
			hasUserSeenInPast30Days:null,
			isInterceptDisplayRequired:null,
			linkForMoreInfo:null,
			omniPageNameForSignUp:null,
			countryList:null,
			currencyList:null,
			
		    init:function() {
		     	//set variables
		     	//update: 4.07
		     	var constants = marketMessagService.managers.constants;
		 		var internationalShippingManager = marketMessagService.managers.internationalShippingManager;		
				
				internationalShippingManager.countryList = new Array ();
				// country Name, country Code, currency Code
				internationalShippingManager.countryList[0] = new Array ( "Argentina", "ar", "ars" );				internationalShippingManager.countryList[1] = new Array ( "Bahrain", "bh", "usd" );				internationalShippingManager.countryList[2] = new Array ( "Bangladesh", "bd", "usd" );				internationalShippingManager.countryList[3] = new Array ( "Barbados", "bb", "usd" );				internationalShippingManager.countryList[4] = new Array ( "Bolivia", "bo", "usd" );				internationalShippingManager.countryList[5] = new Array ( "Brazil", "br", "brl" );				internationalShippingManager.countryList[6] = new Array ( "Brunei", "bn", "usd" );				internationalShippingManager.countryList[7] = new Array ( "Cambodia", "kh", "usd" );				internationalShippingManager.countryList[8] = new Array ( "Chile", "cl", "clp" );				internationalShippingManager.countryList[9] = new Array ( "Colombia", "co", "cop" );				internationalShippingManager.countryList[10] = new Array ( "Costa Rica", "cr", "usd" );				internationalShippingManager.countryList[11] = new Array ( "Dominican Republic", "do", "usd" );				internationalShippingManager.countryList[12] = new Array ( "Ecuador", "ec", "usd" );				internationalShippingManager.countryList[13] = new Array ( "Egypt", "eg", "egp" );				internationalShippingManager.countryList[14] = new Array ( "El Salvador", "sv", "usd" );				internationalShippingManager.countryList[15] = new Array ( "Haiti", "ht", "usd" );				internationalShippingManager.countryList[16] = new Array ( "Honduras", "hn", "usd" );				internationalShippingManager.countryList[17] = new Array ( "Hong Kong", "hk", "hkd" );				internationalShippingManager.countryList[18] = new Array ( "India", "in", "inr" );				internationalShippingManager.countryList[19] = new Array ( "Indonesia", "id", "idr" );				//internationalShippingManager.countryList[20] = new Array ( "Israel", "il", "ils" );				internationalShippingManager.countryList[20] = new Array ( "Jamaica", "jm", "usd" );				internationalShippingManager.countryList[21] = new Array ( "Jordan", "jo", "usd" );				internationalShippingManager.countryList[22] = new Array ( "Kuwait", "kw", "kwd" );				internationalShippingManager.countryList[23] = new Array ( "Macau", "mo", "hkd" );				internationalShippingManager.countryList[24] = new Array ( "Mexico", "mx", "mxn" );				internationalShippingManager.countryList[25] = new Array ( "Morocco", "ma", "mad" );				internationalShippingManager.countryList[26] = new Array ( "Nepal", "np", "inr" );				internationalShippingManager.countryList[27] = new Array ( "New Zealand", "nz", "nzd" );				internationalShippingManager.countryList[28] = new Array ( "Nicaragua", "ni", "usd" );				internationalShippingManager.countryList[29] = new Array ( "Oman", "om", "omr" );				internationalShippingManager.countryList[30] = new Array ( "Pakistan", "pk", "usd" );				internationalShippingManager.countryList[31] = new Array ( "Panama", "pa", "usd" );				internationalShippingManager.countryList[32] = new Array ( "Paraguay", "py", "usd" );				internationalShippingManager.countryList[33] = new Array ( "Peru", "pe", "pen" );				internationalShippingManager.countryList[34] = new Array ( "Philippines", "ph", "php" );				internationalShippingManager.countryList[35] = new Array ( "Qatar", "qa", "qar" );				internationalShippingManager.countryList[36] = new Array ( "Saudi Arabia", "sa", "sar" );				internationalShippingManager.countryList[37] = new Array ( "Singapore", "sg", "sgd" );				internationalShippingManager.countryList[38] = new Array ( "South Africa", "za", "zar" );				internationalShippingManager.countryList[39] = new Array ( "Sri Lanka", "lk", "usd" );				internationalShippingManager.countryList[40] = new Array ( "Switzerland", "ch", "chf" );				internationalShippingManager.countryList[41] = new Array ( "Taiwan", "tw", "twd" );				internationalShippingManager.countryList[42] = new Array ( "Thailand", "th", "thb" );				internationalShippingManager.countryList[43] = new Array ( "Ukraine", "ua", "uah" );				internationalShippingManager.countryList[44] = new Array ( "United Arab Emirates", "ae", "aed" );				internationalShippingManager.countryList[45] = new Array ( "United States", "us", "usd" );				internationalShippingManager.countryList[46] = new Array ( "Vietnam", "vn", "usd" );
				
				internationalShippingManager.currencyList = new Array ();
				//currency Name, currency Code
				internationalShippingManager.currencyList[0] = new Array ( "US Dollar (USD)", "usd" );				internationalShippingManager.currencyList[1] = new Array ( "Argentine Peso (ARS)", "ars" );				//internationalShippingManager.currencyList[2] = new Array ( "Australian Dollar (AUD)", "aud" );				internationalShippingManager.currencyList[2] = new Array ( "Brazilian Real (BRL)", "brl" );				internationalShippingManager.currencyList[3] = new Array ( "Chilean Peso (CLP)", "clp" );				internationalShippingManager.currencyList[4] = new Array ( "Colombian Peso (COP)", "cop" );				internationalShippingManager.currencyList[5] = new Array ( "Egyptian Pound (EGP)", "egp" );				internationalShippingManager.currencyList[6] = new Array ( "Hong Kong Dollar (HKD)", "hkd" );				internationalShippingManager.currencyList[7] = new Array ( "Indian Rupee (INR)", "inr" );				internationalShippingManager.currencyList[8] = new Array ( "Indonesian Rupiah (IDR)", "idr" );				//internationalShippingManager.currencyList[10] = new Array ( "Israeli Shekel (ILS)", "ils" );				//internationalShippingManager.currencyList[10] = new Array ( "Korean Won (KRW)", "krw" );				internationalShippingManager.currencyList[9] = new Array ( "Kuwaiti Dinar (KWD)", "kwd" );				internationalShippingManager.currencyList[10] = new Array ( "Mexican Peso (MXN)", "mxn" );				internationalShippingManager.currencyList[11] = new Array ( "Moroccan Dirham (MAD)", "mad" );				internationalShippingManager.currencyList[12] = new Array ( "New Zealand Dollar (NZD)", "nzd" );				internationalShippingManager.currencyList[13] = new Array ( "Omani Rial (OMR)", "omr" );				internationalShippingManager.currencyList[14] = new Array ( "Peruvian Nuevo Sol (PEN)", "pen" );				internationalShippingManager.currencyList[15] = new Array ( "Philippine Peso (PHP)", "php" );				internationalShippingManager.currencyList[16] = new Array ( "Qatari Riyal (QAR)", "qar" );				internationalShippingManager.currencyList[17] = new Array ( "Saudi Riyal (SAR)", "sar" );				internationalShippingManager.currencyList[18] = new Array ( "Singapore Dollar (SGD)", "sgd" );				internationalShippingManager.currencyList[19] = new Array ( "South African Rand (ZAR)", "zar" );				internationalShippingManager.currencyList[20] = new Array ( "Swiss Franc (CHF)", "chf" );				internationalShippingManager.currencyList[21] = new Array ( "New Taiwan Dollar (TWD)", "twd" );				internationalShippingManager.currencyList[22] = new Array ( "Thai Baht (THB)", "thb" );				internationalShippingManager.currencyList[23] = new Array ( "UAE Dirham (AED)", "aed" );				internationalShippingManager.currencyList[24] = new Array ( "Ukrainian Hryvnia (UAH)", "uah" );
	
				if (window["marketMessagService"] != undefined){
					//if window (string is not undefined)
					if (marketMessagService.requestOriginCountryCode){
						internationalShippingManager.interceptMarket = marketMessagService.requestOriginCountryCode;
						internationalShippingManager.interceptMarketLowerCase = internationalShippingManager.interceptMarket.toLowerCase();
						internationalShippingManager.showGlobeTrotterPopup = false;
						var countriesToList = marketMessagService.managers.internationalShippingManager.countryList;
						
						//loop through countries and set showGlobeTrotterPopup.
						for (var index = 0; index < countriesToList.length; ++index) {
							var item = countriesToList[index];
							if (item[1] == internationalShippingManager.interceptMarketLowerCase){
									if (internationalShippingManager.interceptMarketLowerCase == 'us') {
									}
									else {
									internationalShippingManager.showGlobeTrotterPopup = true;
									}								
								}
						}
						
						if (internationalShippingManager.showGlobeTrotterPopup == true){
							internationalShippingManager.view.cookieEvaluator();					
						}
							
					}
				}	
					
		    }, // end init
			
			model:{
				

			},
			
		    view:{  
			    cookieEvaluator:function() {
			    		var constants = marketMessagService.managers.constants;
			 			var internationalShippingManager = marketMessagService.managers.internationalShippingManager;
			    		
			    		//get current date to compare with cookie
						internationalShippingManager.nowTime = new Date();
						internationalShippingManager.timeNowInMilliSecs = internationalShippingManager.nowTime.getTime();
						
						//start forced mode testing
							if (gidLib.getQuerystringParam('interceptDate',true)) {
								internationalShippingManager.interceptDateRaw = gidLib.getQuerystringParam('interceptDate');
								internationalShippingManager.timeNowInMilliSecs = Date.parse(internationalShippingManager.interceptDateRaw);
							}	
						//end forced mode testing
				
						//set brand and business unit vars
				    	internationalShippingManager.interceptBrand = brandConst.BRAND_ID;
						internationalShippingManager.interceptBusinessUnit = internationalShippingManager.interceptBrand+internationalShippingManager.interceptMarket;
							
						//grab cookies	
						internationalShippingManager.globeTrotterPopupSeenCookieKey = "globeTrotterPopupSeen"+internationalShippingManager.interceptBusinessUnit;
						internationalShippingManager.globeTrotterPopupSeenExpire = gidLib.getCookieVar("mktUniversalPersist", internationalShippingManager.globeTrotterPopupSeenCookieKey);
						internationalShippingManager.userSetShippingViaGlobeTrotterPopup = gidLib.getCookieVar("mktUniversalPersist", "userSetShippingViaGlobeTrotterPopup");
						
			    		//check if userSetShippingViaGlobeTrotterPopup exists and if it is true for current brand/origin
						if ((internationalShippingManager.userSetShippingViaGlobeTrotterPopup != "") && (internationalShippingManager.userSetShippingViaGlobeTrotterPopup.indexOf(internationalShippingManager.interceptBusinessUnit) > -1)) {
							internationalShippingManager.hasUserSetShippingViaGlobeTrotterPopup = true;				
						} 
						else {
							internationalShippingManager.hasUserSetShippingViaGlobeTrotterPopup = false;	
						}
					
						//check date expire for globeTrotterPopupSeenExpire
						if ((internationalShippingManager.globeTrotterPopupSeenExpire != "") && (internationalShippingManager.timeNowInMilliSecs < internationalShippingManager.globeTrotterPopupSeenExpire)) {
							internationalShippingManager.hasUserSeenInPast30Days = true;		
						}
						else {
							internationalShippingManager.hasUserSeenInPast30Days = false;
						}
				
					//if did not submit email (current brand and origin)
					//AND 
					//session cookie is expired
					//THEN show popup with the brandOrigin variable
					if ( (internationalShippingManager.hasUserSetShippingViaGlobeTrotterPopup == false) && (internationalShippingManager.hasUserSeenInPast30Days == false) ) {
						internationalShippingManager.isInterceptDisplayRequired = true;				
					}
					
					
				},// end cookieEvaluator
				
				launchInterceptPrivacyPolicy:function() {
			 		var winObj = window.open(marketMessagService.managers.constants.PRIVACY_POLICY_LINK,'Details','width=1000,height=700,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes');
			 		return false;
			 	},
				
				buildDropdowns:function() {
						var constants = marketMessagService.managers.constants;
			 			var internationalShippingManager = marketMessagService.managers.internationalShippingManager;
			 			
			 			var countriesToList = marketMessagService.managers.internationalShippingManager.countryList;
			 			var currenciesToList = marketMessagService.managers.internationalShippingManager.currencyList;
			 			
			 			//loop through countries and build dropdown.
						for (var index = 0; index < countriesToList.length; ++index) {
							var item = countriesToList[index];
							var countryHTML = '<option value="'+item[1]+'" id="'+item[1]+'">'+item[0]+'</option>';
							
							if (document.getElementById('SignUpPopupContent').contentDocument.getElementById('countryShippingDestination')) {
								Element.insert(document.getElementById('SignUpPopupContent').contentDocument.getElementById('countryShippingDestination'), countryHTML);
								
								if (item[1] == internationalShippingManager.interceptMarketLowerCase){
									internationalShippingManager.interceptCurrency = item[2];
									internationalShippingManager.countryItemNumber = index;
									
									//update image and country copy to reflect intercept country
									var flagHTML = '<img src="'+constants.ASSET_PATH+internationalShippingManager.interceptMarket+'.gif"  style="padding:0;" alt="" width="85" height="56" border="0"/>';
									Element.update(document.getElementById('SignUpPopupContent').contentDocument.getElementById('GlobeTrotterCountryFlagLabelSmall'), flagHTML);
						 			Element.update(document.getElementById('SignUpPopupContent').contentDocument.getElementById('GlobeTrotterCountryNameLabel'), item[0]);
									
								}
							}
						}
						
						//loop through currencies and build dropdown.
						for (var index = 0; index < currenciesToList.length; ++index) {
							var item = currenciesToList[index];
							var currencyHTML = '<option value="'+item[1]+'" id="'+item[1]+'">'+item[0]+'</option>';
							
							if (document.getElementById('SignUpPopupContent').contentDocument.getElementById('countryPreferredCurrency')) {
								Element.insert(document.getElementById('SignUpPopupContent').contentDocument.getElementById('countryPreferredCurrency'), currencyHTML);
								
								if (item[1] == internationalShippingManager.interceptCurrency){
									internationalShippingManager.interceptCurrency = item[2];
									internationalShippingManager.currencyItemNumber = index;
								}
							}
						}
						
						// preselect option list
						document.getElementById('SignUpPopupContent').contentDocument.getElementById('countryShippingDestination').options[internationalShippingManager.countryItemNumber].selected = true;
						document.getElementById('SignUpPopupContent').contentDocument.getElementById('countryPreferredCurrency').options[internationalShippingManager.currencyItemNumber].selected = true;
				}	
			}, //end view
				
			controller:{ 	
				processGlobetrotter:function(thisButton) {
					var constants = marketMessagService.managers.constants;
			 		var internationalShippingManager = marketMessagService.managers.internationalShippingManager;	
					
					//email data
					internationalShippingManager.globetrotterRegForm = document.getElementById('SignUpPopupContent').contentDocument.getElementById('globetrotterRegForm');
					internationalShippingManager.interceptEmailField = internationalShippingManager.globetrotterRegForm.em;
					internationalShippingManager.interceptEmailAddress = internationalShippingManager.interceptEmailField.value;
					
					//country data
					internationalShippingManager.countryShippingDestinationField = internationalShippingManager.globetrotterRegForm.countryShippingDestination;
					internationalShippingManager.countryShippingDestinationValue = internationalShippingManager.countryShippingDestinationField.value;
					
					//currency data
					internationalShippingManager.countryPreferredCurrencyField = internationalShippingManager.globetrotterRegForm.countryPreferredCurrency;
					internationalShippingManager.countryPreferredCurrencyValue = internationalShippingManager.countryPreferredCurrencyField.value;
					
					new Ajax.Request('/profile/internationalShippingOptIn.do', {
						 method: 'post',
						 parameters: {
							 currencyCode: internationalShippingManager.countryPreferredCurrencyValue,
							 countryCode: internationalShippingManager.countryShippingDestinationValue
						 },
					
						 onComplete: function() {
							siteNavigation.setCurrentShippingToCountry(internationalShippingManager.countryShippingDestinationValue, internationalShippingManager.countryShippingDestinationName);
							//return gidLib.layeredPopup.closeLayeredPopup();
						}//end onComplete
					 }); //end Ajax.Request
								
								
					// set persist cookie
			       	internationalShippingManager.userSetShippingViaGlobeTrotterPopup = gidLib.getCookieVar("mktUniversalPersist", "userSetShippingViaGlobeTrotterPopup");
			       	if (internationalShippingManager.userSetShippingViaGlobeTrotterPopup == ""){
			       		internationalShippingManager.interceptEmailUpdate = internationalShippingManager.interceptBusinessUnit;
			       	}
			       	else{
			       		internationalShippingManager.interceptEmailUpdate = internationalShippingManager.userSetShippingViaGlobeTrotterPopup+'-'+internationalShippingManager.interceptBusinessUnit;
			       	}
					parent.gidLib.setCookieVar("mktUniversalPersist","userSetShippingViaGlobeTrotterPopup",internationalShippingManager.interceptEmailUpdate);	
					
					// send omniture info for thankYou page
					internationalShippingManager.omniPageNameForSignUp = internationalShippingManager.interceptBrand.toLowerCase()+':'+internationalShippingManager.interceptMarket+':globeTrotterInterceptSubmitted';
			        s.pageName = internationalShippingManager.omniPageNameForSignUp;					s.tl(this,'o', internationalShippingManager.omniPageNameForSignUp);
										
					//email processing					
					internationalShippingManager.goodEmail = internationalShippingManager.interceptEmailAddress.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\.ca)|(\.uk)|(\..{2,2}))$)\b/gi);		
					
					if (internationalShippingManager.goodEmail){
						internationalShippingManager.controller.submitInterceptEmail();
					} 
		
					return gidLib.layeredPopup.closeLayeredPopup();
					
				}, // end processGlobetrotter

				submitInterceptEmail:function() {
					var constants = marketMessagService.managers.constants;
			 		var internationalShippingManager = marketMessagService.managers.internationalShippingManager;
			 
					internationalShippingManager.srcPage = omni.strCurrentPageName;
					internationalShippingManager.emailApiURL = marketMessagService.euMarketEmailRegistrationUrl+constants.EMAIL_XML_STRING+internationalShippingManager.srcPage+"</SOURCE><EMAIL>"+internationalShippingManager.interceptEmailAddress+"</EMAIL><CONFIRMEMAIL>"+internationalShippingManager.interceptEmailAddress+"</CONFIRMEMAIL></DRRESPONSE>";
					
					//update iframe and send email
					document.getElementById('SignUpPopupContent').contentDocument.getElementById("iFrameContent").src = internationalShippingManager.emailApiURL;
					
				}// end submitInterceptEmail
			
			}//end controller	
					
		}//end 	internationalShippingManager
	}//end managers
}); //end obj extend

