﻿document.onmousemove = MouseMove;
document.onmouseup = MouseUp;
$('slider').onmousedown = SliderDown;
var gSliding = false;

var gViewType = 1;										// spread
var gDisplayedMessage = false;
var gCancelAllMessages = false;

var gImageWidth = 850;
var gSpreadThreshold = .34;
var gZoomThreshold = .67;

var gSide1 = $('side1');
var gSide2 = $('side2');



function FinishInitialLoad()
{
	$('divLoading').style.display = 'none';
	UpdateTextAndLinks();
	BuildPageNav();
	CheckAndFixMissingPages();
	
	// handling flyer sections
	var goToPage = null;
	if (gSection != null && gSection == "wine")
		if ($('hfFirstWinePage').value != null || $('hfFirstWinePage').value != '')
		{
			goToPage = +$('hfFirstWinePage').value + +gCurrentPage - 1;
		}
	
	//var temp = gViewType;
	ChangePage(goToPage, true);
	//ZoomManager(null, temp);

	if ($('divArrowLeft') != null && $('divArrowRight') != null)
	{
		UnHighlightArrow($('divArrowLeft'));
		UnHighlightArrow($('divArrowRight'));
	}
	
	//Send(gCurrentPage, true);						// setting, but not sending
	//gInitializationComplete = true;
	
	
	// SiteCatalyst code version: H.7.
	// Copyright 1997-2006 Omniture, Inc. More info available at http://www.omniture.com
	/************* DO NOT ALTER THE NEXT LINE ! **************/
	var s_code=s.t();if(s_code)document.write(s_code);
	// End SiteCatalyst code version: H.7.
}




// if something failed on initial load




// ----------------------------------------------------
//		Slider / Zoom Management
// ----------------------------------------------------

function SliderDown()
{
	document.onmousedown = falsefunc;
	gSliding = true;
}
function falsefunc() { return false; }

function MouseUp()
{
	document.onmousedown = null;
	gSliding = false;
}

function MouseMove(evt)
{
	if (gSliding)
	{
		position = mouseX(evt);
		position = position - $('sliderbar').offsetLeft;
		if (position < 0) position = 0;
		else if (position > 200) position = 200;
		
		ZoomManager(position / 2 / 100);
	}
	return false;
}

// zoomPercent will be between 0-1.  Handles hf, and slider position, and view settings
// zoomParcent overrides zoomNotch
function ZoomManager(zoomPercent, viewType)
{
	if (viewType != null)
	{
		if (viewType == 1)		$('hfZoom').value = 0;
		else if (viewType == 2) $('hfZoom').value = gSpreadThreshold + .15;
		else if (viewType == 3) $('hfZoom').value = gZoomThreshold + .15;
	}
	if (zoomPercent != null)
	{
		$('hfZoom').value = zoomPercent;
	}

	zoomPercent = $('hfZoom').value;
	var position = zoomPercent * 2 * 100;
	$('slider').style.left = position + 'px';			// updating the slider bar to reflect the change
	

	if (zoomPercent < gSpreadThreshold)					// changing view/zoom accordingly
	{
		if (gViewType != 1)
		{
			SetSpreadOrSingle(1);
			$('spanZoomLevel').innerHTML = "2 Page";
		}
	}
	else if (zoomPercent < gZoomThreshold)
	{
		if (gViewType != 2)
		{
			SetSpreadOrSingle(2);
			$('spanZoomLevel').innerHTML = "1 Page";
		}
	}
	else
	{
		if (gViewType != 3)
		{
			SetSpreadOrSingle(3);
			$('spanZoomLevel').innerHTML = "1 Page - Detail";
			gImgPages[gCurrentPage].style.height = 'auto';
		}

		var scaledPercent = (zoomPercent - gZoomThreshold) / (1 - gZoomThreshold);
		var newWidth = Math.round(gImageWidth * (1 + scaledPercent));
		gImgPages[gCurrentPage].style.width = newWidth + 'px';

		//$('spanZoomLevel').innerHTML = newWidth;
	}
}


// ----------------------------------------------------
//		View Management
// ----------------------------------------------------

// type 1 = spread, type 2&3 = single
function SetSpreadOrSingle(viewType)
{
	if (viewType == gViewType)	return;
	if (viewType != null)		gViewType = viewType;

	if (gViewType == 1)											// spread
	{
		if (navigator.appName.indexOf("Microsoft") != -1)
			$('tableAdSpread').style.display = 'block';
		else
			$('tableAdSpread').style.display = 'table';

		$('divAdSingle').style.display = 'none';
		PrepareSpread();
	}
	else if (gViewType == 2 || gViewType == 3)					// single
	{
		$('tableAdSpread').style.display = 'none';
		$('divAdSingle').style.display = 'block';
		PrepareSingle();
	}

	CancelMessage();
}

