﻿/*
    (C) 2006 MIMIS CAFE WEB TEAM
*/
var url = '';
var storeDDL = '';
var tCtrl = '';
var arrMapLon = new Array();
var arrMapLat = new Array();
var showMap = true;
var timer;

function setTimer()
{
    
}

function GetStores(zipcode, ddl)
{
    var zip = zipcode.value;
    if (zip.length == 5) {
        var pars = "action=getstorep&z=" + zip; 
        storeDDL = ddl; 
        
        var ajax = new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: pars,
            onComplete: ShowLocations
         });
    }
}

function ShowLocations(response)
{
    var objStores = eval('(' + response.responseText + ')');
    var xml = response.responseXML;
    var ul = document.getElementById(storeDDL);
    var len = objStores.Stores.length;
    var i = 0; 
   
    if (ul) {
       for (i = ul.length - 1; i > -1; i--)
       {
            ul.options[i] = null;
       }
       for (i = 0; i < len; i++) {
           var cname =  objStores.Stores[i].State + ' - ' + objStores.Stores[i].City + ' - ' + objStores.Stores[i].Address;
           var companyName = cname;
           var id =  objStores.Stores[i].StoreID;
           ul.options[i] = new Option(companyName, id);
        }
        ul.options[i] = new Option('STORE NOT LISTED', '-1'); 
        if (len == -1)
        {
            ul.options[0] = new Option('No Stores Found', '-1');
        }
        CheckStoresList(ul);                   
    }  
}
function CheckStoresList(ul)
{
    var storeDropDown = document.getElementsByTagName('select');
    for (j = 0; j < storeDropDown.length; j++) {
        var str = new String(storeDropDown[j].id); 
        if (str.indexOf('ddlStoreFullList') > -1)
        {
            CheckList(ul, storeDropDown[j].id); 
            break; 
        }    
    }
}
/* LOCATOR */
function SearchMap() {
    if ($('txtZipCode').value != '') {
    
        try {
            $('bgRight').style.visibility = 'hidden';
        } catch (e) {}
    
        if ($('chkDisclaimer')) { if ($('chkDisclaimer').checked == true) { SetMapCookie(); } }
        showMap = true;
        var pars = "action=finder&l=10&z=" + document.getElementById('txtZipCode').value + "&r=" + document.getElementById('selRadius').value;
        var ajax = new Ajax.Request(
            url,
            {
                method: 'post',
                parameters: pars,
                //onComplete: ShowSearchResults2
                onSuccess: ShowSearchResults2,
                onFailure: ShowNoResults
        }
        );
       
        $('searchResults').innerHTML = '';
        ResetArray();
    } else {
        $('txtZipCode').focus(); 
        alert('Must enter Zip Code'); 
    } 
}
function SearchMap2(state,page,perPage)
{
    try {
        $('bgRight').style.visibility = 'hidden';
    } catch (e) {}

    if ($('chkDisclaimer')) { if ($('chkDisclaimer').checked == true) { SetMapCookie(); } }
    showMap = false;
    var pars = "action=getstorestate&l=10&state=" + state + "&page=" + page + "&perPage=" + perPage;
    var ajax = new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: pars,
            onComplete: ShowSearchResults2   
    });
   
    $('searchResults').innerHTML = '';
    ResetArray();
    
}
function SetMapCookie()
{
   var date = new Date();
   date.setTime(date.getTime()+(365*24*60*60*1000));
   document.cookie = "map=no; expires="+date.toGMTString();
}

