ThomasDux = function() {}
ThomasDux.Init = function() {
	var m = new ThomasDux.Menu(document.getElementById('menu-root'), 'mouseover');
	NG.addEventListener(document.body, 'mouseover', function() { m.unselect(); });

	NG.addEventListener(document.getElementById('search'), 'focus', function(e) { this.value = ''; this.style.textAlign='left';  });
	NG.addEventListener(document.getElementById('search'), 'blur', function(e) { if (this.value == '') { this.style.textAlign='center'; this.value = 'Search Here'; }  });
	NG.addEventListener(document.getElementById('store'), 'change', function(e) { document.getElementById('storechanger-op').value='changestore'; this.form.submit();  });
	if (NG.Photogallery) {
		var f = NG.Photogallery.open;
		NG.Photogallery.open = function(index) {
			f.apply(this, [index]);
			this.popup.root.firstChild.removeChild(this.popup.root.firstChild.childNodes[2]);
			var nav = this.popup.root.childNodes[1].firstChild;
			nav.childNodes[1].innerHTML = '&nbsp;';
			nav.childNodes[2].innerHTML = '';
			nav.childNodes[3].innerHTML = '';
			nav.childNodes[4].innerHTML = '&nbsp;';
		}
		var g = NG.Photogallery.updatePhoto;
		NG.Photogallery.updatePhoto = function(request, index) {
			g.apply(this, [request, index]);
			var photo = (request.responseXML.documentElement.firstChild.nodeType == 3 ? request.responseXML.documentElement.firstChild.nextSibling : request.responseXML.documentElement.firstChild)
			this.popup.root.firstChild.childNodes[1].innerHTML = photo.getAttribute('caption');
			var imgholder = NG.getElementsByClassName(this.popup.root.lastChild, 'imgholder')[0];
		}
		var h = NG.Photogallery.updatePage;
		NG.Photogallery.updatePage = function(request) {
			h.apply(this, [request]);
			var page = parseInt(request.responseXML.documentElement.getElementsByTagName('page')[0].getAttribute('page'));
			var nav = NG.getElementsByClassName(this.node, 'navpage-current')[0];
			nav.innerHTML = (page + 1);
			NG.delClass(nav, 'navpage-selected');
			NG.delClass(NG.getElementsByClassName(this.node, 'navpage-total')[0], 'navpage-selected');
		}
	}
	
	if (NG.Catalogue) {
		var f = NG.Catalogue.install;
		NG.Catalogue.install = function(node) {
			f.apply(this, [node]);
			var tmp = this;
			var links = node.getElementsByTagName('a');
			for (var i = 0; i < links.length; i++) {
				if (NG.hasClass(links[i], 'email')) {
					NG.addEventListener(links[i],'click', function() { tmp.sendToAFriend(); });
				}
			}
		}
		NG.Catalogue.sendToAFriend = function() {
			var url = NGUrl.thisRequest();
			url.addArgument('action','sendtoafriend',true);
			
			var objects = document.getElementById('main');
			var hiding = new Array();
												
			if (!NG.hasClass(objects, 'hide')) {					
				NG.addClass(objects, 'hide');
				hiding.push(objects);
			}

			new ThomasDux.Popup('<iframe src="' + url.toString() + '" scrolling="no" frameborder="0"></iframe>', hiding);
		}
	}
}


ThomasDux.Menu = function(node, eventType, depth) {
	this.depth = (arguments.length < 3 ? 0 : depth);
	this.eventType = eventType;
	this.selectedItem = null;
	this.items = [];
	this.getNode = function () { return node; }
	if (!node) return;
	var c = node.firstChild;
 	while (c) {
 		if (c.nodeName == 'LI') this.items[this.items.length] = new ThomasDux.Menu.Item(c, this);
		c = c.nextSibling;
 	}
	NG.addEventListener(node, eventType, NG.stopPropagation);
}

