var Tracking = {
	Begin: function(bookingNo) {
		$("#simplemodal-container").css("height", "");
		Tracking.UI.Clear();
		Tracking.UI.WriteText("Locating your transport - please wait.");

		var proxy = document.createElement("iframe");
		proxy.src = Tracking.URI + bookingNo;
		proxy.id = "ProxyFrame";
		proxy.style.display = "none";
		document.body.appendChild(proxy);
	},
	InProgress: function(hndl) {
		if (hndl) {
			if (hndl.readyState == 4)
				Tracking.Completed(hndl);			
		}
	},
	Completed: function(hndl) {
		Tracking.UI.Clear();

		var xml = hndl.responseXML;
		if (xml) {

			var events = xml.getElementsByTagName("Event");
			if (events.length > 0) {
				Tracking.UI.WriteObject("<h3>Tracking history</h3>");
				for (i = 0; i < events.length; i++) {
					var text = events[i].firstChild.nodeValue;
					if (text != "") 
						Tracking.UI.WriteText(text);
				}

				var agentRefs = xml.getElementsByTagName("Link");
				if (agentRefs.length > 0)
					Tracking.UI.WriteObject("<h3>External tracking</h3>");

				for (i = 0; i < agentRefs.length; i++) {
					var trackingNo = agentRefs[i].getAttribute("url");
					var link = agentRefs[i].firstChild.nodeValue;
					var a = document.createElement("a");

					a.appendChild(document.createTextNode(trackingNo));
					a.href = link;
					a.target = "_blank";

					Tracking.UI.WriteObject(a);
				}
				Tracking.UI.WriteObject("<div style='clear: both; height: 5px;'></div>");

				var p = xml.getElementsByTagName("Post");
				if (p.length == 1) {
					if (agentRefs.length == 0)
						Tracking.UI.WriteObject("<h3>External tracking</h3>");

					p = p[0];
					var f = document.createElement("form");
					f.method = "POST";
					f.target = "_BLANK";
					f.action = p.getAttribute("postUrl");

					var atts = p.getElementsByTagName("Attr");
					for (i = 0; i < atts.length; i++) {
						var inp = document.createElement("input");
						var v = (atts[i].firstChild ? atts[i].firstChild.nodeValue : "");

						inp.type = "hidden";
						inp.name = atts[i].getAttribute("name");
						inp.value = v;

						f.appendChild(inp);
					}

					var ahref = document.createElement("a");
					ahref.appendChild(document.createTextNode(p.getAttribute("url")));
					ahref.href = "#";
					ahref.onclick = function() {f.submit()};
					f.appendChild(ahref);

					Tracking.UI.WriteObject(f);
				}

			} else {
				Tracking.UI.WriteObject("<h3>Unable to locate your transport</h3>");
			}
		} else {
			Tracking.UI.WriteObject("<h3>Unable to locate your transport</h3>");
		}
		$("#ProxyFrame").remove();
	},
	URI: "http://booking.bws.dk/booking/remoteaccess.nsf/Execute?OpenPage&",
	UI: {
		Clear: function() {
			$("#TrackingResult").empty();
		},
		WriteText: function(sText, clName) {
			var div = document.createElement("div");
			div.appendChild(document.createTextNode(sText));

			if (clName)
				div.className = clName;

			Tracking.UI.WriteObject(div);
		},
		WriteObject: function(obj) {
			$("#TrackingResult").append(obj);
		}
	}
};


$(document).ready(function(){
	document.domain = "bws.dk";

	$("#basic-modal-track").append("<div id='TrackingResult'></div><div style='clear: both; height: 5px;'></div>");

	$("input[name='TrackingNo']").keyup(function(e) {
		if (e.keyCode == 13) {
			if (this.value.length > 0)
				Tracking.Begin(this.value);

			return false;
		}			
	});

	$("button[name='ButtonTrack']").click(function() {
		var value = $("input[name='TrackingNo']")[0].value;
		if (value.length > 0)
			Tracking.Begin(value);
	});

});