function ShowSearchResults2(response)
{
    try {
        var noResults = false;
        var div = $('searchResults'); 
        var objStores = eval('(' + response.responseText + ')');
        if (objStores.Stores.length > 0) {
            $('imgMap').style.display = 'block'; 
            
            var len = (objStores.Stores.length == 11 ? objStores.Stores.length - 1 : objStores.Stores.length);
            
            for (i = 0; i < len; i++)
            {
                var id = objStores.Stores[i].StoreID;
                var lon = parseFloat(objStores.Stores[i].Lon) * -1;
                var lat = objStores.Stores[i].Lat; 
                var html = '<table class="locations" width="100%"><tr><td width="5%" class="number" valign="top" align="right">' + (i + 1) + '</td><td width="47%"><table><tr><td colspan="2" valign="top"><strong>' + objStores.Stores[i].Name + '</strong><br />' + 
                    objStores.Stores[i].Address + '<br />' + objStores.Stores[i].City + ' ' + objStores.Stores[i].State + ' ' + objStores.Stores[i].Zip + '<br />' + objStores.Stores[i].Phone +
                    '</td></tr><tr><td><img src="/images/icons/directionals.gif" width="70" height="70" alt="STORE DIRECTIONS" /></td><td><br />' + objStores.Stores[i].Directionals + '</td></tr>' +
                    '<tr><td colspan="2"><br />';
                if (objStores.Stores[i].Distance != "0.00") {
                    html += '<strong>About ' + FormatMiles(objStores.Stores[i].Distance) + ' miles away</strong><br />';
                }
                html += 'Enter Zip Code for Directions:<br /><input type="text" id="zip' + id + '" style="width: 70px;" class="textBox" maxlength="5" /><input type="button" class="btn" value="Get Directions" onclick="evalGoogle(\'zip'+ id +'\', '+ lon +', '+ lat +');" /></td></tr>' +
                    '</table></td><td width="1%" valign="top" class="middleBG">&nbsp;</td>' +
                    '<td width="47%" valign="top"><table width="100%"><tr>' +
                    '<td valign="top"><img src="/images/icons/hours.gif" width="70" height="70" alt="STORE HOURS" /></td><td>HOURS:<br />' + 
                    '<table class="hours" width="100%" cellpadding="0" cellspacing="0"><tr><td width="50%">Mon</td><td width="50%">' + objStores.Stores[i].Hours.M + '</td></tr>' +
                    '<tr><td>Tues</td><td>' + objStores.Stores[i].Hours.T + '</td></tr>' +
                    '<tr><td>Wed</td><td>' + objStores.Stores[i].Hours.W + '</td></tr>' +
                    '<tr><td>Thurs</td><td>' + objStores.Stores[i].Hours.Th + '</td></tr>' +
                    '<tr><td>Fri</td><td>' + objStores.Stores[i].Hours.F + '</td></tr>' +
                    '<tr><td>Sat</td><td>' + objStores.Stores[i].Hours.Sa + '</td></tr>' +
                    '<tr><td>Sun</td><td>' + objStores.Stores[i].Hours.Su + '</td></tr></table></td></tr>';
                     if (objStores.Stores[i].Awards != 'NONE') {
                        html += '<tr><td><img src="/images/icons/awards.gif" width="70" height="70" alt="STORE AWARDS" /></td>';
                            '<td>AWARDS</td></tr>' +
                            '<tr>' +
                                '<td></td>' +
                                '<td></td>' +
                            '</tr>';
                    }
                    html += '<tr><td colspan="2"><!-- extra --></td></tr></table></td></tr></table>';
                
                var div2 = document.createElement('div');
                var divNum = document.createElement('div');
                divNum.className = 'number';
                divNum.innerHTML = i + 1;
                //div2.appendChild(divNum);
                
                div2.innerHTML = boxTop + html + boxBot;
                
                div.appendChild(div2);
                arrMapLat[i] = lat;
                arrMapLon[i] = lon; 
            }
        
             if (showMap == true) { 
                BuildMap();
            } else {
                $('imgMap').style.display = 'none'; 
            }
            
            try {
                $('bgRight').style.visibility = 'visible';
            } catch (e) {}
            
        } else {
        div.innerHTML = '<strong>Sorry.</strong><br />We are unable to locate a Mimis Cafe Store based on your zip code and radius provided.<br />Please increase your search radius or try our search by state feature.  <br />Keep checking with us periodically as we may be coming to your area very soon.';
        noResults = true;
        $('imgMap').style.display = 'none';  
    } 
    
    try {
        HideAll();
        
    } catch (e) {}
    
    // paging
    try
    {
        if (!noResults) {
            var next = objStores.Paging.Next;
            var prev = objStores.Paging.Previous;
            var paging = document.createElement('div');
            paging.innerHTML = '';
            if (next && prev) {
                if (prev != '-1') { paging.innerHTML += '<a href="#" onclick="currentPage=' + prev + ';LoadMap(1);">Previous</a>'; }
                paging.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                if (next != '-1') { paging.innerHTML += '<a href="#" onclick="currentPage=' + next + ';LoadMap(1);">Next</a>'; }
            }
            div.appendChild(paging);
        }
    }
    catch (e) {  }
            
        
    } catch (e) {  }
}

