  function rateEntry(entryId, memberRating, elementToUpdateId) {
    var url = 'memberAction.do';
    new Ajax.Request(url,
      {
        method:'get',
        parameters:{ 'entryId':entryId, 'memberRating':memberRating, 'action':'rate' },
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          $(elementToUpdateId).innerHTML = response;
          $("firstToRateDiv").innerHTML = "";
          dcsMultiTrack('DCSext.w_rate','1','DCSext.w_interact','1'); // webtrends
        },
        onFailure: function(){ alert('Error while rating'); }
      });        
  }

  function cmsKeysOn() {
    var image = new Image();
    var millis = new Date().getTime();
    image.src = "dynamicImage.do?cmsKeys=show&clearCache=true&key=unknown&forceReload=" + millis;
    alert("Press Control-F5 to clear the cache in your browser and reload the page.");
  }

  function cmsKeysOff() {
    var image = new Image();
    var millis = new Date().getTime();
    image.src = "dynamicImage.do?cmsKeys=hide&clearCache=true&key=unknown&forceReload=" + millis;
    alert("Press Control-F5 to clear the cache in your browser and reload the page.");
  }

  function debugObj(object) {
    var s = "";
    for(var p in object) {
      s += p + ": " + object[p] + "\n";
    }
    return s;
  }

  function toggleFavorite(entryId, onFlag, addTitle, remTitle) {
//        alert('toggling favorite ' + entryId + ' ' + onFlag);
	var url = 'memberAction.do';
    var action = onFlag ? 'addFavorite' : 'removeFavorite'
    new Ajax.Request(url,
    {
        method:'get',
        parameters:{ 'entryId':entryId, 'action': action },
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          if ( response.indexOf('SESSION_EXPIRED') >= 0 ) {
//                alert('your session has expired and you must login again');
          } else {
            var newImage = 'images/' + (onFlag ? 'favoriteYes' : 'favoriteAdd') + '.gif';
//                var newScript = 'toggleFavorite(' + entryId + ',' + (!onFlag) + ')';
//                alert('changing script to ' + newScript + ' and new image to ' + newImage);
            var imageId = 'favoriteImage' + entryId;
            //alert('object is ' +debugObj($(imageId)));
            $(imageId).src = newImage;
            $(imageId).onclick = function(e) { toggleFavorite(entryId,!onFlag, addTitle, remTitle); };
            $(imageId).onmouseover= onFlag ? function(e) { roll_over(imageId, 'images/favoriteRemove.gif'); } : "";
            $(imageId).onmouseout= onFlag ? function(e) { roll_over(imageId, 'images/favoriteYes.gif'); } : "";
            $(imageId).title= onFlag ? remTitle : addTitle;
          } 
          dcsMultiTrack('DCSext.w_favorite','1','DCSext.w_interact','1'); // webtrends
        },
        onFailure: function(){ alert('Error while adding favorite'); }
    });        
  }     

  function removeFavorite(entryId, elementToUpdateId) {
    var url = 'memberAction.do';
    new Ajax.Request(url,
      {
        method:'get',
        parameters:{ 'entryId':entryId, 'action':'removeFavorite' },
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          $(elementToUpdateId).src = 'images/favoriteAdd.png';
        },
        onFailure: function(){ alert('Error while removing favorite'); }
      });        
  }   

  popTimerId = null;
  showingPanelId = null;
  hideTimerId = null;

  function hover(panelId, hoverDelay) {
    if ( arguments.length == 1 ) {
      hoverDelay = 800;
    }
    if ( showingPanelId == panelId ) {
      // if they are going from the object to the hover or visa versa
      // then there will be a hide call which we need to kill
      clearTimeout(hideTimerId);
    } else {
      hideHover();  // just in case one is still up
      //alert('panelId=' + panelId);
      popTimerId = setTimeout("showHover('" + panelId + "')", hoverDelay);
    }
  }

  function leave(panelId) {
    clearTimeout(popTimerId);  // in case they are just quickly rolling over
    if ( showingPanelId == panelId ) {
      hideTimerId = setTimeout("hideHover('" + panelId + "')", 300);  // anything more than 300 feels sluggish to me
    }
  }

  function hideHover() {
    if ( showingPanelId != null && document.getElementById(showingPanelId) != null ) {
      $(showingPanelId).hide();
      showingPanelId = null;
    }
  }

  function showHover(panelId) {
    if ( ! document.getElementById(panelId) ) {
      return;
    }
    //alert('showing hover');
    showingPanelId = panelId;
    // call show on the hover panel
    $(panelId).show();
  }

  function position(id1, id2, offsetX, offsetY) {
    var panel1 = $(id1);
    var panel2 = $(id2);
    var offset = Element.viewportOffset(panel1);
    var leftPx = "" + (offset[0] + offsetX) + "px";
    var topPx = "" + (offset[1] + offsetY + document.viewport.getScrollOffsets()[1]) + "px";
    panel2.style.top = topPx;
    panel2.style.left = leftPx;
    //alert('viewport=' + document.viewport.getScrollOffsets() + ' basePanel=' + offset + ' offset=' + offset + ' top=' + topPx + ' left=' + leftPx);
  }
      
