/*
 * UID Helper v1.0 alpha - A module patterned javascript object for use with the 
 * websphere commerce madison starter store and dojo toolkit
 * 
 * Author: Brad Slattman
 * Copyright Rosetta Marketing Group, LLC 2011
 */

var UIDHelper = (function() {

	var DEBUG = false;
	var RETRIES = 5;
	var INITIALIZED = false;

	var data = {};

	return {
		reInit: function() {
			if (UIDHelper.INITIALIZED) {
				UIDHelper.init();
			}
		},
		init: function() {
			UIDHelper.initScripts();
			UIDHelper.initStyles();
			UIDHelper.initEvents();
			UIDHelper.initMenu();
			UIDHelper.initTooltips();
			UIDHelper.initDialogs();
			UIDHelper.initFlash();
			UIDHelper.INITIALIZED = true;
		},
		initScripts: function() {
			if (dojo.isIE > 0 && dojo.isIE < 9) {
				dojo.create("script", { src: "/wcsstore/NoBetterDeal/javascript/pie.js" }, dojo.query('head')[0]);
				if (DEBUG == true) dojo.create("script", { src: "/wcsstore/NoBetterDeal/javascript/firebug-lite-debug.js#enableTrace,startInNewWindow,startOpened" }, dojo.query('head')[0]);
			}
		},
		initStyles: function() {
			var x = 0, el;

			dojo.query('.thumbScroller .scrollingBorder').forEach(function(e){ x++; if (x == 4) { e.style.border='none'; x = 0; } });
			dojo.query('#WC_ContentAreaESpot_div_1_HomePageRow2Ads .ad > div').forEach(function(node, index) { if ((index % 8) == 7) node.style.border = 0; });

			dojo.query('.cross-sell .price span:last-child').style('display', 'inline-block');
			dojo.query('.cross-sell .price span:last-child').style('width', '140px');
			dojo.query('.cross-sell .price span:last-child').style('color', '#c95604');
			dojo.query('.cross-sell .price span:last-child').style('color', '#c95604');
			dojo.query('#page .search-page #four-grid td.item:last-child').style('border-right', 'none');
			dojo.query('#page .search-page #four-grid .item:only-child').style('border-right', '1px solid #c7c7c7');

			if (dojo.isIE > 0 && dojo.isIE < 9) {

				dojo.query('#recommend').forEach(function(node){ PIE.attach(node); });
				dojo.query('#header_menu_loaded .main-menu-item').forEach(function(node){ PIE.attach(node); });
				dojo.query('#header_menu_loaded .main-menu-item .sub-menu').forEach(function(node){ PIE.attach(node); });
				setTimeout(function(){dojo.query(".dj_ie8 .step-4 #WC_SingleShipmentSummary_links_2").addClass('pie_hover');},500);
				
			}

			if (dojo.isIE > 0 && dojo.isIE < 8) {

				dojo.query('.cross-sell .price span').forEach(function(node, index) {
					if ((index % 3) == 2) {
						node.style.display = 'block';
						node.style.margin = '-20px 0 0';
						el = dojo.query('strong', node)[0]; if (el) el.style.margin = '-20px 0 0 -50px';
					}
				});
				el = dojo.query('.cross-sell .condition-icons').forEach(function(node) { node.style.margin = '0 0 10px'; });
			}

		},
		initEvents: function() {
			var img, src;
			dojo.query(".remove-button").forEach(function(img) {console.debug(img);
				dojo.connect(img, "onmouseover", function(e) {
					src = img.src.replace('table_x_delete.png', 'table_x_delete_hover.png');
					img.src = src;
				});
				dojo.connect(img, "onmouseout", function(e) {
					src = img.src.replace('table_x_delete_hover.png', 'table_x_delete.png');
					img.src = src;
				});
			});
		},
		initMenu: function() {
			var c, t_width = 0, foundNewPIE;
			
			dojo.query('#header_menu_loaded .main-menu-item').forEach(function(node, index) {

				dojo.connect(node, 'onmouseover', function() {
					dojo.query('#header_menu_loaded .main-menu-item').forEach(function(snode, index) {
						snode.style.background = 'none';
						dojo.query('ul:nth-of-type(1)', snode)[0].style.display = 'none';
						dojo.query('a:nth-of-type(1)', snode)[0].style.color = '#ffffff';
												
					});

					node.style.background = '#bfd7dc';
					dojo.query('ul:nth-of-type(1)', node)[0].style.display = 'block';
					dojo.query('a:nth-of-type(1)', node)[0].style.color = '#006d97';
					if (dojo.isIE > 0 && dojo.isIE < 9) {
						PIE.detach(dojo.query('ul:nth-of-type(1)', node)[0]);
						foundNewPIE = new PIE.Element(dojo.query('ul:nth-of-type(1)', node)[0]);
						foundNewPIE.init();
						//PIE.attach(dojo.query('ul:nth-of-type(1)', node)[0]);
					}
					
					

					t_width = 0;
					c = dojo.query(dojo.query('.sub-menu > .left > ul', node)).coords();
					if (typeof c == 'object') {
						t_width += c[0].w;
					}
					dojo.query('.sub-menu .right-subs > ul', node).forEach(function(ssnode) {
						c = dojo.query(ssnode).coords();
						if (typeof c == 'object') {
							t_width += c[0].w;
						}
					});
					dojo.query('.sub-menu', node).style('width', t_width + 'px');
				
					

					return false;
				});
				
				dojo.connect(node, 'onmouseleave', function() {
					dojo.query('#header_menu_loaded .main-menu-item').forEach(function(snode, index) {
						if (dojo.isIE > 0 && dojo.isIE < 9) {
							PIE.detach(dojo.query('ul:nth-of-type(1)', node)[0]);
						}
						snode.style.background = 'none';
						dojo.query('ul:nth-of-type(1)', snode)[0].style.display = 'none';
						dojo.query('a:nth-of-type(1)', snode)[0].style.color = '#ffffff';
					});
					return false;
				});
				
				
			});
		},
		initTooltips: function() {
			dijit.Tooltip.defaultPosition = ["above", "below"];
			dojo.query(".tooltip").forEach(function(o, i, a) {
				var tip = new dijit.Tooltip({
					connectId: [o],
					label: dojo.attr(o, 'alt')
				});
			});
		},
		initFlash: function() {
			if (!UIDHelper.isFlashEnabled()) {
				dojo.query('.main-banner-flash').style('display', 'none');
				dojo.query('.main-banner-image').style('display', 'block');
			}
		},
		initDialogs: function() {
			dojo.require("dijit.Dialog");
			new dojo.dnd.Moveable("dialog", {handle: "dialog-header"});
			parseWidget("dialog");
			if(dijit.byId("dialog") !=null){
			dijit.byId("dialog").closeButtonNode.style.display='none';
			}
			dojo.query('.dijitDialogUnderlayWrapper', document).forEach(function(tag) {		
				tag.style.display='none';
			});
			dojo.query(".dialog").forEach(function(o) {
				dojo.connect(o, 'click', function(e){
					dojo.byId("dialogTitle").style.paddingBottom = '15px';
					dojo.byId("dialogBody").style.backgroundColor = 'white';
					dojo.byId("dialogBody").style.width = '400px';
					dojo.byId("dialogBody").style.height = 'auto';
					dojo.byId("dialogBody").style.margin = 'auto';
					dojo.byId("dialogBody").style.padding = '15px';
					var useUrl = dojo.attr(o, "href");
					if (useUrl.indexOf('#') >= 0) {
						var dialog = useUrl.substring(Math.floor(useUrl.indexOf('#') + 1));
						if (dialog) {
							dojo.query("#dialog .title")[0].style.display = 'none';
							UIDHelper.triggerDialog(dialog);
						} else {
							dojo.query("#dialog .title")[0].style.display = 'block';
							dojo.byId("dialogTitle").innerHTML = dojo.attr(o, "title");
							dojo.byId("dialogBody").innerHTML = dojo.attr(o, "alt");
							dijit.byId("dialog").show();
							UIDHelper.reInit();
						}
						dojo.stopEvent(e);
						return false;
					} else {
						dojo.query("#dialog .title")[0].style.display = 'block';
						dojo.byId("dialogTitle").innerHTML = dojo.attr(o, "title");
						dojo.byId("dialogBody").innerHTML = dojo.attr(o, "alt");
						dijit.byId("dialog").show();
						UIDHelper.reInit();
					}
					return false;
				});
			});
		},
		triggerDialog: function(dialog) {
			dialog = dojo.byId(dialog);
			if (dialog) {
				switch(dialog.id) {
					case 'added_to_cart': {
						/*var c_coords = dojo.query('#outerCartContainer').coords();
						var d_coords = dojo.query('#dialog').coords();
						dojo.disconnect(dijit.byId('dialog')._modalconnects[0]);
						dojo.byId('dialog').style.top = Math.floor(c_coords[0].t + c_coords[0].h) + 'px';
						dojo.byId('dialog').style.left = Math.floor(c_coords[0].l + (d_coords[0].w - c_coords[0].w) - 10) + 'px';*/
						dojo.query('#dialog')[0].style.zIndex = '9999';
						UIDHelper.ajax('get_cart', function(){
							dojo.byId('cart_contents').innerHTML = data.response;
							dojo.byId("dialogBody").innerHTML = '<div class="'+dialog.id+'">'+dialog.innerHTML+'</div>';
							dijit.byId("dialog").show();
						});
						break;
					}
					default: {
						dojo.byId("dialogBody").innerHTML = '<div class="'+dialog.id+'">'+dialog.innerHTML+'</div>';
						dijit.byId("dialog").show();
						break;
					}
				}
			}
		},
		ajax: function(action, callback) {
			var params = {};
			params.action = action;
			params.storeId = CommonContextsJS.storeId;
			params.langId = CommonContextsJS.langId;
			params.catalogId = CommonContextsJS.catalogId;
			dojo.publish("ajaxRequestInitiated");
			dojo.xhrPost({
				url: getAbsoluteURL() + 'Ajax',
				handleAs: "text",
				content: params,
				service: this,
				load: function(response, ioArgs) {
					UIDHelper.set('response', response);
					dojo.publish("ajaxRequestCompleted");
					return callback();
				},
				error: function(errObj,ioArgs) {
					dojo.publish("ajaxRequestCompleted");
					UIDHelper.throwError(o, 'AJAX_ERROR');
				}
			});
		},
		throwError: function(error) {
			console.debug(error);
			return false;
		},
		hideDialog: function() {
			var dialogInfo = dijit.byId("dialog");
			if(dialogInfo != null){
				dialogInfo.hide();
			}
		},
		gobackFocus: function() {
			document.getElementById('closeLink').focus();
		},
		setbackFocus: function(event) {
			if(event.shiftKey && event.keyCode == dojo.keys.TAB) {
				document.getElementById('lastFocus').focus();
				dojo.stopEvent(event);
			}
		},
		redirect: function(url) {
			location.href = url;
		},
		isFlashEnabled: function() {
			dojo.require('dojox.flash');
			dojox.flash.info = new dojox.flash.Info();
			var isFlashEnabled = dojox.flash.info.capable;
			return isFlashEnabled;
		},
		set: function(key, value) { eval('data.'+key+' = value'); },
		get: function() { return data; }
	}
})(UIDHelper);
dojo.addOnLoad(function(){setTimeout(function(){UIDHelper.init();},500);});



