function isset (obj, d1, d2, d3, d4, d5) {
  try {
    if (d5 != null)
      return obj [d1][d2][d3][d4][d5] != undefined;
    if (d4 != null)
      return obj [d1][d2][d3][d4] != undefined;
    if (d3 != null)
      return obj [d1][d2][d3] != undefined;
    if (d2 != null)
      return obj [d1][d2] != undefined;
    if (d1 != null)
      return obj [d1] != undefined;
    return obj != undefined;
  }
  catch (err) {
  }
  return false;
}

function dump(arr,level) {
  var dumped_text = "";
  if(!level) level = 0;
  
  //The padding given at the beginning of the line.
  var level_padding = "";
  for(var j=0;j<level+1;j++) level_padding += "    ";
  
  if(typeof(arr) == 'object') { //Array/Hashes/Objects
    for(var item in arr) {
      var value = arr[item];
      
      if(typeof(value) == 'object') { //If it is an array,
	dumped_text += level_padding + "'" + item + "' ...\n";
	dumped_text += dump(value,level+1);
      } else {
	dumped_text += level_padding + "'" + item + "' => \"" + value + "\" || ";
      }
    }
  } else { //Strings/Chars/Numbers etc.
    dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
  }
  return dumped_text;
}

function js_set_event(obj,event,fun,bubble) {
  if (obj) {
    if (obj.addEventListener)
      obj.addEventListener (event,eval(fun),bubble);
    else if (obj.addEvent)
      obj.addEvent(event,eval(fun));
    else
      obj.attachEvent('on'+event, eval(fun));
  }
}

function show_rating (type,id,hoverStars) {
  var activeCount = (hoverStars==null && document.rating && document.rating[type] && document.rating[type][id])?document.rating[type][id]:hoverStars;
  if (!activeCount) activeCount = 0;
  activeCount = Math.ceil(activeCount * 2) / 2;
  var i;
  for (i = 1.0; i <= activeCount; i += 1.0) {
    var el = document.getElementById (type+'_'+id+'_star' + Math.floor(i));
    if (el) el.src = (hoverStars)?'images/starhover.png':'images/star.png';
  }

  for (i = Math.floor(activeCount) + 1.0; i <= 5.0; i += 1.0) {
    var el = document.getElementById (type+'_'+id+'_star' + Math.floor(i));
    if (el) el.src = (activeCount + 1.0 > i) ? 'images/starhalf.png' : 'images/starempty.png';
  }
}

function set_rating (type,id,rating) {
  if (document && document.rating && document.rating[type]) {
    document.rating[type][id] = rating;
    show_rating (type,id);
    send_rating(type,id);
  }
}

function disable_new_rating (type, id, msg) {
  var el = document.getElementById ('stars_'+type+'_'+id);
  if (el) {
    var code = '';
    for (var i = 1; i <= document.rating[type][id]; i++) {
      code += "<img src='images/starhover.png' />";
    }
    for (var i = document.rating[type][id] + 1; i <=5; i++) {
      code += "<img src='images/starempty.png' />";
    }
    el.innerHTML = code + (msg ? ' ' + msg : '');
  }
  document.rating_sent = true;
}

function check_if_rating_set(alert_text) {
  if (!document.rating_sent && alert_text) {
    alert(alert_text);
    return false;
  }
  return true;
}

function send_rating (type,id) {
  if (document.rating[type][id] && document.rating[type][id] > 0) {
    show_rating(type,id);
    var req_data = "type=" + type + "&id=" + id + "&rating=" + document.rating[type][id];
    var xhr_req = new Request.JSON (
				    {
				    url:"set-rating.php?"+req_data,
					onComplete: function (obj) {
					disable_new_rating (type, id, obj);
				      }
				    }).send();
  }
}

function prepare_ratings(type,id,rating) {
  if (!isset(document.rating))
    document.rating = new Array();
  if (!isset(document.rating[type]))
    document.rating[type] = new Array();
  document.rating[type][id] = rating;
}

function rate_photo(id) {
  //$('img_info').style.display='none';
  $('img_info').style.display='block';
  $('img_info').load("image-rating.php?id="+id);
}