function ShowNoResults()
{
    var div = $('searchResults'); 
    div.innerHTML = '<strong>Sorry.</strong><br />We are unable to locate a Mimis Cafe Store based on your zip code and radius provided.<br />Please increase your search radius or try our search by state feature.  <br />Keep checking with us periodically as we may be coming to your area very soon.';
    //noResults = true;
    $('imgMap').style.display = 'none';  
}

function ShowSearchResults(response) {
try {
    var noResults = false;
    var xml = response.responseXML;
    var storesNode = xml.getElementsByTagName('Row'); 
    var len = storesNode.length - 1;
    if (showMap == false) len++;
    var div = $('searchResults'); 
    if (len > 0) { 
        $('imgMap').style.display = 'block';
        for (i = 0; i < len; i++)
        {
            var dl = document.createElement('dl');
            var dt = document.createElement('dt');
            var dd = document.createElement('dd');
            var ddD = document.createElement('dd'); 
            var cssBold = document.createAttribute('class');
            var id = GetNodeValue(storesNode[i], 'ID');
            var lon = parseFloat(GetNodeValue(storesNode[i], 'Lon')) * -1;
            var lat = GetNodeValue(storesNode[i], 'Lat'); 
            cssBold.value = 'bold';
            dt.setAttributeNode(cssBold); 
            dt.innerHTML = (i + 1) + '. ' +GetNodeValue(storesNode[i], 'CompanyName');
            dl.appendChild(dt);
            ddD.innerHTML = 'Enter Zip Code for Directions: <input type="text" id="zip' + id + '" style="width: 50px;" class="textBox" /><input type="button" class="btn" value="Go" onclick="evalGoogle(\'zip'+ id +'\', '+ lon +', '+ lat +');" />';
            dd.innerHTML = GetNodeValue(storesNode[i], 'Address') + '<br />' + 
                GetNodeValue(storesNode[i], 'City') + ' ' +
                GetNodeValue(storesNode[i], 'State') + ' ' +
                GetNodeValue(storesNode[i], 'PostalCode') + '<br />' +
                GetNodeValue(storesNode[i], 'PhoneNumber') + '<br />';
                
            try {
                dd.innerHTML += '<div class="bold">About ' + FormatMiles(GetNodeValue(storesNode[i], 'Distance')) + ' miles away</div>';
            } catch (e) {}
            
            dd.innerHTML += '<div id="storeInfo'+id+'" style="display: block;"></div>';
                
            dl.appendChild(dd);
            dl.appendChild(ddD);  
            var s = dl.innerHTML;
            
            var div2 = document.createElement('div');
            div2.innerHTML = boxTop + '<div class="icons"><a style="font-size: 10px;" href="javascript:void(0);" onclick="loadStore(this, ' + id + ');"><img src="/images/icons/hours.gif" width="40" height="40" alt="HOURS" /></a><br />HOURS<br /></div>' + s + boxBot;
            
            div.appendChild(div2);
            arrMapLat[i] = lat;
            arrMapLon[i] = lon;  
        }
        
        if (showMap == true) { 
            BuildMap();
        } else {
            $('imgMap').style.display = 'none'; 
        }
        
        try {
            $('bgRight').style.visibility = 'visible';
        } catch (e) {}
    
    } else {
        div.innerHTML = '<strong>Sorry.</strong><br />We are unable to locate a Mimis Cafe Store based on your zip code and radius provided.<br />Please increase your search radius or try our search by state feature.  <br />Keep checking with us periodically as we may be coming to your area very soon.';
        noResults = true;
        $('imgMap').style.display = 'none';  
    } 
    
    try {
        HideAll();
        
    } catch (e) {}
    
    // paging
    try
    {
        if (!noResults) {
            var next = xml.firstChild.getAttribute("NextPage");
            var prev = xml.firstChild.getAttribute("PrevPage");
            var paging = document.createElement('div');
            paging.innerHTML = '';
            if (next && prev) {
                if (prev != '-1') { paging.innerHTML += '<a href="#" onclick="currentPage=' + prev + ';LoadMap(1);">Previous</a>'; }
                paging.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                if (next != '-1') { paging.innerHTML += '<a href="#" onclick="currentPage=' + next + ';LoadMap(1);">Next</a>'; }
            }
            div.appendChild(paging);
        }
    }
    catch (e) {}
    
} catch (e) {  }
}