// called when clicking on page images
function ViewToggle(pageNum)
{
	if (pageNum != null)
		gCurrentPage = pageNum;

	switch (gViewType)
	{
		case 1:		ZoomManager(null, 2);	break;
		case 2:		ZoomManager(null, 3);	break;
		case 3:		ZoomManager(null, 1);	break;
		default:	break;
	}
}


// ----------------------------------------------------
//		Zoom Management
// ----------------------------------------------------

window.onresize = ResizeHelper;
var gTimeout;
var gScaleToFit = true;
var gWinW = 630, gWinH = 460;

function ResizeHelper()
{
	window.clearTimeout(gTimeout);
	gTimeout = window.setTimeout('Resize()', 200);
}

function Resize()
{
	if (parseInt(navigator.appVersion) > 3) {
		if (navigator.appName == "Netscape") {
			gWinW = window.innerWidth;
			gWinH = window.innerHeight;
		}
		if (navigator.appName.indexOf("Microsoft") != -1) {
			gWinW = document.documentElement.clientWidth;
			gWinH = document.documentElement.clientHeight;
		}
	}
	ScaleImages(gScaleToFit);
}

function ScaleImages()
{
	//if (gSide1.firstChild == null && gSide2.firstChild == null) return;	// commented to prep single initially

	var availableHeight = 0;
	var availableWidth = 0;

	var scaleRatio = 1;
	var scaleWidth = 1;
	var scaleHeight = 1;
	var totalImageWidth = 0;
	var totalImageHeight = 0;
	var width = '';
	
	
	totalImageWidth = gImageWidth * 2 + 28;	// +28 gives more sideroom
	totalImageHeight = 1000;

	availableHeight = gWinH - HeaderAndFooterHeight();
	availableWidth = gWinW;

	scaleHeight = availableHeight / totalImageHeight;
	scaleWidth = availableWidth / totalImageWidth;

	if (scaleHeight < scaleWidth)
		scaleRatio = scaleHeight;
	else
		scaleRatio = scaleWidth;
	
	width = Math.round(eval(scaleRatio * gImageWidth)) + 'px';	//assuming image width of gImageWidth
	if (gSide1.firstChild != null) gSide1.firstChild.style.width = width;
	if (gSide2.firstChild != null) gSide2.firstChild.style.width = width;

	if (gSide1.firstChild != null) gSide1.firstChild.style.height = 'auto';
	if (gSide2.firstChild != null) gSide2.firstChild.style.height = 'auto';

	$('divAdSingle').style.height = availableHeight + 'px'; // for the single image
}

function HeaderAndFooterHeight()
{
	return $('divHeader').offsetHeight + $('divFooter').offsetHeight;
}

// ----------------------------------------------------
// 		 Page Display Management
// ----------------------------------------------------

function Back()
{
	if (gViewType == 1)
		ChangePage(+gCurrentPage - 2);
	else
		ChangePage(+gCurrentPage - 1);
}
function Next()
{
	if (gViewType == 1)
		ChangePage(+gCurrentPage + 2);
	else
		ChangePage(+gCurrentPage + 1);
}

// fired when clicking a specific page link
function PageLinkChangePage(pageNum)
{
	ZoomManager(null, 2);
	ChangePage(pageNum);
}

function ChangePage(pageNum, initial)
{
	if (initial == null) initial = false;
	if (gTOCDisplayed)						ToggleTOC();
	if (pageNum == gCurrentPage && !initial)			return;
	if (pageNum != null)					gCurrentPage = pageNum;

	if (gCurrentPage < 1)					gCurrentPage = 1;
	else if (gCurrentPage > gTotalPages)	gCurrentPage = gTotalPages;

	SetSpreadOrSingle();
	ZoomManager(null, gViewType);			// passing gViewType should only have an effect on the initial load
	ShowArrows();
}


