var iShouldBeScrolling=false;

/** This is high-level function.
 * It must react to delta being more/less than zero.
 */
function handle(delta) {
        if (delta < 0 && iShouldBeScrolling==true){
		ycurrentscrollspeed=-6;
		scrollDown();
		ycurrentscrollspeed=0;}
		
        if (delta > 0 && iShouldBeScrolling==true) {
		ycurrentscrollspeed=6;
		scrollUp();
		ycurrentscrollspeed=0;}
		
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
        var delta = 0;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                /** In Opera 9, delta differs in sign as compared to IE.
                 */
                if (window.opera)
                        delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
                delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta)
                handle(delta);
			
        /** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
        if (iShouldBeScrolling==true) {
			if (event.preventDefault) {
                event.preventDefault();
			}
			event.returnValue = false;
		} else {
		event.returnValue = true;
	}
}

/** Initialization code. 
 * If you use your own event management code, change it as required.
 */
if (window.addEventListener)
        /** DOMMouseScroll is for mozilla. */
        window.addEventListener('DOMMouseScroll', wheel, false);
		/** IE/Opera. */
		window.onmousewheel = document.onmousewheel = wheel;





//Variables for submenu
var runNumber = 0;
var previousMenu = "";
var arrowDirection="";
//

//Variables for javascroller
var STATIC_SCROLL_SPEED=6;
var ycurrentscrollspeed=0;
var topValue = -10;
//

//Variables for photogallery toggle
var runNumberGalToggle = 0;
var previousMenuGal = "";
var lastWasClosed = 0;
var lastWasOpened = 1;
//


//Functions for cookie modification
function createCookie(name,value,days) {
var expires = "";
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)===' ') { c = c.substring(1,c.length); }
		if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length,c.length); }
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
/////////////////////////////////////////////////

function toggleSubMenuArrow(menuBtn,direction) {
		if (menuBtn===undefined || menuBtn===null) {
		return;
		}
		if (direction===undefined || direction===null) {
		return;
		}
	var buttonId = document.getElementById(menuBtn + '_button');
	var buttonClass = buttonId.className;
	buttonClass = buttonClass.replace("_right", "");
	buttonClass = buttonClass.replace("_down", "");
		buttonId.className=buttonClass+'_'+direction;
}

//Functions for submenu toggling
function toggleSubMenu(menu) {
	if (menu===undefined || menu===null) {
	return;
}
if (runNumber === 0) {
	arrowDirection="down";
	document.getElementById(menu).style.display="block";
	toggleSubMenuArrow(menu,arrowDirection);
	createCookie("arrowDirection",arrowDirection,"365");
	createCookie("previousMenu",menu,"365");
	runNumber = 1;
	previousMenu = menu;
	arrowDirection="right";
	return;
	
}

if (runNumber > 0) {
	toggleSubMenuArrow(previousMenu,arrowDirection);
	document.getElementById(previousMenu).style.display="none";
	if (previousMenu == menu) {
		runNumber = 0;
		previousMenu = "";
		eraseCookie("previousMenu");	
		return;
	} 
	
	if (arrowDirection=="right") {
		arrowDirection="down";
	} else {
		arrowDirection="right";
	}
	
	
	toggleSubMenuArrow(menu,arrowDirection);
	document.getElementById(menu).style.display="block";
	createCookie("previousMenu",menu,"365");
	createCookie("arrowDirection",arrowDirection,"365");
	previousMenu = menu;
	if (arrowDirection=="right") {
		arrowDirection="down";
	} else {
		arrowDirection="right";
	}
	return;
}
/*
if (runNumber > 0) {
	
	if (previousMenu == menu) {	
		return;
	} 
	
	toggleSubMenuArrow(previousMenu,arrowDirection);
	document.getElementById(previousMenu).style.display="none";

	
	
	if (arrowDirection=="right") {
		arrowDirection="down";
	} else {
		arrowDirection="right";
	}
	
	
	toggleSubMenuArrow(menu,arrowDirection);
	document.getElementById(menu).style.display="block";
	
	createCookie("previousMenu",menu,"365");
	createCookie("arrowDirection",arrowDirection,"365");
	previousMenu = menu;
	if (arrowDirection=="right") {
		arrowDirection="down";
	} else {
		arrowDirection="right";
	}
	return;
}
*/

}
function toggleSubMenuFromCookie() {
	var cookieMenu = readCookie("previousMenu");
	var cookieDirection = readCookie("arrowDirection");
	if (cookieMenu===undefined || cookieDirection===undefined) {
	return;
}
	else {
	toggleSubMenu(cookieMenu);
	toggleSubMenuArrow(cookieMenu,cookieDirection);
}
}
/////////////////////////////////////////////////