function divStyle(theDiv) { return eval("document.getElementById('"+theDiv+"').style"); }

function clipDiv(thisDiv,cT,cR,cB,cL) {
   if (document.all) divStyle(thisDiv).clip = "rect("+cT+" "+cR+" "+cB+" "+cL+")";
   else
   {
      divStyle(thisDiv).clip.top = cT;
      divStyle(thisDiv).clip.right = cR;
      divStyle(thisDiv).clip.bottom = cB;
      divStyle(thisDiv).clip.left = cL;
   }
}
    
function showDiv(thisDiv) { divStyle(thisDiv).visibility="visible"; }

function hideDiv(thisDiv) { divStyle(thisDiv).visibility="hidden"; }
    
function moveDiv(thisDiv,L,T,Z) {
   if(L) { divStyle(thisDiv).left = L; }
   if(T) { divStyle(thisDiv).top = T; }
   if(Z) { divStyle(thisDiv).zIndex = Z; }
}
      
function showTab(selected) {
    if (selected==0) {
        document.getElementById('tools_main').innerHTML = document.getElementById('tools_0').innerHTML;
        document.getElementById('rightSideRow1').style.height='137px';
        document.getElementById('rightSideRow2').style.height='617px';
        if (document.getElementById('commentsText')) document.getElementById('commentsText').style.height='385px';
        //document.getElementById('tabs').style.backgroundImage = 'url("images/tab0.jpg")';
        if (document.getElementById('noCommentBg')) document.getElementById('noCommentBg').style.height='426px';
        if (document.getElementById('noCommentBg2')) document.getElementById('noCommentBg2').style.height='225px';        
	}
    if (selected==1) {
        document.getElementById('tools_main').innerHTML = document.getElementById('tools_1').innerHTML;
        document.getElementById('rightSideRow1').style.height='357px';
        document.getElementById('rightSideRow2').style.height='397px';
        if (document.getElementById('commentsText')) document.getElementById('commentsText').style.height='166px';
        //document.getElementById('tabs').style.backgroundImage = 'url("images/tab1.jpg")';
        if (document.getElementById('noCommentBg')) document.getElementById('noCommentBg').style.height='220px';
        if (document.getElementById('noCommentBg2')) document.getElementById('noCommentBg2').style.height='18px';   
	}
    if (selected==2) {
        document.getElementById('tools_main').innerHTML = document.getElementById('tools_2').innerHTML;
        document.getElementById('rightSideRow1').style.height='387px';
        document.getElementById('rightSideRow2').style.height='367px';
        if (document.getElementById('commentsText')) document.getElementById('commentsText').style.height='136px';
        //document.getElementById('tabs').style.backgroundImage = 'url("images/tab2.jpg")';
        if (document.getElementById('noCommentBg')) document.getElementById('noCommentBg').style.height='190px';
        if (document.getElementById('noCommentBg2')) document.getElementById('noCommentBg2').style.height='0px';   
	}
}
function rate(queryName, ratedEntryId, memberRating) {
      //alert('q=' + queryName + "-"+ ratedEntryId +"-"+ memberRating);
      var params = $('searchForm').serialize(true);
      //params[queryName + 'Page'] = pageValue;
      params['ajaxPage'] = queryName;
      params['ratedEntryId'] = ratedEntryId;
      params['memberRating'] = memberRating;
      new Ajax.Request('entryDetail.do',
        {
          method:'get',
          parameters: params,
          onSuccess: function(transport){
            var response = transport.responseText || "no response text";
            //alert("Success! \n\n");
            //alert(eval("document.getElementById('tools_0').innerHTML"));
            $("tools_0").innerHTML = response;
            document.getElementById('tools_main').innerHTML = document.getElementById('tools_0').innerHTML;
            dcsMultiTrack('DCSext.w_rate','1','DCSext.w_interact','1');
          },
          onFailure: function(){ alert('Something went wrong...') }
        });        
}
var itemId, complaintType, complaintPlaintiffId, complaintAccusedId, complaintLocale, currentEntryId;


function reloadCaptcha(imgId, txtId) {
    document.getElementById(imgId).src = "jcaptcha.jsp?"+Math.random(); 
    document.getElementById(txtId).value='';
}


