(function() {
	if(!this.email_subscription_ignore_cookie) {
		var cookies = {};
		var ar = document.cookie.split(';');
		for(var i in ar) {
			if(ar[i].indexOf('bbEmailSub') != -1) {
				document.write("<div id='" + id + "' class='bbEmailSubscriptionWidget alreadySubscribed'>You're already subscribed.</div>");
				return;
			}
		}
	}

	this.bb_widget_base = this.bb_widget_base || "http://widgets.breitbart.com";
	var head = document.getElementsByTagName("head")[0],
		source = this.email_subscription_source || "",
		id = "emailSubscriptionWidget" + String(Math.random()).replace("0.", ""),
		$input, $cont, $button;
		
	document.write("<div id='" + id + "' class='bbEmailSubscriptionWidget'></div>");

	var immediateLoad = false;
	if(!this.jQuery) {
		var script = document.createElement("script");
		script.src = "http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"; 
		script.onreadystatechange = function() {
			if(!(window.event && script.readyState) || script.readyState == "loaded"){
				if($) $(scriptLoaded);
			}
		}
		if(!script.readyState) script.onload = script.onreadystatechange; // Opera w/o.
		head.appendChild(script);
	} else {
		immediateLoad = true;
	}

	var link = document.createElement("link");
	link.rel = "stylesheet";
	link.href = this.bb_widget_base + "/email-subscription/css/widget-v1.css";
	head.appendChild(link);
	head = link = null;
	
	function validate_email() {
		var good = $input.attr("value").match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i);
		if(good) {
			$cont.addClass("bbEmailSubscriptionWidgetGood");
			$cont.removeClass("bbEmailSubscriptionWidgetError");
		}
		else {
			$cont.removeClass("bbEmailSubscriptionWidgetGood");	
		}
		$button.attr("disabled", good ? "" : "disabled");
		return good;
	}

	var template =
		'<input type="text"/><button type="button">Subscribe</button><div></div>';

	function scriptLoaded() {
		$cont = $('#' + id);
		var check_to;
		$cont.html(template);
		$input = $cont.find("input[type='text']");

		$input.keydown(function(ev) {
			if(check_to) clearTimeout(check_to);
			check_to = setTimeout(function() {
				validate_email();
			}, 250);
		});

		$button = $cont.find("button");
		$button.click(function(ev) {
			if(validate_email()) {
				var email = $input.attr("value");
				$.getJSON(bb_widget_base + "/email_subscription/subscribe?callback=?", {email: email, source: source}, function(json){
					if(json == "OK") {
						$cont.html("");
						$("<span class='bbEmailAddress'/>").text(email).appendTo($cont);
						$cont.append(" will receive Breitbart email alerts.");
						document.cookie = "bbEmailSub=1; path=/; max-age=" + 10 * 60 * 60 * 24 * 365;
					} else if(json.error) {
						$cont.removeClass("bbEmailSubscriptionWidgetGood");
						$cont.addClass("bbEmailSubscriptionWidgetError");
						$cont.find("div").text(json.error);
					}
				});
			} else {
				$cont.addClass("bbEmailSubscriptionWidgetError");
			}
		});
	}
	if(immediateLoad) {
		scriptLoaded();
	}
})();