function PrepareSpread()
{
	CreateImageObject(gCurrentPage);		// preparing the image
	
	if (gSide1.firstChild != null) gSide1.removeChild(gSide1.firstChild);	// clearing the sides
	if (gSide2.firstChild != null) gSide2.removeChild(gSide2.firstChild);

	gSide1.style.background = '';

	if (gCurrentPage == 1)
	{
		CreateTOC();
		Send('1');
		
		gSide2.appendChild(gImgPages[gCurrentPage]);
		HighlightPageNum(gCurrentPage);
	}
	else if (gCurrentPage == gTotalPages)
	{
		gSide1.appendChild(gImgPages[gCurrentPage]);
		HighlightPageNum(gCurrentPage);
		Send(gTotalPages + '');
	}
	else
	{
		if (gCurrentPage % 2 == 0)	// if even
		{
			gSide1.appendChild(gImgPages[gCurrentPage]);
			CreateImageObject(+gCurrentPage + 1);
			gSide2.appendChild(gImgPages[+gCurrentPage + 1]);
			HighlightPageNum(gCurrentPage, +gCurrentPage + 1);
			Send(gCurrentPage + '-' + (+gCurrentPage + 1));
		}
		else						// if odd
		{
			CreateImageObject(+gCurrentPage - 1);
			gSide1.appendChild(gImgPages[+gCurrentPage - 1]);
			gSide2.appendChild(gImgPages[gCurrentPage]);
			HighlightPageNum(gCurrentPage - 1, gCurrentPage);
			Send((+gCurrentPage - 1) + '-' + gCurrentPage);
		}
	}

	Resize();
}

function PrepareSingle()
{
	CreateImageObject(gCurrentPage);
	if ($('divAdSingle').firstChild != null) $('divAdSingle').removeChild($('divAdSingle').firstChild);
	$('divAdSingle').appendChild(gImgPages[gCurrentPage]);

	gImgPages[gCurrentPage].style.width = '';
	gImgPages[gCurrentPage].style.height = '';

	HighlightPageNum(gCurrentPage);
	Send(gCurrentPage);

	Resize();
}


// if the current image object doesn't exist, make it (the first element of gImgPages will always be null - making it non-zero-based
function CreateImageObject(pageNum)
{
	if (gImgPages[pageNum] == null)		// adjusting for zero-based
	{
		gImgPages[pageNum] = new Image();
		gImgPages[pageNum].src = gDirectory + '/' + gZone + pageNum + '.jpg';
		gImgPages[pageNum].onclick = function() { ViewToggle(pageNum) };
		gImgPages[pageNum].onmouseover = DisplayMessage;
	}
}





function ShowArrows()
{
	if ($('divArrowLeft') != null && $('divArrowRight') != null)
	{
		if (gCurrentPage == 1)
			$('divArrowLeft').style.display = 'none';
		else
			$('divArrowLeft').style.display = 'block';
			
		if (gCurrentPage == gTotalPages)
			$('divArrowRight').style.display = 'none';
		else
			$('divArrowRight').style.display = 'block';
	}
}

function CreateTOC()
{
	var TOC = document.createElement('div');
	TOC.id = 'divTOC';
	gSide1.appendChild(TOC);
	gSide1.style.background = 'url(images/background.jpg)';
	TOC.innerHTML =
	    //'<span id="rssLink">' + ReturnRSSLink() + '</span>' +
	    $('divTOCContent').innerHTML;
}


// ----------------------------------------------------
// 		 Initial Setup
// ----------------------------------------------------

//function TestAndParseQueryString()
//{
//	var noofgoodargs = 0;
//	args = document.location.search.split('&');
//	args[0] = args[0].replace('?', '');
//	for (x = 0; x < args.length; x++)
//	{
//		keyvalue = args[x].split('=');
//		
//		switch (keyvalue[0])
//		{
//			case 'z':	keyvalue[1] = keyvalue[1].replace('%25', '');
//						gZone = keyvalue[1];
//						noofgoodargs++;
//						break;

//	        case 's':   keyvalue[1] = FixQueryStringPart(keyvalue[1]);
//	                    // TODO: validate store name here?
//	                    // if valid continue
//	                    gStoreName = keyvalue[1];
//	                    noofgoodargs++;
//	                    break;

//			case 'ad':	gDirectory = keyvalue[1];
//						noofgoodargs++;
//						break;
//						
//			case 'n':	gStoreNum = keyvalue[1];
//						noofgoodargs++;
//						break;
//						
//			case 'd':	gDates = FriendlyDate(FixQueryStringPart(keyvalue[1]))
//						noofgoodargs++;
//						break;

//			case 'pg': // optional argument - don't increment noofgoodargs
//						gCurrentPage = keyvalue[1];
//						gViewType = 2; 				// default to single page view
//						break;

//			case 'vw': // optional argument - don't increment noofgoodargs
//						gViewType = +keyvalue[1];
//						break;
//			
//			
//			default:	break; //bad argument handling
//		}
//	}