function loadStore(c,id) {
    _storeID = id;
    var pars = 'action=getstore&sid=' + id;
    var ajax = new Ajax.Request(
        url,
        {
            method: 'post',
            parameters: pars,
            onComplete: showStoreInfo     
    });  
}
var _storeID = 0;
function showStoreInfo(response) {
    var xml = response.responseXML;
    var div = $('storeInfo' + _storeID); 
    var storeNode = xml.getElementsByTagName('Response');
    if (storeNode.length == 1 && div && div.innerHTML == '') { 
         var directionals = '';
         try {
            directionals = GetNodeValue(storeNode[0], 'Directionals');
        } catch (e) {  }
        var text = '';
        if (directionals.length > 0) {
            text = "<br /><strong>Directionals:</strong><div style='position: relative; width: 325px; font-style: italic;'>" + directionals + "</div><br />";
        }
        text += "<table width='325'>" +
            "<tr><td><strong>Hours:</strong></td><td width='25%'>Sun</td><td width='60%'>" + GetNodeValue(storeNode[0], 'HoursSun') + "</td></tr>" +
            "<tr><td rowspan='6' width='15%'>&nbsp;</td><td>Mon</td><td>" + GetNodeValue(storeNode[0], 'HoursMon') + "</td></tr>" +
            "<tr><td>Tue</td><td>" + GetNodeValue(storeNode[0], 'HoursTues') + "</td></tr>" +
            "<tr><td>Wed</td><td>" + GetNodeValue(storeNode[0], 'HoursWed') + "</td></tr>" +
            "<tr><td>Thu</td><td>" + GetNodeValue(storeNode[0], 'HoursThurs') + "</td></tr>" +
            "<tr><td>Fri</td><td>" + GetNodeValue(storeNode[0], 'HoursFri') + "</td></tr>" +
            "<tr><td>Sat</td><td>" + GetNodeValue(storeNode[0], 'HoursSat') + "</td></tr>" +
            "</table><br /><br />";
         div.innerHTML = text;
    } else {
        div.innerHTML = '';
    }
}

function BuildMap() {
    var map = new GMap2(document.getElementById('imgMap'));
    map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); 
    var mid = setMidPoint();
    map.setCenter(new GLatLng(mid[0], mid[1]), getZoomLevel()); 
    for (i = 0; i < arrMapLat.length; i++) {
        var icon = new GIcon();
        icon.image = "../images/locator/" + (i+1) + ".png";
        icon.iconSize = new GSize(20,34); 
        icon.iconAnchor = new GPoint(6,20);
        var point = new GLatLng(parseFloat(arrMapLat[i]),parseFloat(arrMapLon[i]));
        var marker =  new GMarker(point, icon);//, true)
        map.addOverlay(marker);
    }  
}

function FormatMiles(s) {
    var p = s.indexOf('.');
    if (p == -1) { return s; }
    else {
        var t = s.substring(0, p);
        var r = s.substring(p, p + 3);
        return t + r;   
    }   
}

function setMidPoint() {
    var mid = new Array();
    var lo = 0;
    var la = 0;
    var len = arrMapLat.length; 
    for (i = 0; i < arrMapLat.length; i++) {
        la += parseFloat(arrMapLat[i]);
        lo += parseFloat(arrMapLon[i]);  
    }
    mid[0] = parseFloat(la / len); mid[1] = parseFloat(lo / len); 
    return mid; 
}

function getZoomLevel() {
    var d = parseInt($('selRadius').value);
    var z = 9; 
    switch (d) {
        case 5:
            z = 11;
            break;
        case 10:
            z = 10; 
            break;  
        case 25:
        case 50:
            z = 8;
            break; 
        case 100: 
        case 150:
        case 200:
            z = 7; 
            break;          
    }
    // override for 1 result set 
    if (arrMapLat.length == 1) { z= 15; }  
    return z; 
}