ThomasDux.Menu.zViolatorSize = 0;
ThomasDux.Menu.hideZviolations = function () {
	ThomasDux.Menu.zViolatorSize++;
	if (ThomasDux.Menu.zViolatorSize > 1) return;
	var o = document.getElementsByTagName('object');
	for (var i = 0; i < o.length; i++) {
		o[i].style.visibility = 'hidden';
	}
	var o = document.getElementsByTagName('embed');
	for (var i = 0; i < o.length; i++) {
		o[i].style.visibility = 'hidden';
	}
}

ThomasDux.Menu.showZviolations = function () {
	ThomasDux.Menu.zViolatorSize--;
	if (ThomasDux.Menu.zViolatorSize > 0) return;
	var o = document.getElementsByTagName('object');
	for (var i = 0; i < o.length; i++) {
		o[i].style.visibility = 'visible';
	}
	var o = document.getElementsByTagName('embed');
	for (var i = 0; i < o.length; i++) {
		o[i].style.visibility = 'visible';
	}
}

ThomasDux.Menu.prototype.select = function(item) {
	    ThomasDux.Menu.hideZviolations();
	if (this.selectedItem != item) {
 		if (this.selectedItem) this.selectedItem.unselect(this.depth);
		this.selectedItem = item;
		item.select();
	}
}

ThomasDux.Menu.prototype.unselect = function() {
	  ThomasDux.Menu.showZviolations();
	this.selectedItem = null;
	for (var i = 0; i < this.items.length; i++) {
 		this.items[i].unselect(0);
  		NG.delClass(this.getNode(), 'selected');
	}
}

ThomasDux.Menu.Item = function(node, menu) {
	this.getNode = function () { return node; }
	this.getMenu = function () { return menu; }
	this.submenu = null;
	var s = node.getElementsByTagName('ul');
	if (s.length > 0) this.submenu = new ThomasDux.Menu(s[0], menu.eventType, menu.depth+1);
	var t = this;
	NG.addEventListener(node, menu.eventType, function (e) { menu.select(t); NG.stopPropagation(e); });
}

ThomasDux.Menu.Item.prototype.select = function() {
	var n = this.getNode();
	if (n) NG.addClass(n, 'selected');
	if (this.submenu) {
		var s = this.submenu.getNode();
		if (s) {
			var p = NG.getPagePos(n);
 			NG.addClass(s, 'selected');
		}
	}
}


ThomasDux.Menu.Item.prototype.unselect = function(depth) {
	var n = this.getNode();
	// this cannot collapse
	if (depth != 1)	 {
	 	if (n) NG.delClass(n, 'selected');
	}
 	if (this.submenu) this.submenu.unselect();
}

