if (! ("console" in window) || !("firebug" in console)) {
    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 DetailsOverlay = {};

DetailsOverlay.popUpData = undefined;
DetailsOverlay.url = undefined;
DetailsOverlay.scrollTo = 0
var DIVNAME = "popUpDiv";
var POPUPTOPDIV = ".popupTopDiv";

DetailsOverlay.createDonotClick = function(){
    var noClick = document.createElement("iframe");
    noClick.id = 'donotClick';
    var dim = DetailsOverlay.getBrowserSize();
    var noClickStyle = {width:dim.width,height:dim.height,display:'none',position:'absolute',top:'0px',left:'0px',background:'black','z-index':5000,filter:'alpha(opacity=50)',opacity: 0.5};
            
    Element.setStyle(noClick,noClickStyle);
    document.body.appendChild(noClick);
};

DetailsOverlay.loadDetailsData = function(){

    new Ajax.Request(DetailsOverlay.url, { method: 'get', asynchronous:false,    
        onSuccess: function(transport) {
            if (transport.responseText) {
                if(isSessionTimeoutPage(transport.responseText)){
                    window.location='/sessiontimeout';
                } else {
                    DetailsOverlay.popUpData = transport.responseText.stripScripts();
                }
            }
        },
        onComplete: function(transport) {
            if (transport.responseText) {
                if(isSessionTimeoutPage(transport.responseText)){
                    window.location='/sessiontimeout';
                } else {
                    DetailsOverlay.popUpData = transport.responseText.stripScripts();
                }
            }
        }
    });
};

DetailsOverlay.createPopUp = function() {
var popUp = document.createElement('div');
	popUp.id = DIVNAME;
	var popUpStyle = {'height':'523px', '_height':'529px', 'width':'500px', 'display': 'none', 'position': 'absolute', 'top':'150px', 'left':'0px', 'z-index':'5001'};
	    
    Element.setStyle(popUp, popUpStyle);
    document.body.appendChild(popUp);
}

DetailsOverlay.init = function(){
    //console.log('DetailsOverlay.init invoked');
    DetailsOverlay.createDonotClick();
    DetailsOverlay.createPopUp();
    
    var popupLinks = $$('.popupLink');
    popupLinks.each(function (el) {
        Event.observe(el, 'click', DetailsOverlay.clickHandler);
    });
    
    // for backward compatibility
    var heroLinks = $$('.hero_links');
    heroLinks.each(function (el) {
        Event.observe(el, 'click', DetailsOverlay.clickHandler);
    });

 }
DetailsOverlay.closer = function() {
	TabSwitcher.showFirstTab();
    $(DIVNAME).hide();		
    $('donotClick').hide();
};

DetailsOverlay.hideOverlay = function() {
    $(DIVNAME).hide();		
    $('donotClick').hide();
};

DetailsOverlay.stopForward = function() {
    $('closeIcon').href = "#";    
};

DetailsOverlay.clickHandler = function(evt) {
	Event.stop(evt);
    var target = Event.element(evt);
	if (target.tagName == 'SPAN') {
       	target = target.up('A');
   	} else if (target.tagName == 'IMG') {
   		target = target.up('SPAN').up('A');
   	} else if (target.tagName != 'A') {
      target = target.down('A');
  	}

    DetailsOverlay.url = target.href;
    

//    if (!DetailsOverlay.popUpData)
    DetailsOverlay.loadDetailsData();  
    $(DIVNAME).update(DetailsOverlay.popUpData);
    TabSwitcher.init();                     
//    console.log(DetailsOverlay.popUpData);
    $('donotClick').show();	
    DetailsOverlay.center($(DIVNAME));
    $(DIVNAME).show();

//	Element.setStyle($(DIVNAME),{'display':'block'});

    if(navigator.appName == 'Microsoft Internet Explorer' && navigator.appVersion.search('MSIE 6.') != -1) {
    	DetailsOverlay.fixpngs();
    }

};

DetailsOverlay.getScrollXY= function() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

DetailsOverlay.getWindowHeight= function() {
	if (window.innerHeight) {
		windowHeight = window.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		windowHeight = document.body.clientHeight;
	}
	return windowHeight;
}

DetailsOverlay.fixpngs = function() {
	var l = document.getElementsByTagName('img');
	if (l != null) {
		for(i=0;i<l.length;i++){
			p = '/images/consumer/assets/jsfiles/blank.gif';
			n = l[i].getAttribute('src');
			g = n.toLowerCase();
			if(g.substring(g.length-3)=="png"){
				l[i].setAttribute('src',p);
				l[i].style.cssText="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src='"+n+"')";
			}
		}		
	}
};

DetailsOverlay.getBrowserSize = function(){
    var myHeight = 0;
    var myWidth = 0;

    myWidth = document.body.scrollWidth+50;
    myHeight = document.body.scrollHeight+50;
   
    return {width:myWidth+'px', height:myHeight+'px'};
}

DetailsOverlay.center = function(el){
    

	console.log(el);
	
	var elementWidth = el.getWidth();
    var pageWidth = document.body.scrollWidth;
	console.log("pageWidth: " + pageWidth);
	console.log("elementWidth" + elementWidth);

    if (pageWidth>elementWidth){
       var left = (pageWidth-elementWidth)/2+'px';
   	console.log("left: " + left);
       Element.setStyle(el,{left:left});
    }
	var vscroll = DetailsOverlay.getScrollXY()[1]
	var vh = DetailsOverlay.getWindowHeight();
	var oh = el.offsetHeight
	if (oh==0){
		oh = el.clientHeight
	}
	if (oh==0){
		oh = el.getHeight()
	}
	
	var top = vscroll+'px';
	if (vh>oh){
		 top = vscroll + (vh-oh)/2 +'px'
	}
	//console.log("Scroll:"+vscroll)
	//console.log("Wh:"+vh)
	//console.log("Oh:"+oh)
	//console.log("Top:"+top)

	Element.setStyle(el,{top:top});
};

//Extras page / Accessories page - light box
DetailsOverlay.hideDetails = function() {
	document.getElementById('tab-details').style.display=("none");
	document.getElementById('tab-terms').style.display=("block");
}

//Extras page / Accessories page - light box
DetailsOverlay.hideTerms = function() {
	document.getElementById('tab-terms').style.display=("none");
	document.getElementById('tab-details').style.display=("block");
}

DetailsOverlay.CM_SET_PRODUCT_FLAG = "undefined";

/*
DetailsOverlay.pageViewWhyMightINeedData() {
	if (DetailsOverlay.CM_SET_PRODUCT_FLAG) {
	    cmSetProduction();
	    cmCreatePageviewTag("Why might I need data", "shop", null);
	}	
}
*/


var TABS = "tabs";
var TAB = "tab";
var LINK = "link";
var DIV = "div";
var SUBTAB = "subTab";
var PAGINGBOX = "pagingBox";
   
TabSwitcher = {};

TabSwitcher.currentTab = 0;   
TabSwitcher.currentSubTab = 0;
   
TabSwitcher.init = function() {
    //console.log('init invoked');
    var tabsArray = document.getElementsByClassName(TABS);
    tabsArray.each(function(tabElement) {
        var tabArray = tabElement.getElementsByClassName(TAB);
        for (var i = 0 ; i < tabArray.length; i++){
        	Event.observe(tabArray[i],'click', TabSwitcher.tabClickHandler);
        }
        //tabArray.each(function(linkElement) {
        //    Event.observe(linkElement,'click', TabSwitcher.tabClickHandler);
        //});
     });  
     try {
         TabSwitcher.showSubTabAppropriate(0);
     } catch (ex) {
         
     } 
};

TabSwitcher.showFirstTab = function() {
		TabSwitcher.hideTab(TabSwitcher.currentTab);
    TabSwitcher.showTab(0);
    TabSwitcher.currentTab = 0;
    TabSwitcher.showSubTabAppropriate(0);
};
   
TabSwitcher.tabClickHandler = function(evt) {
    Event.stop(evt);    

    var target = Event.element(evt).up(DIV);
    var linkId = target.id;
    if (linkId.startsWith(LINK)) {                      
        // console.log('clickHandler invoked ' + linkId);
        var tabId = linkId.substring(linkId.length-1,linkId.length)*1;
        TabSwitcher.hideTab(TabSwitcher.currentTab);
        TabSwitcher.showTab(tabId);
        TabSwitcher.currentTab = tabId;
        TabSwitcher.showSubTabAppropriate(0);
    }
};
   
TabSwitcher.showTab = function(id) {
    // console.log('showTab invoked');
    var tabToShow = $(TAB + id);       
    Element.setStyle(tabToShow, {display: 'block'});
};

TabSwitcher.showSubTab = function(id) {
    // console.log('showSubTab invoked');	    	
    var subTabsArray = $(TAB + TabSwitcher.currentTab).getElementsByClassName(SUBTAB);            
    if ((subTabsArray) && (subTabsArray.length > 0)) {	
        Element.setStyle(subTabsArray[id], {display: 'block'});        
    }    
}

TabSwitcher.hideSubTab = function(id) {
	
    var subTabsArray = $(TAB + TabSwitcher.currentTab).getElementsByClassName(SUBTAB);            
    if ((subTabsArray) && (subTabsArray.length > 0)) {	
        Element.setStyle(subTabsArray[id], {display: 'none'});	
    }    		
}

TabSwitcher.showSubTabAppropriate = function(id) {
    // console.log('showSubTabAppropriate invoked');	    
//    if (TabSwitcher.currentSubTab == id) return;    	    
    
	var curTab = $(TAB + TabSwitcher.currentTab);
    var subTabsArray = curTab.getElementsByClassName(SUBTAB);
            
    if ((subTabsArray) && (subTabsArray.length > 0)) {	
    	    	
        TabSwitcher.hideSubTab(TabSwitcher.currentSubTab);
        TabSwitcher.showSubTab(id);
        TabSwitcher.currentSubTab = id;

    	var subDiv = "";
    	if (id != 0) {
       	    subDiv = "<a id='pagebackto_1' href='#' onclick='TabSwitcher.showSubTabAppropriate(" + (id - 1) + ")' title='Back' class='global'>Back</a>&nbsp;";
    	}
      	subDiv += "&nbsp;Page ";    	      	
      	for (i = 0; i < subTabsArray.length; i ++) {
      		var pageIndex = (i + 1);
      		if (i == id) {
		        subDiv += pageIndex;
      		} else {
		        subDiv += "<a href='#' onclick='TabSwitcher.showSubTabAppropriate(" + i + ")' title='Go to page" + pageIndex + "' class='global'>" + pageIndex + "</a>";
      		}
      		if (i < (subTabsArray.length - 1)) {
      			subDiv += " | ";
      		}      		
        }
        if (id < (subTabsArray.length - 1)) {
            subDiv += "&nbsp;<a id='pagenextto_2' href='#' onclick='TabSwitcher.showSubTabAppropriate(" + (id + 1) + ")' title='Next' class='global'>Next</a>";            
        }
//        console.log(subDiv);        

      	var pagingGrp = $(PAGINGBOX);
    	if (pagingGrp == undefined) {
            pagingGrp = Builder.node('div', {'id':PAGINGBOX, 'class': 'pagination'});
        }

        Element.update(pagingGrp, subDiv);
        curTab.appendChild(pagingGrp);
    } else {
        TabSwitcher.currentSubTab = 0;
    }
}
   
TabSwitcher.hideTab = function(id) {
    // console.log('hideTab invoked'); 
    TabSwitcher.hideSubTab(TabSwitcher.currentSubTab);      
    Element.setStyle($(TAB + id), {display: 'none'});
};



Event.observe(window,'resize', function(){
    if ($('donotClick')){
        $('donotClick').setStyle(DetailsOverlay.getBrowserSize());
    }
    
    if ($(DIVNAME)){
        DetailsOverlay.center($(DIVNAME));
    }    
});

Event.observe(window, 'load', function() { 
	DetailsOverlay.init();
});