//Functions for javascroller
window.setInterval("scrollUp()",1);
window.setInterval("scrollDown()",1);

function scrollToDiv(id){
	topValue = document.getElementById(id);
	topValue = -topValue.offsetTop + 8;
	var contents=document.getElementById('contents');
if(contents.style) {
	contents.style.top = topValue + "px";
}
else {
	contents.setAttribute("style", "top: " + topValue + "px");
}


}

function up(){
	if (ycurrentscrollspeed !== 0)
{
	topValue += 10;
	var contents=document.getElementById("contents");

		if (topValue >= -7) {
			topValue = -6;
		}
	if(contents.style) {
		contents.style.top = topValue + "px";
	}
	else {
		contents.setAttribute("style", "top: " + topValue + "px");
	}
	
}
}

function down(){
	if (ycurrentscrollspeed !== 0)
{
	topValue -= 10;
	var contents=document.getElementById("contents");
		if(topValue < -contents.clientHeight) {
			topValue = -contents.clientHeight;
		}
		
		if(contents.style) {
			contents.style.top = topValue + "px";
		}
		else {
			contents.setAttribute("style", "top: " + topValue + "px");
		}
	
}
}

function scrollUp(){

	topValue += ycurrentscrollspeed;
	up();
}

function scrollDown(){

		topValue += ycurrentscrollspeed;
		down();

}
 


function stopEvent(evt) {
	    var e=(evt)?evt:window.event;
	    if (window.event) {
	        e.cancelBubble=true;
	    } else {
	        e.stopPropagation();
	    }
	}
/////////////////////////////////////////////////

//Functions for image gallery toggler
function toggleGalleryCategory(galleryId) {
	if (galleryId===undefined || galleryId===null) {
	return;
}

if ((lastWasClosed === 0) && (lastWasOpened == 1)) {
	
	if (runNumberGalToggle === 0) {
		document.getElementById('category-first').style.height="57px";
		
		if (galleryId != 'category-first') {
			document.getElementById(galleryId).style.height="346px";
			previousMenuGal = galleryId;
			runNumberGalToggle = 1;
			lastWasClosed = 0;
			lastWasOpened = 1;
			return;		
		} else {
			previousMenuGal = galleryId;
			runNumberGalToggle = 1;
			lastWasClosed = 1;
			lastWasOpened = 0;
			return;
		}
		
	}
	
	if (runNumberGalToggle > 0) { 
		if (previousMenuGal == galleryId) {
			document.getElementById(previousMenuGal).style.height="57px";
			runNumberGalToggle = 1;
			lastWasClosed = 1;
			lastWasOpened = 0;
			return;
		}
		document.getElementById(previousMenuGal).style.height="57px";
		document.getElementById(galleryId).style.height="346px";
		previousMenuGal = galleryId;
		runNumberGalToggle = 1;
		lastWasClosed = 0;
		lastWasOpened = 1;
		return;
	}

	
	
}

if ((lastWasClosed == 1) && (lastWasOpened === 0)) {
	document.getElementById(galleryId).style.height="346px";
	previousMenuGal = galleryId;
	runNumberGalToggle = 1;
	lastWasClosed = 0;
	lastWasOpened = 1;
	return;
	
}
	
}