ThomasDux.AddFloatEditor = function() {
	if (typeof NGCMSLoader != 'undefined') {
		var f = NGCMSLoader._start;
		NGCMSLoader._start = function() {
			var g = NGCMS.load;
			NGCMS.load = function(req) {
				g(req);
				NG.addEventListener(NGCMS.getSideNode(), 'load', function() {
					var doc = NGCMS.getSideNode().contentWindow.document;
					var meta = doc.getElementById('meta-form');
					var div = doc.createElement('div');
					div.innerHTML = '<input type="button" value="Image Placement Mode" />';
					NG.addEventListener(div.lastChild, 'click', function() { 
						var url = NGUrl.thisRequest();
						url.path = '/admin/floateditor.html';
						url.addArgument('op', 'op_open', true);
						url.addArgument('pk[id]', NGCMS.id, true);
						url.redirect();
					});
					meta.appendChild(div);
				});
			}
			f();
		}
	}
}
ThomasDux.ChooseStore = function(prompt) {
	if (prompt == null) prompt = 'Please select a store:';
	this.shade = new NG.Shade();
	this.node = document.createElement('div');
	NG.addClass(this.node, 'floating-storechanger');
	NG.addClass(this.node, 'floating');
	this.node.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild, 'inner');
	this.node.appendChild(document.createElement('form'));
	var url = NGUrl.thisRequest();
	this.node.lastChild.method = 'post';
	this.node.lastChild.action = url.toString();
	this.node.lastChild.innerHTML = prompt + '<input type="hidden" name="siteop" value="changestore" />';
	var chooser = document.createElement('select');
	chooser.name = 'StoreID';
	NG.addEventListener(chooser, 'change', function() { this.form.submit(); });
	this.node.lastChild.appendChild(chooser);
	var o = document.createElement('option');
	o.innerHTML = '(Select)';
	o.value = 0;
	this.node.lastChild.lastChild.appendChild(o);

	var tmp = this;
	var url = NGUrl.thisRequest();
	url.addArgument('action','storexml',true);
	var req = new NG.AJAX(url, function (data) { tmp.Populate(data); });
	req.send();
}
ThomasDux.ChooseStore.prototype.Populate = function(request) {
	var stores = request.responseXML.documentElement.getElementsByTagName('store');
	for (var i = 0; i < stores.length; i++) {
		var o = document.createElement('option');
		o.innerHTML = stores[i].getAttribute('name');
		o.value = stores[i].getAttribute('id');
		this.node.lastChild.lastChild.appendChild(o);
	}
	document.body.appendChild(this.node);
	this.node.style.right = Math.max(0, Math.floor((document.body.clientWidth  - this.node.clientWidth)  / 2)) + 'px';
}
ThomasDux.Popup = function(xhtml, hide) {
	this.shade = new NG.Shade();
	this.node = document.createElement('div');
	this.hide = hide;
	var tmp = this;
	NG.addClass(this.node, 'popup');
	NG.addClass(this.node, 'floating');
	this.node.appendChild(document.createElement('img'));
	this.node.lastChild.src = '/designs/thomasdux09/magnet-td.png'
	this.node.lastChild.style.left = '-40px';
	this.node.lastChild.style.top = '265px';
	NG.addClass(this.node.lastChild, 'floating');
	this.node.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild, 'inner');

	this.node.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild, 'scroll-content');
	this.node.lastChild.innerHTML = xhtml;
