/**
 * @author Dean Peterson
 * @copyright (c)2010 Glycerin For NitroSell
 * These scripts reset and/or reformat various elements to provide consistent styling and scripting.
 *
 */
if (!window.console || !console.firebug)
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}
var g4n = {}

//remove vspace and hspace from images
$("img").removeAttr("vspace").removeAttr("hspace").removeAttr('align');

//BUTTONS
$("body#forgotpassword table.infoBox a.button-big").addClass('continue button');

//ADVANCED SEARCH PANEL
var advancedSearchForm = function(){
	var advancedSearchForm = $("#search_form");
	$("#keyword-search-box").appendTo(advancedSearchForm);
	$("#theme_dropdown").appendTo(advancedSearchForm);
	$("#field_product_brand").appendTo(advancedSearchForm);
	$("#keyword-search-button").remove();
	$("form#search_form input:hidden").prependTo(advancedSearchForm);
	$(advancedSearchForm).append("<div><a href='#' title='Submit Search' id='advanced-search-panel-submit' class='button submit'>search</a></div>");
	$(advancedSearchForm).appendTo("#inner-advanced-search-panel");
	$("#search-panel-option").insertAfter("input#keyword-search-box");
	$("#advanced-search-link").insertAfter("#field_product_brand");
	$("#advanced-search-panel table").remove();
	$("#advanced-search-panel").removeClass('hide');
};
advancedSearchForm();


//SPECIAL OFFERS PANEL
var specialOffersPanel = function(){
	if ($("#specialoffers").length) {
	    var oItemImage = $("#panel-specials td.smallText img"),
			oItemLink = $("#panel-specials td.smalltext a"),
			oItemPrice = $("#panel-specials td.smalltext span.text-price"),
			oSpecialOffersPanel = $("<div></div>").attr("id", "special-offers-panel"),
			oInnerSpecialOffersPanel = $("<div></div>"),
			oUl = $("<ul></ul>");
			
	    $(oInnerSpecialOffersPanel).attr({
	        'id': "inner-special-offers-panel",
	        'class': 'inner'
	    });
	    //insert into panels for further processing
	    $(oSpecialOffersPanel).append(oInnerSpecialOffersPanel).appendTo("#panels");
	    //iterate through the elements
	    $.each(oItemLink, function(key, value){
	        //initialize values
	        var productName = $(oItemLink[key]).text(),
		        productLink = $(oItemLink[key]).empty(),
		        productHeader = $("<h4></h4>").append(productName).wrapInner($(productLink).clone()),
		        productLabel = $("<span class='label'>Price:</span>"),
		        productPrice = $("<span class='value'></span>").append($(oItemPrice[key]).text()),
		        productTextPrice = $("<p class='product-text-price'></p>").append(productLabel).append(productPrice),
		        productImage = $(oItemImage[key]),
		        productThumb = $("<p class='product-thumb'><span></span></p>").append(productImage).wrapInner($(productLink).clone()),
		        listItem = $("<li></li>"); //create and populate list element
	        $(listItem).append(productHeader).append(productThumb).append(productTextPrice);
	        $(listItem).wrapInner("<div class='inner-li'></div>");
	        //insert into ul
	        $(listItem).appendTo(oUl);
	    });
	    
	    $(oInnerSpecialOffersPanel).prepend("<h3>Special Offers</h3>");
	    
	    $(oUl).appendTo(oInnerSpecialOffersPanel);
	    $("#specialoffers").remove();
	}
};
specialOffersPanel();
//FORM PAGES
$("table.formBox td:nth-child(1)").addClass('col1');
$("table.formBox td:nth-child(2)").addClass('col2');
$("table.formBox td:nth-child(3)").addClass('col3');
$("#login-tip-text").prependTo("#loginform");
$("#forgot-password").appendTo("#loginform");
$("#accountform").removeClass('hide');

var $content = $("#content");

//account login
$("#pageid_login #login-button,#pageid_contact .button-big,#btn-profile-continue").addClass('button');

//pageid_search
var $advSearchTable = $("#pageid_search #advanced-search-options table");
$advSearchTable.find("tr td:first-child").addClass('col1');
$advSearchTable.find("tr td:nth-child(2)").addClass('col2');
$advSearchTable.find("#search-button").addClass("button");

//pageid_shippingaddress
var $pageidShippingAddress = $("body#pageid_shippingaddress #content");
$pageidShippingAddress.find(".button-big").addClass('button');

//pageid_checkoutstep2
var $pageidCheckoutStep2 = $("body#pageid_checkoutstep2 #content");
$pageidCheckoutStep2.find("#btn-change-address, #btn-continue-checkout").addClass('button');

if ($("#pageid_basket").length) {
    $("#content").find("a[href='/store/go/quickadd/']").closest("p").addClass('quick-add');
}
//pageid_orderconfirmed
if ($("#pageid_ordercomplete").length) {
    $homeLink = $("#tab-1 a").clone().text("Return to Home Page").addClass('button').button();
    $content.find("#shopping-basket").before($homeLink);
}
//pageid_shippingaddress
if ($("#pageid_shippingaddress").length) {
    $content.find("a.button").closest("tr").height(50);
}
if ($("#pageid_history").length) {
    $content.find("#history-submit").addClass('button').button();
    $content.find("select").bind("load change", function(){
        $content.find("#history-submit").addClass('button').button();
    });
}