function ResetArray() {
    arrMapLat = new Array(); arrMapLon = new Array();    
}

function evalGoogle(zip, lon, lat) {
    var d = $(zip);
    if (d.value != '') { 
        window.open("http://maps.google.com/maps?q=from:"+d.value+"+to:"+lat+","+lon, 'maps', '');
    } else {
        d.focus();
        alert('Enter Zip Code');  
    }  
}
/* end of LOCATOR */
function CheckeClubUserName(chk, ctrl)
{
    if (chk.checked) {
        CallCheckeClubUserName(ctrl);
    }
}
var tCtrl;
function CallCheckeClubUserName(ctrl)
{
    tCtrl = $(ctrl);
    var pars = "action=ve&e=" + tCtrl.value;
    var ajax = new Ajax.Request(
        urleClub,
        {
            method: 'post',
            parameters: pars,
            onComplete: CheckeClubUserNameResponse   
    });
}

function CheckeClubUserNameResponse(response)
{
    var msg = $('eClubUserNameMsg');
    if (response.responseText == "True") {
         msg.innerHTML = '<strong><span style="font-weight: bold; color: #910000;">!</span> This email address is already in use.</strong>';
         tCtrl.focus();
    } else { 
        msg.innerHTML = '';
    }  
}


/* menu */
function UpdateCustomMenu(chk,m)
{
    var action = 'add';
    if (chk.type == "checkbox") {
        if (!chk.checked) {
            action = 'remove'; 
        }
        var pars = "action=" + action + "&m=" + m;
        var ajax = new Ajax.Request(
            urlmn,
            {
                method: 'post',
                parameters: pars,
                onComplete: UpdateCustomMenuComplete 
        });     
    } 
}

function UpdateCustomMenuComplete(response) {
}

function GetCustomMenu() {
    var pars = "action=list";
    var ajax = new Ajax.Request(
        urlmn,
        {
            method: 'post',
            parameters: pars,
            onComplete:   GetCustomMenuComplete
    });     
}

function GetCustomMenuComplete(response) {
    var xml = response.responseXML;
    
    var menuNodes = xml.getElementsByTagName('Row');
    $('customMenu').innerHTML = '';
    for (i = 0; i < menuNodes.length; i++) {
        var h3 = document.createElement('h3');
        var p = document.createElement('p');
       
        h3.innerHTML = GetNodeValue(menuNodes[i], 'Title');
        p.innerHTML = GetNodeValue(menuNodes[i], 'Description');
       
        $('customMenu').appendChild(h3);  
        $('customMenu').appendChild(p);   
    }
}
function SaveCustomMenu() {
    var pars = "action=save";
    var ajax = new Ajax.Request(
        urlmn,
        {
            method: 'post',
            parameters: pars,
            onComplete:   SaveCustomMenuComplete
    });     
}
function SaveCustomMenuComplete(response) {
    if (response.responseText == "Saved") {
        alert('Custom Menu Saved'); 
    } 
}

function ImportCustomMenu() {
    var pars = "action=import";
    var ajax = new Ajax.Request(
        urlmn,
        {
            method: 'post',
            parameters: pars,
            onComplete:   ImportCustomMenuComplete
    });     
}
function ImportCustomMenuComplete(response) {
    if (response.responseText == "Import") {
         GetCustomMenu();
    } 
}


/* end of menu */

var urleClub = 'eClub.ashx';
var urlst = 'StoreFinder.ashx';
var urlmn = 'Menu.ashx';


/* */
function ShowPrintable(id)
{
    url = 'printmenu.aspx?ID=' + id;
    target = '_blank';
    params = 'width=750,height=600,scrollbars';
    
    OpenWindow(url, target, params);
}
function DownloadMenu()
{
    url = '';
    target = '_blank';
    params = '';
}


function OpenWindow(url, target, params)
{
    window.open(url, target, params);
}


var boxTop = '<br /><br /><div class="box1"><div class="boxTR">&nbsp;</div><div class="boxBL"><div class="boxBR">';
var boxTop2 = '<br /><br /><div class="box2"><div class="boxTR">&nbsp;</div><div class="boxBL"><div class="boxBR">';
var boxBot = '<br /><br /></div></div></div>';