//	if (noofgoodargs == 5)
//		return true;
//	else
//		return false;
//}

function CheckAndFixMissingPages() {
	for (var index = 1; index <= gTotalPages; index++) {
		// fixing the TOC link
		if ($('TOCPage' + index) == null) {
			var missingPage = document.createElement('div');
			missingPage.id = 'TOCPage' + index;
			missingPage.innerHTML = '<a href="Javascript:PageLinkChangePage(' + index + ')">Page ' + index + '</a>';

			if (index == 1)										// if we're missing the first page
			{
				//InsertAfter($('brHeader'), missingPage);
				InsertAfter($('divTOCContent').firstChild, missingPage);
			}
			else if ($('TOCPage' + eval(index - 1)) != null)	// this should always be true if they make it this far
			{
				InsertAfter($('TOCPage' + eval(index - 1)), missingPage);
			}
		}

		// if we're missing a footer link
		if ($('pg' + index) == null) {
			var missingFooterPage = document.createElement('span');
			missingFooterPage.id = 'pg' + index;
			missingFooterPage.innerHTML = index;
			missingFooterPage.whatPage = index;
			missingFooterPage.onclick = function() { PageLinkChangePage(this.whatPage) };

			if (index == 1)										// if we're missing the first page
			{
				//InsertAfter($('brHeader'), missingPage);
				InsertAfter($('spanPageNav').firstChild, missingFooterPage);
			}
			else if ($('pg' + eval(index - 1)) != null)	// this should always be true if they make it this far
			{
				var inhtml = $('pg' + eval(index - 1)).innerHTML;
				missingFooterPage.innerHTML = +inhtml + 1;
				InsertAfter($('pg' + eval(index - 1)), missingFooterPage);
			}

		}
	}
}

function UpdateTextAndLinks()
{
	var store = 'Store:<b> ' + gStoreName + '</b>'
	var dates = 'Prices in Effect:<b> ' + gDates + '</b>'

	document.title = 'Wegmans ' + gStoreName + ' Online Flyer: Prices In Effect Sunday, ' + gDates;
	$('spanStoreName').innerHTML = 'Store:<b> ' + gStoreName + '</b> <a href="#" onClick="javascript:ToggleSettings();">[Change]</a>&nbsp; | &nbsp; ';
	$('spanDates').innerHTML = dates;

	$('spanStoreNameTOC').innerHTML = store;
	$('spanDatesTOC').innerHTML = dates;

	$('spanStoreNameSettings').innerHTML = store;
	$('spanDatesSettings').innerHTML = dates;
	
	weDateString = (+gWeDate.getMonth() + 1) + '/' + gWeDate.getDate() + '/' + gWeDate.getFullYear();
	$('lnkPrint').href = gDirectory + '/pdf/zn' + gZone + '.pdf?d=' + weDateString + '&s=' + gStoreNum;
	$('lnkScreenReader').href = 'text.aspx?n=' + gStoreNum + '&forcethisdate=' + weDateString;

	$('lnkShoppersClub').href = 'http://www.wegmans.com/webapp/wcs/stores/servlet/WegSetStorePreferenceCmd?storeId=10052&catalogId=10002&langId=-1&showSC=no&URL=RedirectView&redirecturl=ProductListView%3fforwardto%3dProductListView%26Ne%3d5%26Ntk%3dProductSearch%26Nr%3dShoppersClub%253A250109%26langId%3d-1%26storeId%3d10052%26Ntx%3dmode%2bMatchAllPartial%26Ns%3dP_Velocity%257C1%26N%3d207%26catalogId%3d10002%26Nty%3d1&preferredStore=' + gStoreNum;
	$('lnkShoppersClubImg').href = $('lnkShoppersClub').href;

	//$('lnkShoppersClubImg').onclick = Next;
	
	
}

