// start - configurable variables

var displayCookie = "_swbcv1";
var pageCookie = "_swbcpagev1";
var rvBreadcrumbcookie = "_swbcrecentv1";
var homepage = "index.html";
var max_recent=3;
var expDays=30;
//var item_cookie_base = 'recent-yhst-5698391348794';
var item_cookie_base = 'recent-simplywhispers-itemv1';
var section_cookie_base = 'recent-yhst-simplywhispers-s';

// end - configurable variables

var expdate = new Date();
var isFromRV = false;
var sURL = new String;
expdate.setTime (expdate.getTime() +  (expDays*24 * 60 * 60 * 1000)); 

function setBCCookieArray(cookieValue, isRoot)
{
   var expireNow = new Date();
   var bits = new Object;
   var x = 0;
   var y = 0;
   var stop = 0;
   var bcrv_display_arr = new Array();
   var bcrv_page_arr = new Array();
   sURL = location.href;
   sURL = sURL.slice(8,sURL.length);
   chunkStart = sURL.indexOf("/");
   sURL = sURL.slice(chunkStart+1,sURL.length);
   while(!stop)
   {
      chunkStart = sURL.indexOf("/");
      if (chunkStart != -1)
      {
         bits[x] = sURL.slice(0,chunkStart)
         sURL = sURL.slice(chunkStart+1,sURL.length);
      }
      else
      {
         stop = 1;
      }
      x++;
   }
   
   var query = sURL.substring((sURL.indexOf('?')) + 1);
   if (query.length > 1 && query.substring(0,2) == 'rv') // for recently viewed items
   {
      var bc_recent_arr = getRecentCookieArray();
      var cookie_count = 0;
      for (var m = 1; m < bc_recent_arr.length; m++) 
      {
         //deleteBCCookies();
         var cook_value = bc_recent_arr[m];
         stop = 0;
         y = 0;
         while(!stop)
         {
            chunkStart = cook_value.indexOf("|");
            if (chunkStart != -1)
            {
               bits[x] = cook_value.slice(0,chunkStart);
               if (cookie_count%2 == 0)
               {
                  // set a display value
                  bcrv_display_arr[y] = cook_value.substring(0, chunkStart);
               }
               else
               {
                  // set a page value
                  bcrv_page_arr[y] = cook_value.substring(0, chunkStart);
                  y++;
               }
               cook_value = cook_value.slice(chunkStart+1,cook_value.length);
            }
            else
            {
               // set the last page value
               bcrv_page_arr[y] = cook_value;
               stop = 1;
            }
            x++;
            cookie_count++;
         }
         if (cook_value == sURL.substring(0, sURL.length-5))
         {
            // we are done.
            break;
         }
         else
         {
            bcrv_display_arr = new Array();
            bcrv_page_arr = new Array();
         }
      }

      // show breadcrumb using recently viewed items cookie
      showBC(bcrv_display_arr, bcrv_page_arr);

      return;
   }
   
   if (isRoot) //the main links on the home page
   {
      // delete all the cookies and set a cookie for this page
      deleteBCCookies();
      
      // set a new cookie for this page
      setCookie (displayCookie + '0', cookieValue, expdate);

      // also set the page
      setCookie (pageCookie + '0', sURL, expdate);

      // show breadcrumb using cookies
      bc_display_arr = getDispCookieArray();
      bc_page_arr = getPageCookieArray();
      showBC(bc_display_arr, bc_page_arr);

      return;
   }
   
   
   var d_cookie_arr = new Array();
   var p_cookie_arr = new Array();
   // get previous cookies
   var i = 0;
   while (getCookie(displayCookie + i) != null) 
   {
      d_cookie_arr[i] = getCookie(displayCookie + i);
      i++; 
   }
   i = 0;
   while (getCookie(pageCookie + i) != null) 
   {
      p_cookie_arr[i] = getCookie(pageCookie + i);
      i++; 
   }   
   
   // check if back button was clicked
   // if back button was clicked then the cookie array should contain the value of the current page
   
   var last_url = getCookie('simplywhispers_lasturl');
   lastpos = last_url.lastIndexOf('/') + 1;
   //alert(last_url.substring(lastpos));   
   var j = 0;
   var isBackClicked = false;
   for (j = p_cookie_arr.length-1; j > 0; j--)
   {
      if (p_cookie_arr[j] == last_url.substring(lastpos) && d_cookie_arr[j-1] == cookieValue)
      {
         isBackClicked = true;
         break; 
      }
   }
   
   if (isBackClicked)
   {
      // clear all the cookies from the current page onwards
      k = 0;
      var arr_len = d_cookie_arr.length;
      for (k = j; k < arr_len; k++) 
      {
         setCookie (displayCookie + k, "", expireNow);
         setCookie (pageCookie + k, "", expireNow);      
      }     
   }
   else if(last_url.indexOf("?rv") == -1)
   {
      var curr_location = d_cookie_arr.length;
      d_cookie_arr[curr_location] = cookieValue;

      // set a new cookie for this page
      setCookie (displayCookie + curr_location, d_cookie_arr[curr_location], expdate);

      // also set the page
      setCookie (pageCookie + curr_location, sURL, expdate);
   }

   // show breadcrumb using cookies
   bc_display_arr = getDispCookieArray();
   bc_page_arr = getPageCookieArray();
   showBC(bc_display_arr, bc_page_arr);
}