//pageid_selectaddress
var selectAddress = function(){
	    var $link = $content.find("a u").closest("a");
    $link.each(function(){
		var $this = $(this), 
			$text = $this.text();
		$this.empty().text($text);
    });
    $("#use-address-main").addClass('button').button();
};
if ($("#pageid_selectaddress").length) {
	selectAddress();
}
//pageid_payment
var $pageidPayment = $("body#pageid_payment #content");
$pageidPayment.find("#btn-make-payment").addClass('button').css({
    'display': 'block',
    'margin': '5px 0px'
});

//replaces items without image with "No Image Available" and classes the wrapper with 'no-image'

$productPanelThumbs = $("#product-relateditems-panel img.image-thumb, #product-list img.image-thumb");
var $productPanelThumb;
var $productPanelThumbSrc;
$productPanelThumbs.each(function(index){
    $productPanelThumb = $(this);
    $productPanelThumbSrc = $productPanelThumb.attr('src');
    if ($productPanelThumbSrc.search(/spacer/) > -1) {
        $productPanelThumb.closest('.image-thumb-wrap').addClass('no-image');
        $productPanelThumb.replaceWith("<span>No Image Available</span>");
    }
});



/**
 * @author Dean Peterson
 * @alias layout
 * @copyright 2010 Dean Peterson
 * @license 
 * @projectDescription 
 * Contains all layout scripts
 */
//Create additional sections as needed first
var layout = function(){
	var $wrapper = $("#inner-wrapper"),
		$header = $("#inner-header"),
		$nav = $("#inner-nav"),
		$content = $("#inner-content"),
		$footer = $("#inner-footer"),
		$centerWrapper = $(document.createElement("div")).attr('id', 'center-wrapper'),
		$innerCenterWrapper = $(document.createElement("div")).attr('id', 'inner-center-wrapper').appendTo($centerWrapper);
	$wrapper.prepend($centerWrapper);
	//header
	$('#search-panel').appendTo($header);
	$("#tabs-panel").addClass('horiz header-menu').appendTo($header);
	$("#account-basket-panel").prependTo($header);
	
	$("#page-header").prependTo($content).removeClass('hide');
	
	//nav
//	$("#advanced-search-panel").appendTo($nav);
//	$("#account-panel").appendTo($nav);
	
	//footer
	$("#sitefooter").insertAfter("#footer");
	$("#footer-menus").appendTo($footer);
	
	//make some buttons
	$("#content .button").button();
	$("body").ajaxComplete(function(){
			$("#content .button").button();
	});
	//unhide
	$("#nav").prependTo($innerCenterWrapper);
	$("#content").appendTo($innerCenterWrapper);
	$($innerCenterWrapper).append("<div class='clear'></div>");
	$("#wrapper").removeClass('hide');
	//$("#product-list-navigation-top").appendTo($contentHeader);
	
	$("#pageid_product #product-relateditems-panel").addClass('grid');
	//clearfix
	$("#product-relateditems-panel").addClass('clearfix');
};
layout();
	



var panelNavOrg = {
    "res": {
        "panelNav": "#panel-navigation",
        "navDept": ".nav-department",
        "navCat": ".nav-category",
        "navSubCat": ".nav-subcategory"
    },
    "catToDept": function(){
		 var $panelNav = $("#panel-navigation"),
				$navDept = $panelNav.find(".nav-department");
			        $navDept.each(function(){
			            var $this = $(this),
		 					$level2 = $("<ul class='nav-level-2'></ul>"), 
							deptId = $this.attr("id");
			            $panelNav.find(".navparent-" + deptId).appendTo($level2);
			            $this.append($level2);
		});
    },
    "subCatToCat": function(){
        var $panelNav = $(panelNavOrg.res.panelNav), 
			$navCat = $panelNav.find(panelNavOrg.res.navCat);
        $navCat.each(function(){
            var $this = $(this), 
				$panelNav = $(panelNavOrg.res.panelNav), 
				$level3 = $("<ul class='nav-level-3'></ul>"), 
				catId = $this.attr("id"),
				$subCat = $panelNav.find(".navparent-" + catId);
			if($subCat.length){
				$subCat.appendTo($level3);
            	$this.append($level3);
			}
        });
    },
    "activate": function(){ 
		var $panelNav = $("#panel-navigation");
		$.each(arrSelectedNavAttr,function(index,item){
			$panelNav.find("#"+item.type+"-"+item.id).addClass("active");
		});
    },
    "init": function(){
        panelNavOrg.catToDept();
        panelNavOrg.subCatToCat();
		panelNavOrg.activate();
    }
};
panelNavOrg.init();
	
	

	
var extendedPrice = function(){
	var $discountPrice = $("#product-list .discount"),
		$origPrice = $discountPrice.find("span.text-pricestrike"),
		$newPrice = $discountPrice.find("span.text-pricespecial"),
		$percentage = $discountPrice.find("span.price-percentage");
		$yourPrice = $("#text-yourprice .label");
	$yourPrice.text("Price: ");
	$discountPrice.addClass("text-pricingdetails");
	$("<span>Regular Price: </span>").insertBefore($origPrice);
	$("<span>Your Price: </span>").insertBefore($newPrice);
	$("<span>You Save: </span>").insertBefore($percentage);
};
extendedPrice();
	