function BuildPageNav()
{
	// original with window.sidebar test
//	$('spanPageNav').innerHTML = '';

//	$('spanPageNav').innerHTML += '<span onmousedown="if(window.sidebar)return false" onclick="ToggleTOC(); if(window.sidebar)return true">Table of Contents</span> &nbsp; <span>|</span> &nbsp; &nbsp; ';
//	$('spanPageNav').innerHTML += '<span onmousedown="if(window.sidebar)return false" onclick="Back(); if(window.sidebar)return true"><</span> ';
//	for (index = 1; index <= gTotalPages; index++)
//		$('spanPageNav').innerHTML += '<span id="pg' + index + '" onmousedown="if(window.sidebar)return false" onclick="PageLinkChangePage(' + index + '); if(window.sidebar)return true">' + index + '</span>';
//	$('spanPageNav').innerHTML += ' <span onmousedown="if(window.sidebar)return false" onclick="Next(); if(window.sidebar)return true">></span>';
//	$('spanPageNav').innerHTML += ' &nbsp; &nbsp; <span>|</span> &nbsp; ';


//	$('spanPageNav').innerHTML = '';

//	$('spanPageNav').innerHTML += '<span onclick="ToggleTOC();">Table of Contents</span> &nbsp; <span>|</span> &nbsp; &nbsp; ';
//	$('spanPageNav').innerHTML += '<span onclick="Back();"><</span> ';
//	for (index = 1; index <= gTotalPages; index++)
//		$('spanPageNav').innerHTML += '<span id="pg' + index + '" onclick="PageLinkChangePage(' + index + ');">' + index + '</span>';
//	$('spanPageNav').innerHTML += ' <span onclick="Next();">></span>';
//	$('spanPageNav').innerHTML += ' &nbsp; &nbsp; <span>|</span> &nbsp; ';
}


// ----------------------------------------------------
// 		 Display
// ----------------------------------------------------

function CancelMessage()
{
	$('divMessage').style.display = 'none';
	StopCurrentFade();
	gDisplayedMessage = false;
}

function HideAllMessages()
{
	gCancelAllMessages = true;
	CancelMessage();
}


function ToggleSettings()
{
	if (gSettingsDisplayed)
	{
		$('divModal').style.display = 'none';
		$('divModalBackground').style.display = 'none';
		
		gSettingsDisplayed = false;
	}
	else
	{
		$('divModal').style.display = 'block';
		$('divModalBackground').style.display = 'block';
		
		gSettingsDisplayed = true;
	}
}

function ToggleTOC()
{
	if (gTOCDisplayed)
	{
		$('divTOCContent').style.display = 'none';
		$('divModalBackground').style.display = 'none';
		
		gTOCDisplayed = false;
	}
	else
	{
		$('divTOCContent').style.display = 'block';
		$('divModalBackground').style.display = 'block';
		
		gTOCDisplayed = true;
	}
}

function HighlightPageNum(first, second)
{
	for (index = 1; index <= gTotalPages; index++)
		$('pg' + index).className = '';

	if (second != null)
	{
		$('pg' + first).className = 'highlighted hFirst';
		$('pg' + second).className = 'highlighted hSecond';
	}
	else
	{
		$('pg' + first).className = 'highlighted hSingle';
	}
	
	 
}

function DisplayMessage()
{
	if (!gDisplayedMessage && !gCancelAllMessages)
	{
		window.setTimeout("SetOpacity($('divMessage'), 0);", 0);			// doesn't happen at the right time unless this timeout is used
		window.setTimeout("$('divMessage').style.display = 'block';", 0);
		
		Fader('divMessage', 250, 0, .89, 25, 0);
		Fader('divMessage', 600, .89, 0, 25, 2400);
		gHideClear = window.setTimeout("$('divMessage').style.display = 'none';", 3000);

		if (gViewType == 1)
			$('divMessage').innerHTML = 'Click on a page to zoom in <span onclick="HideAllMessages()">(hide)</span>';
		else if (gViewType == 2)
			$('divMessage').innerHTML = 'Click on the page to zoom in further <span onclick="HideAllMessages()">(hide)</span>';
		else if (gViewType == 3)
			$('divMessage').innerHTML = 'Click on the page to zoom out <span onclick="HideAllMessages()">(hide)</span>';
		
		gDisplayedMessage = true;
	}
}


// ----------------------------------------------------
// 		 Utility
// ----------------------------------------------------

function ShoppersClubClick() 
{
	s.events = 'event25';
	s.eVar5 = 'Flyer_SCC_Filter';
	s.eVar6 = gStoreName + '_Flyer_SCC_Filter';
	s.t();
}

function Send(pageOrSpread)
{
	dateString = (+gWeDate.getMonth() + 1) + '/' + gWeDate.getDate() + '/' + gWeDate.getFullYear();

	s.pageName = 'online flyer';
	s.server = 'crepsflyer';
	s.prop22 = 'online flyer';
	s.prop9 = gStoreNum;
	s.prop17 = dateString;
	s.prop18 = pageOrSpread;

	//alert(gStoreNum + '\n' + dateString + '\n' + pageOrSpread);
	//if (gInitializationComplete)
	s.t();
}