function isBlank(val) {
        if (val.length == 0) { return true; }
        for (var i=0; i < val.length; i++) {
                if ((val.charAt(i) != ' ') && (val.charAt(i) != "\t") && (val.charAt(i) != "\n")) { return false; }
        }
        return true;
}

function review_category_changed( tag, prefix) {
  var location_type_id=tag.options[tag.selectedIndex].value;
  if ( location_type_id >0 ) {
    eval("parent.location='"+prefix+"_view_category_"+location_type_id+".html'");
  } else {
   return false;
  }
}

function update_review_locations() {
  var location_type_tag=document.getElementById('location_type_id');
  var location_tag=document.getElementById('location_id');
  if (location_type_tag.selectedIndex ==0) {
    location_tag.disabled=true;
    location_tag.options.length = 0;
    location_tag.options[location_tag.length] = new Option('Select Location', 0, true, true);
  } else {
    location_tag.options.length = 0;
    location_tag.options[location_tag.length] = new Option('Select Location', 0, true, true);
    var location_type_id=location_type_tag.options[location_type_tag.selectedIndex].value;
    var tlocations=Location_types[location_type_id];
    if ( tlocations ) {
      for (var i=0; i<tlocations.length; i++) {
        location_tag.options[location_tag.length] = new Option(Locations[tlocations[i]], tlocations[i], false, false);
      }
      location_tag.disabled=false;
      location_tag.selectedIndex=0;
    }
  }
}


function verifyAddReviewForm() {
  var tag=document.getElementById('location_type_id');
  if ( tag.options[tag.selectedIndex].value == 0) { alert('Please select a location type'); tag.focus(); return false; }

  tag=document.getElementById('rating_id');
  if ( tag.options[tag.selectedIndex].value == 0) { alert('Please select a rating for review'); tag.focus(); return false; }
  tag=document.getElementById('location_id');
  var ntag=document.getElementById('new_location');
  if ( (tag.options[tag.selectedIndex].value == 0) && ntag.value == '' ) { alert('Please select a location or specify your own'); tag.focus(); return false; }
  tag=document.getElementById('title');
  if ( isBlank(tag.value)) { alert('Please enter a review title'); tag.focus(); return false; }
  tag=document.getElementById('review');
  if ( isBlank(tag.value)) { alert('Please enter your review text'); tag.focus(); return false; }

  return true;
}

//----------------------------------------------------------------------------
// Code to determine the browser and version.
// Modified by Eugene Nasonkin. niksa@lurus.com
//----------------------------------------------------------------------------
function Browser() {
  var ua, s, i;

  this.isIE    = false;  // Internet Explorer
  this.isOP    = false;  // Opera
  this.isNS    = false;  // Netscape
  this.version = null;

  ua = navigator.userAgent;

  s = "Opera";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isOP = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as Netscape 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }

  s = "MSIE";
  if ((i = ua.indexOf(s))) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }
}





// Copyright © 2000 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.
//
// ************************
// layer utility routines *
// ************************
// Modified by Eugene Nasonkin. niksa@lurus.com
// to supoort IE last versions
function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its id
    if(document.getElementById && document.getElementById(objectId)) {
  // W3C DOM
  return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
  // MSIE 4 DOM
  return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
  // NN 4 DOM.. note: this won't find nested layers
  return document.layers[objectId];
    } else {
  return false;
    }
} // getStyleObject

function changeObjectVisibility(objectId, newVisibility) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
  styleObject.visibility = newVisibility;
  return true;
    } else {
  // we couldn't find the object, so we can't change its visibility
  return false;
    }
} // changeObjectVisibility

function moveObject(objectId, newXCoordinate, newYCoordinate) {
    // get a reference to the cross-browser style object and make sure the object exists
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
  styleObject.left = newXCoordinate;
  styleObject.top = newYCoordinate;
  return true;
    } else {
  // we couldn't find the object, so we can't very well move it
  return false;
    }
} // moveObject

// store variables to control where the popup will appear relative to the cursor position
// positive numbers are below and to the right of the cursor, negative numbers are above and to the left
var xOffset = 30;
var yOffset = -5;
var browser = new Browser();

function showHelpPopup (targetObjectId, eventObj) {
    if(eventObj) {
  // hide any currently-visible popups
  hideCurrentPopup();
  // stop event from bubbling up any farther
  eventObj.cancelBubble = true;
  // move popup div to current cursor position
  // (add scrollTop to account for scrolling for IE)
  if (browser.isIE) {
    var newXCoordinate = (eventObj.pageX)?eventObj.pageX + xOffset:eventObj.x + xOffset + ((document.body.scrollLeft)?document.body.scrollLeft:0);
    var newYCoordinate = (eventObj.pageY)?eventObj.pageY + yOffset:eventObj.y + yOffset + ((document.body.scrollTop)?document.body.scrollTop:0);
    moveObject(targetObjectId, newXCoordinate, newYCoordinate);
  }
  // and make it visible
  if( changeObjectVisibility(targetObjectId, 'visible') ) {
      // if we successfully showed the popup
      // store its Id on a globally-accessible object
      window.currentlyVisiblePopup = targetObjectId;
      //iframe
      if (browser.isIE) {
        var iframeIE=document.getElementById('iframe_'+targetObjectId);
        var ttag=document.getElementById(targetObjectId);
        iframeIE.style.left    = ttag.style.left;
        iframeIE.style.top     = ttag.style.top;
        iframeIE.style.width   = ttag.style.width;
        iframeIE.style.height  = ttag.style.height;
        iframeIE.style.display = "";
      }
      return true;
  } else {
      // we couldn't show the popup, boo hoo!
      return false;
  }
    } else {
  // there was no event object, so we won't be able to position anything, so give up
  return false;
    }
} // showPopup

function hideCurrentPopup() {
    // note: we've stored the currently-visible popup on the global object window.currentlyVisiblePopup
    if(window.currentlyVisiblePopup) {
  changeObjectVisibility(window.currentlyVisiblePopup, 'hidden');
  //iframe
  if (browser.isIE) {
    var iframeIE=document.getElementById('iframe_'+window.currentlyVisiblePopup);
    iframeIE.style.display = "none";
  }
  window.currentlyVisiblePopup = false;
    }
} // hideCurrentPopup



// ***********************
// hacks and workarounds *
// ***********************

// initialize hacks whenever the page loads
window.onload = initializeHacks;

// setup an event handler to hide popups for generic clicks on the document
document.onclick = hideCurrentPopup;

function initializeHacks() {
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
    if ((navigator.appVersion.indexOf('MSIE 5') != -1)
  && (navigator.platform.indexOf('Mac') != -1)
  && getStyleObject('blankDiv')) {
  window.onresize = explorerMacResizeFix;
    }
    resizeBlankDiv();
    // this next function creates a placeholder object for older browsers
    createFakeEventObj();
}

function createFakeEventObj() {
    // create a fake event object for older browsers to avoid errors in function call
    // when we need to pass the event object to functions
    if (!window.event) {
  window.event = false;
    }
} // createFakeEventObj

function resizeBlankDiv() {
    // resize blank placeholder div so IE 5 on mac will get all clicks in window
    if ((navigator.appVersion.indexOf('MSIE 5') != -1)
  && (navigator.platform.indexOf('Mac') != -1)
  && getStyleObject('blankDiv')) {
  getStyleObject('blankDiv').width = document.body.clientWidth - 20;
  getStyleObject('blankDiv').height = document.body.clientHeight - 20;
    }
}

function explorerMacResizeFix () {
    location.reload(false);
}