function insertAfter( referenceNode, newNode )
{
    referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}

function loadPage(){
	var page = document.getElementById('page_loading')
		if (page===undefined || page===null) {
		return;
	}
	var page2 = document.getElementById('center')
		if (page2===undefined || page2===null) {
		return;
	}
	page.style.display='block';
	page2.style.display='block';
	page2.innerHTML='<img src="http://merenguebakery.com/skin/frontend/default/merengue/images/loading.gif">';
		
	//$("#page_loading").append('<div id="center"><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/loading.gif"/></div>');
	//$('page_loading').insert('<div id="center"><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/loading.gif"/></div>');
	//insertAfter(document.getElementById("page_loading"),'<div id="center"><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/loading.gif"/></div>');
	//page2.style.top='50%';
	//page2.style.left='50%';
	page.style.height=document.viewport.getHeight() + 'px';
	return;
}

function rowRollOver(row){
	if (row===undefined || row===null) {
	return;
}
row.style.backgroundPosition = "0px 0px";
}
function rowRollOut(row){
	if (row===undefined || row===null) {
	return;
}
row.style.backgroundPosition = "0px -347px";

}
/////////////////////////////////////////////////
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}

function PrintScrollTop(id){
	if (id===undefined || id===null) {
		id = "";
	}
	var ver = getInternetExplorerVersion();
	var outOrLeave = "onmouseleave";
	if (ver == -1){
		outOrLeave = "onmouseout";
	}
	document.write('<span class="topUpArrow' + id + '"><a href="javascript:void(0)" onmousedown="ycurrentscrollspeed=6" onmouseup="ycurrentscrollspeed=0" onmouseout="ycurrentscrollspeed=0"></a></span>');
	document.write('<span class="topDownArrow' + id + '"><a href="javascript:void(0)" onmousedown="ycurrentscrollspeed=-6" onmouseup="ycurrentscrollspeed=0" onmouseout="ycurrentscrollspeed=0"></a></span>');
	document.write('<span class="bottomUpArrow"><a href="javascript:void(0)" onmousedown="ycurrentscrollspeed=6" onmouseup="ycurrentscrollspeed=0" onmouseout="ycurrentscrollspeed=0"></a></span>');
	document.write('<span class="bottomDownArrow"><a href="javascript:void(0)" onmousedown="ycurrentscrollspeed=-6" onmouseup="ycurrentscrollspeed=0" onmouseout="ycurrentscrollspeed=0"></a></span>');
	document.write('<img src="http://merenguebakery.com/skin/frontend/default/merengue/images/fade' + id + '.png" alt="" class="fadeTop' + id + '"/>');
	document.write('<img src="http://merenguebakery.com/skin/frontend/default/merengue/images/fade' + id + '_bottom.png" alt="" class="fadeBot' + id + '"/>');
	document.write('<div id="scrollable' + id + '" onmouseover="iShouldBeScrolling=true" ' + outOrLeave +'="iShouldBeScrolling=false"><div id="contents">');
}

function PrintScrollBot(){
	document.write('</div></div>');
}


function PrintImageBorderTop(){
document.writeln('	<table border="0" cellspacing="0" cellpadding="0">');
document.writeln('	  <tr>');
document.writeln('	    <td><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/corner_top_left.png" width="22" height="22" alt="" /></td>');
document.writeln('	    <td style="background-image:url(http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/repeat_top.png)">&nbsp;</td>');
document.writeln('	    <td><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/corner_top_right.png" width="22" height="22" alt="" /></td>');
document.writeln('	  </tr>');
document.writeln('	  <tr>');
document.writeln('	    <td style="background-image:url(http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/repeat_left.png)">&nbsp;</td>');
document.writeln('	    <td>');
}