//	this.node.lastChild.innerHTML = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec tristique purus sed diam fermentum aliquam. Nullam quis lorem at neque tincidunt commodo. Cras semper bibendum mollis. Vivamus consequat felis tincidunt ipsum tempus id dictum augue interdum. Morbi felis dui, consequat non condimentum nec, volutpat id turpis. In hac habitasse platea dictumst. Curabitur dictum hendrerit vestibulum. Pellentesque nec sem purus, vitae posuere risus. Cras gravida, massa id tristique imperdiet, purus leo suscipit enim, eu tempor dolor nisi ac odio. Sed in augue dolor. Vivamus eget lorem neque, nec pretium massa. Nulla sit amet pulvinar erat. Sed ultricies tristique enim, ullamcorper pellentesque ligula vulputate semper. Suspendisse quis commodo est. Aliquam et sapien nisi. Nullam sit amet tortor dui. Nunc dapibus fringilla varius. Duis lectus massa, volutpat a bibendum consectetur, sodales sed velit. Mauris facilisis, ipsum blandit euismod molestie, diam leo posuere neque, sed porttitor ipsum magna eget neque.In ut adipiscing mi. Integer rhoncus pharetra massa a tempor. Aenean nunc purus, ullamcorper et facilisis non, rhoncus vel diam. Etiam ante velit, aliquam quis consectetur congue, cursus vel libero. Duis cursus turpis quis tortor vehicula rutrum at id nisi. Vivamus iaculis, arcu at mattis convallis, nulla tellus posuere erat, nec tempus sem lacus sed nisl. Quisque tincidunt tempus mi, eu faucibus diam blandit vel. Nulla molestie elementum tortor vel cursus. Duis varius dapibus varius. Sed at magna mauris, sed consequat lectus. Donec sed risus orci, a commodo est. Sed imperdiet justo quis ligula vulputate varius. Nullam a purus metus, et scelerisque erat. Donec fringilla quam ut augue fermentum tincidunt sit amet sit amet quam. Donec non lectus dui, vitae rutrum justo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque tempor lectus placerat felis consectetur placerat. Nulla nunc libero, volutpat in malesuada et, egestas in est. Aliquam erat volutpat. Cras sit amet augue nec augue molestie facilisis non eget enim.Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla facilisi. Nulla nec mauris id libero venenatis commodo ut eget neque. Nunc eu elit eu ante suscipit porttitor in at metus. Etiam laoreet egestas ipsum sed mollis. Praesent eros urna, tincidunt et sodales id, facilisis vitae dolor. Cras et vestibulum tellus. In cursus varius malesuada. Vivamus arcu risus, laoreet eu consectetur at, pulvinar et nibh. Curabitur ornare ultrices leo a sodales. Nulla et lectus justo, in placerat enim. Cras magna urna, vehicula et eleifend et, vehicula in arcu. Mauris dictum tellus in enim faucibus sagittis venenatis felis scelerisque. Fusce faucibus, lorem a commodo sagittis, libero erat dapibus lacus, eu gravida augue lectus venenatis tortor. Nulla fringilla libero sed erat tincidunt convallis. Cras sed turpis nibh. Etiam lacinia molestie faucibus. Suspendisse sagittis euismod quam, in placerat lacus pretium in. Mauris iaculis ipsum non tellus venenatis aliquam.Integer eu lectus non velit iaculis gravida. Sed congue iaculis sem, eget suscipit nunc tristique eget. Phasellus euismod velit vitae eros ultrices semper. Pellentesque ut nisi justo, vitae iaculis dui. Aenean imperdiet euismod augue a placerat. Etiam sit amet dui nec erat facilisis pellentesque. Cras non nibh ligula, tincidunt auctor enim. Vivamus pharetra fermentum est. Mauris pellentesque augue at lacus rutrum ornare. Praesent dolor nisi, dignissim ut dignissim id, bibendum vel sapien. Aliquam aliquam laoreet eros, sit amet aliquam orci molestie sit amet. Pellentesque tellus neque, egestas sed lobortis a, scelerisque vel mi. Vestibulum convallis posuere turpis. In hac habitasse platea dictumst. Aliquam sed lectus vitae mauris hendrerit gravida sit amet quis leo. In quis lacus felis. Ut scelerisque elit non magna consectetur ut iaculis purus elementum. Proin suscipit venenatis consectetur. Proin elementum, arcu eget consequat volutpat, enim felis cursus tellus, laoreet auctor enim odio in justo.';
	this.node.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild, 'scroll-bar');
	this.node.lastChild.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild.lastChild, 'arrow-up');
	this.node.lastChild.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild.lastChild, 'arrow-down');
	this.node.lastChild.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild.lastChild, 'scroll-nodule');
	this.scroller = new NG.Scroller();
	this.scroller.Enable(this.node.lastChild.previousSibling, this.node.lastChild, this.node.lastChild.lastChild);
	this.originalScroller = document.NGDefaultScroller;
	document.NGDefaultScroller = this.scroller;

	this.node.appendChild(document.createElement('div'));
	NG.addClass(this.node.lastChild, 'close');
	NG.addEventListener(this.node.lastChild, 'click', function() { tmp.close(); });

	document.body.appendChild(this.node);
	this.node.style.right = Math.max(0, Math.floor((document.body.clientWidth  - this.node.clientWidth)  / 2)) + 'px';
}
ThomasDux.Popup.prototype.close = function() {
	document.body.removeChild(this.node);
	this.shade.close();
	document.NGDefaultScroller = this.originalScroller;
	if (this.hide && this.hide.length > 0) {
		for (var i = 0; i < this.hide.length; i++) NG.delClass(this.hide[i], 'hide');
	}
}

if (!NG.getElementsByClassName) {
	NG.getElementsByClassName = function(n, c) {
		var results = [];
		if (NG.hasClass(n, c)) results[results.length] = n;
		for (var i = 0; i < n.childNodes.length; i++) {
			var subres = NG.getElementsByClassName(n.childNodes[i], c);
			results = results.concat(subres);
		}
		return results;
	}
}

function go_back(back) {
	if (NG.ua.isEng('KHTML')) {
		if (!back) back = 2;
		return history.go(-back);
	}
	if (!back) back = 1;
	history.back(back);
}