//debug
//$("body").addClass('debug');

g4n.optionMatrix = {
	settings : {
		"addStyle" : false,
		"ajaxRefresh" : true,
		titles : {
		},
		style : {
			"default" : {
				"background-color" : "pink"
			},
			"active" : {
				"background-color" : "#ff000"
			} 
		},
		elementTag : "<h3></h3>",
		optionTag : "<h4></h4>"
	},
	colorbutton : {
	},
	setTitle : function (selectId) {
		var title,
			titleObj = g4n.optionMatrix.settings.titles,
			$thisRow;
			
		if (titleObj[selectId]) {
			title = titleObj[selectId];
		} else {
			$thisRow = $("#" + selectId).closest("tr");
			title = $thisRow.find(".matrixtitle").text();
		}
		title = $.trim(title);
		return title;
	},
	color : function(text){
		var colorObj = {}; 
		colorObj.name = $.trim(text.toLowerCase()).replace(/\s/g,"");
		colorObj.code = (function(){
			if(settings.colorValues[colorObj.name]){
				return settings.colorValues[colorObj.name];
			} else {
				return false;
			}
		}());
		return colorObj;
	},
	setup : function () {
//				console.log("setup");
	    var $matrixitemoptions = $("#matrixitemoptions"),//find #matrixoptions wrap
			$matrixOptionsTable = $("#matrixoptions"),
			$matrixItemRows = $matrixOptionsTable.find("tr"),
			$selects = $matrixOptionsTable.find("select"), //all select elements
			$g4nMatrixItemOptions = $("<div></div>").attr("id", "g4n-matrixitemoptions");
	    $matrixItemRows.each(function () {
			var $parentRow = $(this),
				rowClasses = $parentRow.attr("class").toLowerCase(),
				isColor = (rowClasses.search(/color/g) !== -1) ? " color " : "",
				isSize = (rowClasses.search(/size/g) !== -1) ? " size " : "",
	        	$this = $parentRow.find("select"),
				thisName = $this.attr("name"),
				$ul = $("<ul></ul>").attr({
					"id": "g4n_" + thisName,
					"class": "selection-options" + isColor + isSize + rowClasses
				}),
				thisId = $this.attr("id"),
				selectValue = $this.attr("value"),
				$options = $this.find("option"),
				title = g4n.optionMatrix.setTitle(thisId),
				optionHeader = $(g4n.optionMatrix.settings.optionTag).text(title);
			console.log(thisName, " : color: ", isColor);
			$ul.prepend(optionHeader);
	        $options.each(function () {
	            var $this = $(this),
					text = $this.text(),
					color = g4n.optionMatrix.color(text),
					optionValue = $this.attr("value"),
					$colorBlock,
					$textWrap = $("<span class='color-text'></span>").text(text),
					$li = $("<li class='btn-select'></li>").append($textWrap).attr("value", optionValue);
				if(color.code){
					$colorBlock = $("<span class='color-block'></span>").html("&nbsp;").css("background-color",color.code);
					$li.append($colorBlock);
				}
				if (selectValue === optionValue) {
					$li.addClass("btn-select-active");
				}
	            $li.appendTo($ul);
	        });
	        $ul.appendTo($g4nMatrixItemOptions);
	    });
		$g4nMatrixItemOptions.insertAfter($matrixitemoptions);
		$matrixitemoptions.hide();
	},
	clickToSelect : function () {
//		console.log("clickToSelect");
		var $selects = $("select.matrixoption"),
			$selectionOptions = $(".selection-options"),
			$optionBtns = $selectionOptions.find(".btn-select");
		$optionBtns.click(function () {
			var $this = $(this),
				selectValue = $this.attr("value"),
				$activeSelect = $selects.find("option[value=" + selectValue + "]").parent("select");
			$this.addClass("btn-select-active").siblings().removeClass("btn-select-active");
		$activeSelect.attr("value", selectValue).change();
		});
	},
	onAjaxComplete : function () {
		$("#productbody").ajaxComplete(function (event, xhr, settings) {
			var url = settings.url;
			if(url.search("get_product_data") !== -1){
				g4n.optionMatrix.setup();
				g4n.optionMatrix.clickToSelect();
				extendedPrice();
			}
		});
	},
	init : function () {
		g4n.optionMatrix.setup();
		g4n.optionMatrix.clickToSelect();
		g4n.optionMatrix.onAjaxComplete();
	}
};
if($("#pageid_product").length){
	g4n.optionMatrix.init();
}