function PrintImageBorderBot(){
document.writeln('	</td>');
document.writeln('    <td style="background-image:url(http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/repeat_right.png)">&nbsp;</td>');
document.writeln('  </tr>');
document.writeln('  <tr>');
document.writeln('    <td><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/corner_bottom_left.png" width="22" height="22" alt="" /></td>');
document.writeln('    <td style="background-image:url(http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/repeat_bottom.png)">&nbsp;</td>');
document.writeln('    <td><img src="http://merenguebakery.com/skin/frontend/default/merengue/images/image_box/corner_bottom_right.png" width="22" height="22" alt="" /></td>');
document.writeln('  </tr>');
document.writeln('</table>');
}
//////////////////
//Directions Page JS//

	var geocoder, map, addressMarker, gdir, fromAddress, toAddress;

	function destroyDirections(){
		document.getElementById("directions").innerHTML = "";
		document.getElementById("map_canvas").innerHTML = "";
		//document.getElementById('PopUpBlanket').style.display = 'none';
		Effect.BlindUp('PopUpBlanket');
	}

	/*
	**
	* Bootstrap function to setup map and apply
	* custom company marker
	*/
	function initialize() {
	  if (GBrowserIsCompatible()) {
	    //settings
	    var companyMarkerImage= "http://merenguebakery.com/skin/frontend/default/merengue/images/map_icon.png";
	    var companyLatLng     = new GLatLng(34.145908,-118.000248);
	    var companyMarkerSize = new GSize(64, 64); //width, height
	    var defaultZoomLevel  = 16;
		toAddress = "110 E Colorado Blvd, Monrovia, CA 91016";
	    //end settings

	    //setup elements
	    map   = new GMap2(document.getElementById("map_canvas"));
	    gdir  = new GDirections(map, document.getElementById("directions"));

	    //error handler
	    GEvent.addListener(gdir, "error", handleErrors);

	    //set company marker
	    var companyMarker = createMarker(companyLatLng, companyMarkerImage, companyMarkerSize);

	    //set map center
	    map.setCenter(companyLatLng, defaultZoomLevel);
	    map.addOverlay(companyMarker);
	  }
	}

	/*
	**
	* Looks up the directions, overlays route on map,
	* and prints turn-by-turn to #directions.
	*/

	function overlayDirections()
	{
		
		if (getInternetExplorerVersion() > -1 && getInternetExplorerVersion() < 7) {
			document.form.submit()
			return true;
		}
		initialize();
		document.getElementById('PopUpBlanket').style.display = 'block';
		initialize();
		document.getElementById('close_directions').style.height = (document.documentElement.clientHeight) + 'px';
		document.getElementById('close_directions_nest').style.height = (document.documentElement.clientHeight) + 'px';
		
	    fromAddress =
	      document.getElementById("street").value
	      + " " + document.getElementById("city").value
	      + " " + document.getElementById("state").options[document.getElementById("state").selectedIndex].value
	      + " " + document.getElementById("zip").value;

	    var language  = document.getElementById("language").options[document.getElementById("language").selectedIndex].value;

	    gdir.load("from: " + fromAddress + " to: " + toAddress, { "locale": language });
	
	document.getElementById('PopUpBlanket').style.height = (document.documentElement.clientHeight) + 'px';
	}


	/*
	**
	* Wrapper function to create/return a marker object
	* with custom image
	*/
	function createMarker(latlng, imageURL, imageSize)
	{

	    var marker      = new GIcon(G_DEFAULT_ICON);
	    marker.image    = imageURL;
	    marker.iconSize = imageSize;

	    var options     =  { icon: marker };

	    return new GMarker(latlng, options);

	}



	/*
	**
	* Display error to user
	*
	*/
	function handleErrors(){
	   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS){
	     alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
		}
	   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR) {
	     alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
		}
	   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY) {
	     alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
		}
	   else if (gdir.getStatus().code == G_GEO_BAD_KEY) {
	     alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
		}
	   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST) {
	     alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
		}
	   else { alert("An unknown error occurred. Please wait a second and try again.");
		}
		destroyDirections();
	}

