//Copyright (c) 2009, Jerry Leigh.
//All rights reserved.
//
//WebRequest and HTML Objects are based on InfoFind Web Tools (BSD) http://www.omnicognic.com/
//See comments from Original Source of InfoFind

///////////////////////////////////////////
//AJAX Request
///////////////////////////////////////////
WebRequest = new Object();

WebRequest.GetConnection = function() {
	if (typeof(XMLHttpRequest) != "undefined") {
		return new XMLHttpRequest();
	}
	var progIDs = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
	for (var i = 0; i < progIDs.length; i++)
	{
		try {
			var XmlHttp = new ActiveXObject(progIDs[i]);
			return XmlHttp;
		} catch(e) {
		}
	}
    return null;
}

WebRequest.SendData = function(URL, Control) {
	var Connection = WebRequest.GetConnection();
	if (Connection) {
		Connection.onreadystatechange = function() {
			if (Connection.readyState == 4) {
			    if (Connection.responseText == "Valid") {
				    alert("OK, we got ya. We'll let you know more about HoodieBuddie soon!");
				    Control.value = "";
				} else {
				    alert("An error has occurred:\n\n" + Connection.responseText);
				}
			}
		}
		Connection.open("GET", URL, true);
		Connection.send(null);
	}
}

///////////////////////////////////////////
//HTML Helper
///////////////////////////////////////////
HTML = new Object();

HTML.ByID = function(ID) {
	var Element = ID;
	if (typeof(ID) == "string") {
		if (document.getElementById) {
			Element = document.getElementById(ID);
		} else if (document.all) {
			Element = document.all[ID];
		} else if (document.layers) {
			Element = null;
		}
	}
	return Element;
}

HTML.AddEvent = function(Element, Event, Function) {
	Element = HTML.ByID(Element);
	if (Element.addEventListener) {
		Element.addEventListener(Event, Function, false);
	} else if (Element.attachEvent) {
		Element.attachEvent("on" + Event, Function);
	} else {
		var CurrentEvent = Element["on" + Event];
		if (CurrentEvent) {
			Element["on" + Event] = (function(e){CurrentEvent(e); Function(e);});
		} else {
			Element["on" + Event] = Function;
		}
	}
}

HTML.IsLike = function(Text, Pattern, bHandleNewLines) {
	var reg = new RegExp(HTML.GetDbRegExpPattern(Pattern));
	if (bHandleNewLines) Text = Text.replace(/\n/g, "");
	return (reg.test(Text) ? true : false);
}

HTML.GetDbRegExpPattern = function(Pattern) {
	Pattern = Pattern.replace(/\\/g, "\\\\");
	Pattern = Pattern.replace(/\$/g, "[$]");
	Pattern = Pattern.replace(/\./g, "[.]");
	Pattern = Pattern.replace(/\(/g, "\\(");
	Pattern = Pattern.replace(/\)/g, "\\)");
	Pattern = Pattern.replace(/\+/g, "[+]");
	Pattern = Pattern.replace(/\?/g, ".");
	Pattern = Pattern.replace(/\*/g, "%");
	Pattern = Pattern.replace(/%/g, "(.*)");
	Pattern = Pattern.replace(/#/g, "\\d");
	Pattern = Pattern.replace(/\[!/g, "[^");
	Pattern = "^" + Pattern + "$";
	return Pattern;
}

HTML.IsEmail = function(Value) {
	if (typeof(Value) == "string" && Value != "") {
		if (HTML.IsLike(Value, "[a-z0-9]*@[a-z]*.*[a-z]")) {
			var aData = Value.split("@");
			if (aData.length != 2) {
			    return false;
			}
			return true;
		}
	}
	return false;
}

///////////////////////////////////////////
//HoodieBuddie Objects
///////////////////////////////////////////
HoodieBuddie = new Object();

HoodieBuddie.OnLoad = function() {
    HTML.AddEvent("hb_r5_c5", "click", HoodieBuddie.SendEmail);
}

HoodieBuddie.SendEmail = function() {
    Control = HTML.ByID("Email");
    if (!HTML.IsEmail(Control.value)) {
        alert("Please enter a valid email.");
        Control.focus();
        return false;
    }
    WebRequest.SendData("http://www.hoodiebuddie.com/HoodieBuddieEmail.asp?Email=" + Control.value, Control);
}

///////////////////////////////////////////
//Global Code
///////////////////////////////////////////
//HTML.AddEvent(window, "load", HoodieBuddie.OnLoad);