﻿var portal = function() {
	// Resource

	var resource = function() {
		var text = function(name) {
			var lang = {
				pl: {
					username:	"nazwa użytkownika",
					password:	"hasło",
					search:		"szukana fraza",
					closepopup:	"zamknij okno"
				},
				en: {
					username:	"User name",
					password:	"Password",
					search:		"search",
					closepopup:	"close"
				}
			};


			try {
				var elements = document.getElementsByTagName("html");

				if (elements.length == 1) {
					return lang[elements[0].lang][name];
				}
			}
			catch (error) {
				alert(error);
			}


			return false;
		};




		return {
			text: text
		};
	}();






	// Baner

	var baner = function() {
		var embed = function(image) {
			mksystem.flash.embedSWF("Content/image/portal/flash/baner.swf", 710, 269, {
					image: image
				}
			);
		};




		return {
			embed: embed
		};
	}();






	// Menu

	var menu = function() {
		// Test prepare link

		var option = function(name) {
			var match = (/expander\[(.*?)\]\[(.*?)\]/);


			if (match.test(name)) {
				var test = match.exec(name);


				return {
					parent: test[1], child: test[2]
				};
			}
			else {
				return false;
			}
		};




		// Open handler

		var onopen = function(args) {
			var element = option(args.target.rel);

			if (element) {
				document.getElementById(element.parent).className = "menu-left-item menu-left-item-open";
				document.getElementById(element.child).className = "menu-extends-list";
			}
		};




		// Close handler

		var onclose = function(args) {
			var element = option(args.target.rel);

			if (element) {
				document.getElementById(element.parent).className = "menu-left-item";
				document.getElementById(element.child).className = "menu-extends-list menu-extends-list-close";
			}
		};




		// Embed

		var embed = function(node) {
			var o = {
				autoclose: false, onopen: onopen, onclose: onclose
			};


			mksystem.effect.expander(o).embed(node);
		};




		return {
			embed: embed
		};
	}();






	// Effect

	var effect = function() {
		// Ajax

		var ajax = function(url, handler, node, onwaitdrawing) {
			// Wait cursor

			var wait = function() {
				var child = false;




				var start = function() {
					if (child) {
						return;
					}


					if (onwaitdrawing) {
						child = onwaitdrawing();
					}
					else {
						child = mksystem.dom.createElement("div", {style: {cssFloat: "left", paddingLeft: "12px", paddingRight: "12px", paddingTop: "4px", paddingBottom: "4px"}}, [
								mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "206px", textAlign: "center"}}, [
										mksystem.dom.createElement("img", {src: "Content/image/portal/icon/loader.gif", alt: "loader"}, [
											]
										)
									]
								)
							]
						);
					}


					node.appendChild(child);
				};




				var stop = function() {
					if (child) {
						node.removeChild(child);
					}

					child = false;
				};




				return {
					start: start,
					stop: stop
				};
			}();


			wait.start();


			// Default handler

			var onreadystatechange = function(sender, args) {
				wait.stop();


				switch (sender.status) {
					case 200:
						handler(sender, args);
						break;


					default:
						if (sender.responseText.length != 0) {
							alert(sender.responseText);
						}
						break;
				}
			};


			return mksystem.ajax(url, false, onreadystatechange);
		};






		// Popup window

		var popup = function() {
			var child = false;




			var close = function() {
				if (child) {
					document.getElementsByTagName("body")[0].removeChild(child);
				}


				child = false;


				return false;
			};
			
			
			
			
			var click = function() {
				var position = function() {
					var size = mksystem.effect.page.size();
					var scroll = mksystem.effect.page.scroll();


					var width = size.width;
					var height = size.height -4;
					var top = scroll.y + 45;
					var left = (size.width - 790) / 2;


					return {
						top: top, left: left, width: width, height: height
					};
				}();




				if (child) {
					return;
				}




				// Content

				var content = mksystem.dom.createElement("div", {style: {cssFloat: "left", paddingLeft: "105px", paddingRight: "105px", width: "580px", background: "url('Content/image/portal/background/popup_content.png')"}}, [
					]
				);


				var handler = function(sender, args) {
					content.innerHTML = sender.responseText;
				};


				ajax(
					this.href, handler, content, function() {
						return mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "580px", textAlign: "center"}}, [
								mksystem.dom.createElement("img", {src: "Content/image/portal/icon/loader.gif", alt: "loader"}, [
									]
								)
							]
						);
					}
				);




				// Current window

				child = mksystem.dom.createElement("div", {style: {position: "absolute", width: position.width + "px", height: position.height + "px", textAlign: "left", background: "url('Content/image/portal/background/body_mask.png')"}}, [
						mksystem.dom.createElement("div", {style: {position: "absolute", left: position.left + "px", top: position.top + "px", width: "790px"}}, [
								mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "790px", height: "40px", background: "url('Content/image/portal/background/popup_header.png')"}}, [
									]
								),
								mksystem.dom.createElement("div", {style: {cssFloat: "left", paddingLeft: "45px", paddingRight: "45px", width: "700px", textAlign: "right", background: "url('Content/image/portal/background/popup_content.png')"}}, [
										mksystem.dom.createElement("a", {href: "#", onclick: close}, [
												mksystem.dom.createElement("img", {src: "Content/image/portal/icon/close.gif"}, [
													]
												)
											]
										)
									]
								),
								content, mksystem.dom.createElement("div", {style: {cssFloat: "left", paddingTop: "10px", paddingBottom: "28px", paddingLeft: "105px", paddingRight: "105px", width: "580px", background: "url('Content/image/portal/background/popup_content.png')", textAlign: "center"}}, [
										mksystem.dom.createElement("a", {href: "#", onclick: close, innerHTML: resource.text("closepopup")}, [
											]
										)
									]
								),
								mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "790px", height: "40px", background: "url('Content/image/portal/background/popup_footer.png')"}}, [
									]
								)
							]
						)
					]
				);


				document.getElementsByTagName("body")[0].appendChild(child);


				/*
				mksystem.dom.appendFirst(
					document.getElementsByTagName("body")[0], child
				);
				*/


				return false;
			};




			var embed = function(node) {
				var links = [
				];


				if (node) {
					links = node.getElementsByTagName("a");
				}
				else {
					links = document.getElementsByTagName("a");
				}


				for (var i = 0; i < links.length; i++) {
					var link = links[i];


					if (link.rel == "popup") {
						link.onclick = click;
					}
				}
			};




			return {
				embed: embed
			};
		}();






		// Card
		
		var card = function() {
			var embed = function(node) {
				var target = false;




				var onhidden = function(args) {
					if (target == false) {
						return;
					}


					// Clear target

					mksystem.dom.removeAllChilds(target);


					// Append new container

					var container = mksystem.dom.createElement("ul", {className: "card-list"}, [
						]
					);


					for (var i = 0; i < args.count; i++) {
						container.appendChild(mksystem.dom.createElement("li", {className: (i == args.index ? "card-item card-item-hover" : "card-item")}, [
									mksystem.dom.createElement("a", {className: "card-goto", rel: i, innerHTML: (i + 1), href: "#", onclick: args.click}, [
										]
									)
								]
							)
						);
					}


					target.appendChild(container);
				};




				target = document.getElementById("card");


				if (target) {
					var option = {
						size: 10, onhidden: onhidden
					};


					mksystem.effect.card(option).embed(node);
				}
			};




			return {
				embed: embed
			};
		}();






		// Bubble popup window

		var bubble = function() {
			var child = false;




			var click = function(e) {
				// Get mouse position

				var position = function() {
					var posx = 0;
					var posy = 0;


					if (e == null) {
						e = window.event;
					}


					if (e.pageX || e.pageY) {
						posx = e.pageX;
						posy = e.pageY;
					}
					else {
						if (e.clientX || e.clientY) {
							if (document.documentElement.scrollTop) {
								posx = e.clientX + document.documentElement.scrollLeft;
								posy = e.clientY + document.documentElement.scrollTop;
							}
							else {
								posx = e.clientX + document.body.scrollLeft;
								posy = e.clientY + document.body.scrollTop;
							}
						}
					}


					return {
						x: (posx + 20),
						y: (posy - 10)
					};


					/*
					var pX = (e ? e.pageX : event.clientX + document.body.scrollLeft);
					var pY = (e ? e.pageY : event.clientY + document.body.scrollTop);


					if (pX < 0) {
						pX = 0;
					}


					if (pY < 0) {
						pY = 0;
					}


					return {
						x: (pX + 20),
						y: (pY - 10)
					};
					*/
				}();




				if (child) {
					document.getElementsByTagName("body")[0].removeChild(child);
				}


				// Content

				var content = mksystem.dom.createElement("div", {style: {cssFloat: "left", paddingLeft: "12px", paddingRight: "5px", backgroundImage: "url('Content/image/portal/background/bubble_content.png')", textAlign: "left"}}, [
					]
				);


				var handler = function(sender, args) {
					content.appendChild(
						mksystem.dom.createElement("div", {style: {cssFloat: "left", paddingLeft: "16px", paddingRight: "16px"}}, [
								mksystem.dom.createElement("div", {innerHTML: sender.responseText, style: {cssFloat: "left", width: "198px"}}, [
									]
								)
							]
						)
					);
				};


				ajax(this.href, handler, content);


				// Container

				child = mksystem.dom.createElement("div", {style: {position: "absolute", zIndex: "100", top: position.y + "px", left: position.x + "px", width: "247px"}}, [
						mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "247px", height: "30px", backgroundImage: "url('Content/image/portal/background/bubble_header.png')"}}, [
							]
						),
						content, mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "247px", height: "10px", backgroundImage: "url('Content/image/portal/background/bubble_footer.png')"}}, [
							]
						)
					]
				);


				document.getElementsByTagName("body")[0].appendChild(child);


				return false;
			};



				
			var embed = function(node) {
				var links = [
				];


				if (node) {
					links = node.getElementsByTagName("a");
				}
				else {
					links = document.getElementsByTagName("a");
				}


				for (var i = 0; i < links.length; i++) {
					var link = links[i];


					if (link.rel == "bubble") {
						link.onclick = click;
					}
				}
			};




			return {
				embed: embed
			};
		}();






		// Search

		var search = function() {
			var element = document.getElementsByName("search")[0];




			element.onblur = function() {
				if (this.value == "") {
					this.value = resource.text("search");
				}
			};


			element.onfocus = function() {
				if (this.value == resource.text("search")) {
					this.value = "";
				}
			}
		};






		// Logon

		var logon = function() {
			var usernames = document.getElementsByName("username");
			var passwords = document.getElementsByName("password");


			if (usernames.length == 1 && passwords.length == 1) {
				var username = usernames[0];
				var password = passwords[0];




				try {
					password.type = "text";
				}
				catch (error) {
				}




				username.onblur = function() {
					if (this.value == "") {
						this.value = resource.text("username");
					}
				};


				username.onfocus = function() {
					if (this.value == resource.text("username")) {
						this.value = "";
					}
				}


				password.onblur = function() {
					if (this.value == "") {
						try {
							this.type = "text";
						}
						catch (error) {
						}


						this.value = resource.text("password");
					}
				};


				password.onfocus = function() {
					if (this.value == resource.text("password")) {
						try {
							this.type = "password";
						}
						catch (error) {
						}


						this.value = "";
					}
				}
			}
		};






		return {
			card: card,
			bubble: bubble,
			search: search,
			logon: logon,
			ajax: ajax,
			popup: popup
		};
	}();






	var gasstation = function() {
		var embed = function(node, location) {
			// On success

			var handler = function(sender, args) {
				node.innerHTML = sender.responseText;
			};




			// On wait

			var waitdrawing = function() {
				return mksystem.dom.createElement("div", {style: {cssFloat: "left", width: "580px", textAlign: "center"}}, [
					]
				);
			};




			// AJAX

			var url = "/Gasstation-Partial";


			switch (location) {
				case 1:
					url = "/Gasstation-Partial-1";
					break;

				case 2:
					url = "/Gasstation-Partial-2";
					break;
			};


			effect.ajax(
				url, handler, node, waitdrawing
			);
		};




		return {
			embed: embed
		};
	}();






	// Account control

	var account = function(node) {
		var action = false;
		var panel = false;




		// Async handler

		action = function(sender, args) {
			effect.ajax("Account", panel, node);
		};
		
		
		
		
		// Async handler

		panel = function(sender, args) {
			node.innerHTML = sender.responseText;




			// Method to link AJAX send

			/*
			var onclick = function() {
				return effect.ajax(this.href, action, node);
			};


			var links = node.getElementsByTagName("a");

			for (var i = 0; i < links.length; i++) {
				switch (links[i].rel) {
					case "account[logout]": links[i].onclick = onclick; break;
				}
			}
			*/




			// Include effec

			effect.logon();
		};




		effect.ajax("Account", panel, node);
	};






	// News

	var news = function(node) {
		var handler = function(sender, args) {
			node.innerHTML = sender.responseText;
		};


		effect.ajax("News-Shortcut", handler, node);
	};






	return {
		gasstation: gasstation,
		baner: baner,
		effect: effect,
		account: account,
		menu: menu,
		news: news
	};
}();