function NewWindowSocialNetwork(networkname,id,type) {
	var width = 525;
    var height = 350;
    var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
    var windowFeatures = "width=" + width + ",height=" + height + ",toolbar=no,menubar=no,status=no,resizable=no,left=" + left + ",top=" + top + "screenX=" + left + ",screenY=" + top;
    myWindow = window.open('socialNetwork.do?socialNetwork='+networkname+'&entryId='+id+'&type='+type, "", windowFeatures);
    dcsMultiTrack('DCSext.w_sn_embed','1','DCSext.w_share','1','DCSext.w_network',networkname);
}

function reportError(request) {alert("error");}

var callingDiv;


function positionAtCenter(thisDiv, divHeight, divWidth){
    var scrollOffsets = document.viewport.getScrollOffsets(); 
    var dims = document.viewport.getDimensions(); 
//    alert(scrollOffsets.top+":"+dims.height+":"+divHeight);
//    alert(scrollOffsets.left+":"+dims.width+":"+divWidth);
    $(thisDiv).setStyle({top: (dims.height/2 + scrollOffsets.top  - divHeight/2) +'px',left: (scrollOffsets.left + dims.width/2 - divWidth/2)+'px',display:'block'});
}

function hideCallingDiv(){
    hideDiv(callingDiv);
    hideLightbox('lightbox');
      if (document.getElementById('captchaImgComments')) 
            reloadCaptcha('captchaImgComments', 'captchaTxtComments');
    }

function showSendBottleToFriend(id) {
    var params =new Array();
    params['init']=true;
    params['entryId']=id;  
    callingDiv='sendBottleToFriendDiv';
    sendToFriend(params);
    }



function showSendUrlToFriend(url) {
    var params =new Array();
    params['init']=true;
    params['url']=url;  
    callingDiv='sendUrlToFriendDiv';
    sendToFriend(params);
}

function doSendToFriend() {
    var params = $('sendToFriendForm').serialize(true);
    sendToFriend(params);
}

function sendToFriend(params) {
  showLightbox('lightbox');
  new Ajax.Request('sendToFriend.do',
    {
      method:'post',
      parameters: params,
      onSuccess: function(transport){
        var response = transport.responseText || "no response text";
        document.getElementById(callingDiv).innerHTML = response;
        if(response.indexOf('mailSendingConfirmed')!=-1)
        { 
          positionAtCenter(callingDiv, 150, 310);
          $(callingDiv).setStyle({width:310+'px',height:150+'px',display:'block', background:'transparent', border:'0px'});
        }
        else{
          positionAtCenter(callingDiv, 489, 310);
          $(callingDiv).setStyle({width:310+'px',height:489+'px',display:'block', background:'transparent', border:'0px'});
        }
          $(callingDiv).show();
      },
      onFailure: function(){ 
          alert('Something went wrong...');
          hideDiv(callingDiv);
      },
      onComplete: function(){
          reloadCaptcha('captchaImage', 'captcha');
          showDiv(callingDiv);
          dcsMultiTrack('DCSext.w_friend','','DCSext.w_share','');
      },
      asynchronous:false
    });        
}


function showReportComments(commentId, entryId) {
    if (!((memberLoggedIn) && (memberLoggedIn== true))){
       window.location.href="#topAnchor";
       handleLogin(applicationHome+'/entryDetail.do?entryId='+entryId);
    }
    else{
    callingDiv='reportCommentsDiv';
    var params =new Array();
    params['init']=true;
    params['targetType']='COMMENT';
    params['targetId']=commentId;
    reportThis(params);
    }
}

function showReportEntry(entryId, entryType) {
    if (!((memberLoggedIn) && (memberLoggedIn== true))){
        if(entryType='BOTTLE'){
            handleLogin(applicationHome+'/entryDetail.do?entryId='+entryId);
          }
      else{
            handleLogin(applicationHome+'/mashupDetail.do?entryId='+entryId);
          }
    }
    else{
      callingDiv='reportCommentsDiv';
      var params =new Array();
      params['init']=true;
      params['targetType']=entryType;
      params['targetId']=entryId;
      reportThis(params);
    }
}
function reportAbuse(entryType) {
    showReportEntry(currentEntryId, entryType);
}
function setCurrentEntryId(id) {
    currentEntryId = id;
}
function quitDesigner() {
    document.location='explore.do';
}

function doReportThis() {
  var params = $('reportThisForm').serialize(true);
  reportThis(params);
}
function reportThis(params) {
  showLightbox('lightbox');
  new Ajax.Request('reportThis.do',
    {
      method:'post',
      parameters: params,
      onSuccess: function(transport){
        var response = transport.responseText || "no response text";
        document.getElementById(callingDiv).innerHTML = response;
          $(callingDiv).setStyle({width:325+'px',height:300+'px',display:'block', background:'transparent'});
          positionAtCenter(callingDiv, 300, 325);
      },
      onFailure: function(){ 
          alert('Something went wrong...');
          hideDiv(callingDiv);
      },
      onComplete: function(){
        reloadCaptcha('captchaImgReport', 'captcha');
          showDiv(callingDiv);
      },
      asynchronous:false
    });
}


