scj.global = {};

scj.Share = new Class({
	Implements : [Options, Events],
	options: {
		type: 'standard',
		eventTrigger: 'click'
	},
	locked: false,
	overlay: null, // overlay
	shareType: "",
	errorMsg: "Looks like you forgot something. Please fill out the fields highlighted in red",
	censorMsg: "You may have used inappropriate language. Please re-submit the fields highlighted in red",
	initialize: function (options) {
		this.setOptions(options);
		
		//sIFR.activate(scj.fonts.HelveticaNeue35Thin);
		
		// BIND EVENTS
		var $shareLinks = $$(".share");
		var $shareBoxes = $$(".shareBox");
		$shareLinks.addEvent('mouseenter', function(e) {
			$(this).getParent(".shareBox").addClass("active");							
		});
		
		$shareBoxes.addEvent('mouseleave', function(e) {
			this.removeClass("active");							
		});
		
		var $emailLinks = $$(".shareBox .email");
		$emailLinks.addEvent("click", this.openEmailOverlay);
	},
	openEmailOverlay: function (event) {
		if(event) {
			new Event(event).stop();
			var formtype = "emailShare_thankyou.html";
			if(event.target.id == "navEmail") {
				formtype = "emailShare_header.html";
			} else if(event.target.id == "tinPage") {
			    formtype = "emailShare_tinpage.html";
			}
			scj.global.share.shareType = formtype;
		} else {
			formtype = scj.global.share.shareType;	
		}
		
		scj.global.share.overlay = new scj.PageOverlay("/inc/tinscontest/" + formtype, {
			overlay_bg_opacity: 0.2, 
			source: 1,
			targetHeight: 385,
			targetWidth: 732,
			type: "tinsOverlay",
			fadeContentIn: false
		});
		
	},
	openThankYouOverlay: function() {
		var formtype = "";
		if(scj.global.share.shareType == "emailShare_thankyou.html") {
			formtype = "emailThanks_thankyou.html";
		} else if(scj.global.share.shareType == "emailShare_header.html") {
			formtype = "emailThanks_header.html";
		} else if(scj.global.share.shareType == "emailShare_tinpage.html") {
			formtype = "emailThanks_tinpage.html";
		}
		
		this.overlay = new scj.PageOverlay("/inc/tinscontest/" + formtype, {
			overlay_bg_opacity: 0.2, 
			source: 1,
			targetHeight: 385,
			targetWidth: 635,
			type: "tinsOverlay",
			fadeContentIn: false
		});
	},
	initializeEmailForm: function() {
		var $shareForm = $("shareForm");
		var $self = this;
		if (!Browser.Platform.mac) {
		// SIFR
		/*
		sIFR.replace(scj.fonts.HelveticaNeue35Thin, {
			selector: '.share-form-wrap h2',
			wmode: 'opaque',
			css: [
				'.sIFR-root {leading: -5; font-size: 35px; font-weight: normal; color:#2298d8; background-color: #effafe; width: 1000px;}'
			]
		});
		*/
		}
		// SET UP EVENTS
		var $inputs = $$("input", $shareForm);
		
		$inputs.each(function(itm, index) {
			itm._value = itm.value;
		});
		
		$inputs.addEvent("focus", function(e) {
			var $field = $(this);
			if($field.value == $field._value) {
				$field.value="";		
			}
			$field.removeClass("invalid");
		});
		
		$inputs.addEvent("blur", function(e) {
			var $field = $(this);
			if($field.value == "") {
				$field.value = $field._value;	
			}
		});		

		$("submitBtn").addEvent("click", function(e) {
		    $self.validate(e, $self);
		});
		scj.omniture.fireTag({channel: 'design', pageName: 'share_design', events: 'event11', eVar6: 'share_design'}, {append:{}});
	},
	initializeThankYouScreen: function() {
		/*
		sIFR.replace(scj.fonts.HelveticaNeue35Thin, {
			selector: '.share-form-wrap h2',
			wmode: 'transparent',
			css: [
				'.sIFR-root {leading: -5; font-size: 35px; font-weight: normal; color:#2298d8; width: 1000px;}'
			]
		});
		*/
		$$("#thanksLeft a").addEvent("click", function(event) {
			new Event(event).stop();		
			
			scj.global.share.overlay.destroy();
			scj.global.share.openEmailOverlay();
		});
		
		scj.omniture.fireTag({channel: 'design', pageName: 'share_design_thank_you'}, {append:{}});

	},
	validate: function(event, scope) {
		new Event(event).stop();
		var $self = scope;
		if(!$self.locked) {
			var $errorMsg = $("errorMsg");
			//$errorMsg.setStyles({"visibility": "hidden"});	
			$errorMsg.innerHTML = "";
			
			var $shareForm = $("shareForm");
			var $requiredFields = $$("#shareForm .required");
			var $emailFields = $$("#shareForm .email");
			
			var valid = true;
			// validate required
			$requiredFields.each(function(itm, index) {
				var val = itm.value;
				if(val == "" || val == itm._value) {
					itm.removeClass("invalid");
					itm.addClass("invalid");
					valid = false;
				}
			});
			
			var self = this;
			
			// array for valid emails to serialize as fromEmail value
			var fromEmails = [];
			// validate emails 
			$emailFields.each(function(itm, index) {
				var val = itm.value;
				if(val != "" && val != itm._value) {
					if(!scj.global.validateEmail(val)) {
						itm.removeClass("invalid");
						itm.addClass("invalid");
						valid = false;		
					} else if(itm.hasClass("from")) {
						fromEmails.push(itm.value);		
					}
				}
			});
			
			if(valid === false) {
				//$errorMsg.setStyles({"visibility": "visible"});
				$errorMsg.innerHTML = $self.errorMsg;
				$self.locked = false;
			} else {
				//$errorMsg.setStyles({"visibility": "hidden"});
				$errorMsg.innerHTML = "";
				$self.locked = true;
				
				// bombs away
				var emailService = new Request({url: $("emailServiceURL").value, method: 'get', onSuccess: function(responseText, responseXML) {
					if(responseText.charAt(0).toLowerCase() == 't') {
						// great success
						scj.global.share.overlay.destroy();
						scj.global.share.openThankYouOverlay();
					} else {
						//$errorMsg.setStyles({"visibility": "visible"});
						$errorMsg.innerHTML = $self.censorMsg;
						$("fromName").addClass("invalid");
					}
					$self.locked = false;
				}});
				
				var tinID = "";
				if($("tinId") != null) {
					tinID = "tinId=" + $("tinId").innerHTML;
				}
				emailService.send(tinID+"&fromName="+$("fromName").value+"&fromAddress="+$("fromAddress").value+"&toAddress=" + fromEmails.join(","));
				scj.omniture.trackLink({channel: 'design', prop6: 'share_design_submit', events: 'event12', eVar6: 'share_design_submit'},{linkType: 'o', linkName: 'share_design_submit'});
			}
		}
	}

});

scj.global.validateEmail = function(email_address) {
	email_address = String(email_address).replace(/^\s+|\s+$/g, '');
	
	var email = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/;
	if(!email.test(email_address)) {
		return false;
	}
	
	return true;
}
window.addEvent('domready', function() {
	scj.global.share = new scj.Share();
});
										   
