﻿/*
Copyright (c) 2009 Intuto Ltd.
*/

/// <reference name="MicrosoftAjax.js"/>

var webserviceCalls, removeChildren, getProductItem;

removeChildren = function (element) {
	while (element.childNodes[0]) {
		// remove children of the child
		this.removeChildren(element.childNodes[0]);
		// remove the child element
		element.removeChild(element.childNodes[0]);
	}
};

getProductItem = function(course, showAddToCartButtons) {
	var li, imgLink, img, panel, linkP, link, price, toCart, quantity, toCartText, linkText, priceText, quantityText;

	li = document.createElement("li");
	imgLink = document.createElement("a");
	img = document.createElement("img");
	linkP = document.createElement("p");
	link = document.createElement("a");
	price = document.createElement("p");
	quantity = document.createElement("p");
	panel = document.createElement("div");
	panel.setAttribute("class", "productInfo");

	linkText = document.createTextNode(course.Name);
	priceText = document.createTextNode("$" + course.UnitPrice);
	quantityText = document.createTextNode(course.Quantity + " " + course.QuantityType);

	img.src = "../Images/Thumbnail.ashx?Item=" + course.Id;
	img.setAttribute("alt", "");
	imgLink.setAttribute("class", "name");
	imgLink.href = "../Shop/ProductDescription.aspx?Item=" + course.Id;
	link.href = "../Shop/ProductDescription.aspx?Item=" + course.Id;
	imgLink.appendChild(img);
	link.appendChild(linkText);
	linkP.appendChild(link);
	price.appendChild(priceText);
	quantity.appendChild(quantityText);

	panel.appendChild(linkP);
	panel.appendChild(price);
	panel.appendChild(quantity);

	li.appendChild(imgLink);

	if (showAddToCartButtons) {
		toCart = document.createElement("a");
		toCartText = document.createTextNode("Add to Cart");
		toCart.href = "../Shop/AddToShoppingCart.aspx?ItemOption=" + course.ItemQuantityOptionId;
		toCart.setAttribute("class", "button");
		toCart.appendChild(toCartText);
		li.appendChild(toCart);
	}

	li.appendChild(panel);

	return li;
};

webserviceCalls =
{
	loadTopCourses: function(elementId) {
		if (!document.getElementById(elementId)) {
			return;
		}

		KoComm.Pegasus.UI.Website.WebServices.ProductBrowsing.GetTopCourses(
			3,
			function(result, context, methodName) {
				if (!result.length || result.length === 0) {
					return;
				}

				var index, length, list, placeHolder;
				placeHolder = document.getElementById(elementId);
				removeChildren(placeHolder);

				length = result.length;
				list = document.createElement("ul");

				for (index = 0; index < length; index += 1) {
					list.appendChild(getProductItem(result[index], false));
				}

				placeHolder.appendChild(list);
			},
			function(result, context, methodName) {
				// alert(result.get_message());
			}
		);
	},
	loadTopics: function(elementId) {
		if (!document.getElementById(elementId)) {
			return;
		}

		KoComm.Pegasus.UI.Website.WebServices.ProductBrowsing.GetTopics(
			false,
			function(result, context, methodName) {
				if (!result.length || result.length === 0) {
					return;
				}

				var index, length, list, placeHolder;
				placeHolder = document.getElementById(elementId);
				removeChildren(placeHolder);

				length = result.length;
				list = document.createElement("ul");

				for (index = 0; index < length; index += 1) {
					var current, li, link, linkText, span, spanText;

					current = result[index];
					li = document.createElement("li");
					link = document.createElement("a");
					span = document.createElement("span");
					linkText = document.createTextNode(current.Name);
					if (current.ProductCount == 1) {
						spanText = document.createTextNode(("(" + current.ProductCount + " course)"));
					}
					else {
						spanText = document.createTextNode(("(" + current.ProductCount + " courses)"));
					}
					link.href = "../Shop/ProductByTopic.aspx?Topic=" + current.Id;
					span.setAttribute("class", "minor");
					link.appendChild(linkText);
					span.appendChild(spanText);
					li.appendChild(link);
					li.appendChild(span);
					list.appendChild(li);
				}

				placeHolder.appendChild(list);
			},
			function(result, context, methodName) {
				// alert(result.get_message());
			}
		);
	},
	loadTopicsWithCourses: function(topicElementId, courseElementId) {
		if (!document.getElementById(topicElementId) || !document.getElementById(courseElementId)) {
			return;
		}

		KoComm.Pegasus.UI.Website.WebServices.ProductBrowsing.GetTopics(
			true,
			function(result, context, methodName) {
				if (!result.length || result.length === 0) {
					return;
				}
				var topicIndex, courseIndex, length, topicList, topics, items, multiLayer;

				multiLayer = function(wrapperCssClass, innerCssClass, toWrap) {
					var main, inner1, inner2, inner3, inner4;

					main = document.createElement("div");
					inner1 = document.createElement("div");
					inner2 = document.createElement("div");
					inner3 = document.createElement("div");
					inner4 = document.createElement("div");

					main.setAttribute("class", wrapperCssClass);
					inner1.setAttribute("class", innerCssClass);
					inner2.setAttribute("class", innerCssClass);
					inner3.setAttribute("class", innerCssClass);
					inner4.setAttribute("class", innerCssClass);

					inner4.appendChild(toWrap);
					inner3.appendChild(inner4);
					inner2.appendChild(inner3);
					inner1.appendChild(inner2);
					main.appendChild(inner1);

					return main;
				};

				topics = document.getElementById(topicElementId);
				items = document.getElementById(courseElementId);
				removeChildren(topics);
				removeChildren(items);

				length = result.length;
				topicList = document.createElement("ul");

				for (topicIndex = 0; topicIndex < length; topicIndex += 1) {
					var current, li, link, linkText, span, spanText, panel, itemListHead, itemListHeadText, itemList, boxPanel, bh, bb;

					current = result[topicIndex];
					li = document.createElement("li");
					link = document.createElement("a");
					span = document.createElement("span");
					panel = document.createElement("div");
					boxPanel = document.createElement("div");
					itemListHead = document.createElement("h1");
					panel.setAttribute("class", "productListing fc");
					boxPanel.setAttribute("class", "grouped");
					itemList = document.createElement("ul");
					
					itemListHead.id = "topic" + current.Id;
					itemListHeadText = document.createTextNode(current.Name);
					itemListHead.appendChild(itemListHeadText);
					linkText = document.createTextNode(current.Name);
					link.href = "#topic" + current.Id;
					span.setAttribute("class", "minor");
					link.appendChild(linkText);
					li.appendChild(link);
					topicList.appendChild(li);

					if (!current.Products || current.Products.length === 0) {
						continue;
					}

					if (current.Products.length == 1) {
						spanText = document.createTextNode(("(" + current.Products.length + " course)"));
					}
					else {
						spanText = document.createTextNode(("(" + current.Products.length + " courses)"));
					}

					span.appendChild(spanText);
					li.appendChild(span);

					for (courseIndex = 0; courseIndex < current.Products.length; courseIndex += 1) {

						itemList.appendChild(getProductItem(current.Products[courseIndex], true));
					}

					panel.appendChild(itemList);

					bh = multiLayer("box head_light", "inner", itemListHead);
					bb = multiLayer("box body", "inner", panel);
					boxPanel.appendChild(bh);
					boxPanel.appendChild(bb);
					items.appendChild(boxPanel);
				}

				topics.appendChild(topicList);
			},
			function(result, context, methodName) {
				// alert(result.get_message());
			}
		);
	}
};