function doModerateComment(action, commentId, moderatorKey) {
    var params =new Array();
    params['targetType']='COMMENT';
    params['targetId']=commentId;
    params['moderatorKey']=moderatorKey;
    params['action']=action;

    if(params['action']=='REMOVE' )
    {
        params['showConfirmation']=true;
    }
    moderate(params);
}

function confirmModeration(){
    var params = $('moderationForm').serialize(true);
    moderate(params);
}

function moderate(params) {
    callingDiv='moderationDiv';
    showLightbox('lightbox');

  new Ajax.Request('moderation.do',
    {
      method:'post',
      parameters: params,
      onSuccess: function(transport){
             var response = transport.responseText || "no response text";
             document.getElementById(callingDiv).innerHTML = response;
             $(callingDiv).setStyle({width:325+'px',height:300+'px',display:'block', background:'transparent'});
             positionAtCenter(callingDiv, 300, 325);             
      },
      onFailure: function(){ 
          alert('Something went wrong...');
          hideDiv(callingDiv);
      },
      onComplete: function(){
          showDiv(callingDiv);
      },
      asynchronous:false
    });        
}

function changeRadioStatus(formName, groupName, booleanDisabled) {
  for (var i=0; i<formName.elements.length; i++) {
    if (formName.elements[i].name == groupName) {
      formName.elements[i].disabled = booleanDisabled;
    }
  }
}

//Open RSS Feed 
function openRssForMember(memberId){
var IEVersion=getIEVersion();
    if(IEVersion!=null && IEVersion>-1 && IEVersion<7)  {
              //Open an rss feed link for IE6 to be copied to a rss reader since IE6 does not support that
               window.open('rss.do?memberId='+memberId,"","height=300,width=660");
        }
       else {
              //Open an rss feed in IE7 or Firefox(supported browsers)
               window.open('rss.do?memberId='+memberId);
        }
    dcsMultiTrack('DCSext.w_rss','1','DCSext.w_interact','1');
}
//Supports finding IE version for Rss feed
function getIEVersion() {
         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;
              }
}


//  Sets the initial size of the lightbox with the given ID and shows it.
function  showLightbox(id) {
    var dims = getLightboxDimensions();
    $(id).setStyle({top:dims.top+'px',left:dims.left+'px',width:dims.width+'px',height:dims.height+'px',display:'block'});
    $(id).show();
}

//  Hides the lightbox with the given ID.
hideLightbox = function (id) { $(id).hide(); }


//  Gets the dimensions of the lightbox based on the viewport and scroll position. 
getLightboxDimensions = function () {
    var scrollOffsets = document.viewport.getScrollOffsets(); 
    var dims = document.viewport.getDimensions(); 
    var top = scrollOffsets.top;
    var left = scrollOffsets.left;
    var width = dims.width;
    var height = dims.height;
    return {top: top, left: left,width: width, height: height};
}


function getImagePathJS(entryId, fileKey, extensionIncludingTheDot) {
     try {
         if ( entryId == null || fileKey == null) { return ''; }
        var pd = ''; var totalDigits = 7;
        var dividedLong = parseInt(entryId/10000); 
        
        if (totalDigits > dividedLong.toString().length) { 
            for (i=0; i < (totalDigits-dividedLong.toString().length); i++) { 
                pd += '0'; 
            } 
        } 
        entryDirectoryName = 'd' + pd + dividedLong; 
         fileName = 'f' + entryId + '_' + fileKey;
        if ( extensionIncludingTheDot != null ) {
            fileName += extensionIncludingTheDot;
        }
        imagePath = 'webstore/' + entryDirectoryName + '/' + fileName;
        return imagePath;    
        
    } catch(error) { return ''; }
}

function reLoadPage(){
window.location.reload( false );
}
function roll_over(img_name, img_src)  {
    document.getElementById(img_name).src = img_src;
}

function showBusyStrip(withinContainerId) {
  var busyStrip = $('entryBusyStrip');
  var container = $(withinContainerId);
  if ( ! container ) {
    alert('container with name ' + withinContainerId + ' does not exist');
    return;
  }

  var containerOffset = Element.viewportOffset(container);
  var containerDimensions = Element.getDimensions(container);
  busyStrip.style.width = '' + containerDimensions.width + 'px';
  busyStrip.style.height = '' + containerDimensions.height + 'px';
  busyStrip.style.left = '' + (containerOffset[0] + document.viewport.getScrollOffsets()[0]) + 'px';
  busyStrip.style.top = '' + (containerOffset[1] + document.viewport.getScrollOffsets()[1]) + 'px';

  busyStrip.show();
}