function getDispCookieArray()
{
   var i = 0;
   var cookie_arr = new Array();
   while (getCookie(displayCookie + i) != null) 
   {
      cookie_arr[i] = getCookie(displayCookie + i);
      i++;
   }
   return cookie_arr;
}

function getPageCookieArray()
{
   var i = 0;
   var cookie_arr = new Array();
   while (getCookie(pageCookie + i) != null) 
   {
      cookie_arr[i] = getCookie(pageCookie + i);
      i++;
   }
   return cookie_arr;
}

function getRecentCookieArray()
{
   var i = 1;
   var cookie_arr = new Array();
   while (getCookie(rvBreadcrumbcookie + i) != null) 
   {
      cookie_arr[i] = getCookie(rvBreadcrumbcookie + i);
      i++;
   }
   return cookie_arr;
}


function deleteBCCookies()
{
   var cookie_arr = getDispCookieArray();
   var expireNow = new Date();
   for (var i = 0; i < cookie_arr.length; i++) 
   {
      setCookie (displayCookie + i, "", expireNow);
      setCookie (pageCookie + i, "", expireNow);      
   }        
}

function setCookie(name, value, expires, path, domain, secure) 
{
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function showBC(bc_display_arr, bc_page_arr)
{
   
   //var bc_id = document.getElementById('breadcrumb');
   var output = "<a class=\"crummy\" href=\"" + homepage + "\">HOME</a> &#187; ";

   // create showPage() function link to clear cookies
   for (var i = 0; i < bc_display_arr.length-1; i++) 
   {
      output += "<a class=\"crummy\" href=\"javascript:showPage('";
      var link_string = bc_page_arr[i] + "'," + i + ");\">" + bc_display_arr[i] + "</a> &#187; ";
      output += link_string;
   }
   // the last one is not a link
   output += "<font class=\"crummy\"> " + bc_display_arr[bc_display_arr.length-1] + "</font>";

   // print the breadcrumb trail
   //bc_id.innerHTML = output;
   document.write(output);   
}

function showPage(pagename, index)
{
   var cookie_arr = getDispCookieArray();
   var expireNow = new Date();
   //delete all cookies from the clicked breadcrumb
   for (var i = index; i < cookie_arr.length; i++) 
   {
      setCookie (displayCookie + i, "", expireNow);
      setCookie (pageCookie + i, "", expireNow);      
   }        
   window.location.href=pagename;
}

function getCurrBC(bc_display_arr, bc_page_arr)
{
   var output = '';
   
   // create showPage() function link to clear cookies
   for (var i = 0; i < bc_display_arr.length-1; i++) 
   {
      var str = bc_display_arr[i] + "|" + bc_page_arr[i] + "|";
      output += str;
   }
   // the last one is not a link
   var str = bc_display_arr[bc_display_arr.length-1] + "|" + bc_page_arr[bc_display_arr.length-1];
   output += str;
   return output;
}

function set_recent(v, page_type)
{
   var cookie_base  = '';
   if (page_type == 'section')
   {
      cookie_base = section_cookie_base;
   }
   else if (page_type == 'item')
   {
      cookie_base = item_cookie_base;
   }
   var sURL = location.href;
   var current_bc = '';
   var bcrv_display_arr = new Array();
   var bcrv_page_arr = new Array();
   var query = sURL.substring((sURL.indexOf('?')) + 1);
   lastpos = sURL.lastIndexOf('/') + 1;
   
   if (query.length > 1 && query.substring(0,2) == 'rv') // for recently viewed items
   {
      var bc_recent_arr = getRecentCookieArray();
      var cookie_count = 0;
      for (var m = 1; m < bc_recent_arr.length; m++) 
      {
         //deleteBCCookies();
         var cook_value = bc_recent_arr[m];
         stop = 0;
         y = 0;
         
         while(!stop)
         {
            chunkStart = cook_value.indexOf("|");
            if (chunkStart != -1)
            {
               if (cookie_count%2 == 0)
               {
                  // set a display value
                  bcrv_display_arr[y] = cook_value.substring(0, chunkStart);
               }
               else
               {
                  // set a page value
                  bcrv_page_arr[y] = cook_value.substring(0, chunkStart);
                  y++;
               }
               cook_value = cook_value.slice(chunkStart+1,cook_value.length);
            }
            else
            {
               // set the last page value
               bcrv_page_arr[y] = cook_value;
               stop = 1;
            }
            cookie_count++;
         }
         //alert(sURL.substring(lastpos));   
         if (cook_value == sURL.substring(lastpos, sURL.length-5))
         {
            // we are done.
            break;
         }
         else
         {
            bcrv_display_arr = new Array();
            bcrv_page_arr = new Array();
         }
      }
      current_bc = getCurrBC(bcrv_display_arr, bcrv_page_arr);      
   }
   else
   {
      var bc_display_arr = getDispCookieArray();
      var bc_page_arr = getPageCookieArray();
      current_bc = getCurrBC(bc_display_arr, bc_page_arr);      
   }
   var r=new Array()
   var rbc = new Array();

   var i=1,j=1
   while((rbc[i]=getCookie(rvBreadcrumbcookie+j))!=null&&(r[i]=getCookie(cookie_base+j))!=null&&r[i]!=""&&j++<=max_recent)
   {
      if(r[i]!=v)
         i++
      if(i>max_recent)
         i=max_recent
   }
   setCookie(cookie_base+i,v,expdate,'/');
   setCookie(rvBreadcrumbcookie+i,current_bc,expdate,'/');   
   j=i
   while(++j<=max_recent)
   {
      setCookie(cookie_base+j,"",expdate,'/')
      setCookie(rvBreadcrumbcookie+j,"",expdate,'/')
   }
   j=0
   if(i==max_recent&&r[i]!=null&&r[i]!="")
      j=1
   while(--i>0)
   {
      setCookie(cookie_base+i,r[i+j],expdate,'/');
      setCookie(rvBreadcrumbcookie+i,rbc[i+j],expdate,'/');
   }
}

function recent_items(bf,sp,bh,page_type)
{
   var i=1,t="",n=""
   var cookie_base  = '';
   if (page_type == 'section')
   {
      cookie_base = section_cookie_base;
   }
   else if (page_type == 'item')
   {
      cookie_base = item_cookie_base;
   }
   
   if((n=getCookie(cookie_base+i))!=null&&n!="")
   t+=n
   while(++i<=max_recent)
      if((n=getCookie(cookie_base+i))!=null&&n!="")
         t+=sp+n
   if(t!="")
   document.write(bf+t+bh)
}

function winonunload()
{
   var current_url = location.href;
   setCookie ('simplywhispers_lasturl', current_url, expdate); 
}

if(window.attachEvent)
{
   window.attachEvent("onunload", winonunload);
}
else
{
   if(window.addEventListener)
   {
      window.addEventListener("unload", winonunload, false);
   }
   else
   {
      window.onunload = winonunload;
   }
}


