function set_cookie(name, value, days) {
  expires_date = '';
  if (days) {
    var today = new Date();
    today.setTime(today.getTime());
    var expires_date = new Date(today.getTime() + (1000*60*60*24*days));
    expires_date = ';expires=' + expires_date.toGMTString()
  }
  document.cookie = name + '=' + value + expires_date;
  
  return true;
}

function get_cookie(name) {
  name = name + '=';
  var cookie_array = document.cookie.split(';');
  for (var i in cookie_array) {
    var cookie = cookie_array[i];
    while (cookie.charAt(0) == ' ') {
      cookie = cookie.substring(1, cookie.length);
    }
    if (cookie.indexOf(name) == 0) {
      return cookie.substring(name.length, cookie.length);
    }
  }
  
  return null;
}

function Pop(path,wid,hei) {
   window.open(path,'View','width='+wid+',height='+hei+',left=50,top=50,resizable=1,scrollbars=1');
   return false;
}

function openWindow(url, title, x, y, h, w, centered) {
  if (centered == 1) {
    x = (screen.width - w) / 2;
    y = (screen.height - h) / 2;
  }
  
  newWindow = window.open(url, title, 'height=' + h + ',width=' + w + ',top=' + y + ',left=' + x + ',scrollbars=no,location=no,toolbar=no,resizable=no,menubar=no');
}

function load_image(img_element_id, image_url) {
  document.getElementById(img_element_id).src = image_url;
}

var match_divs = new Object();
function match_all_sizes() {
  var source_id;
  var destination_id;
  for (var i in match_divs) {
    source_id = i;
    destination_id = match_divs[i];
    
    document.getElementById(destination_id).style.height = document.getElementById(source_id).offsetHeight + 'px';
  }
}

function match_size(source_id, destination_id) {
  document.getElementById(destination_id).style.height = document.getElementById(source_id).offsetHeight + 'px';
  match_divs[source_id] = destination_id;
}

function hide_alert_box(alert_box, cookie_id, hide_forever) {
  var height_step = 25;
  var interval = 25;
  if (alert_box.clientHeight - height_step <= 0) {
    alert_box.style.display = 'none';
    
    if (hide_forever == true) {
      // set a cookie to hide this alert box until it's updated
      var today = new Date();
      today.setTime(today.getTime());
      var expires_date = new Date(today.getTime() + (1000*60*60*24*7)); // 1 week
      document.cookie = cookie_id + '=1;expires=' + expires_date.toGMTString();
    }
  } else {
    alert_box.style.overflow = 'hidden';
    alert_box.style.padding = '0px'; // have to set padding to 0 to keep clientHeight calculation correct
    alert_box.style.height = (alert_box.clientHeight - height_step) + 'px';
    
    alert_box.style.marginTop = alert_box.style.marginBottom = '0px'; // so we don't get a jump at the end when we hide the element
    
    setTimeout(function(){hide_alert_box(alert_box, cookie_id, hide_forever);}, interval);
  }
}

function slider_vars() {
  this.destination_x = 0;
}

new_releases_vars = new slider_vars();
featured_albums_vars = new slider_vars();

function move_titles_left(obj_id, item_offset, total_items, items_displayed, var_holder) {
  var obj = document.getElementById(obj_id);
  var obj_x = obj.offsetLeft;
  var obj_y = obj.offsetTop;
  
  var x = obj_x - item_offset*4; //  move 4 at a time
  var y = obj_y;
  var fps = 60;
  var seconds = .1;
  var ease = 1;
  
  if (obj_x == var_holder.destination_x) {
    var left_limit = ((total_items - items_displayed) * item_offset)*-1;
	var right_limit = 0;
    if ((var_holder.destination_x - item_offset) > left_limit - item_offset) {
      var_holder.destination_x = Math.max(x, left_limit);
    } else {
	  if ((var_holder.destination_x - item_offset) == left_limit - item_offset) {
	    var_holder.destination_x = right_limit;
	  } else {
        var_holder.destination_x = left_limit;
	  }
	  seconds *= 2;
    }
	slide(obj_id, var_holder.destination_x, y, fps, seconds, ease);
  }
}

function move_titles_right(obj_id, item_offset, total_items, items_displayed, var_holder) {
  var obj = document.getElementById(obj_id);
  var obj_x = obj.offsetLeft;
  var obj_y = obj.offsetTop;
  
  var x = obj_x + item_offset*4; //  move 4 at a time
  var y = obj_y;
  var fps = 60;
  var seconds = .1;
  var ease = 1;
  
  if (obj_x == var_holder.destination_x) {
	var left_limit = ((total_items - items_displayed) * item_offset)*-1;
	var right_limit = 0;
    if ((var_holder.destination_x + item_offset) < item_offset) {
      var_holder.destination_x = Math.min(x, right_limit);
    } else {
	  if ((var_holder.destination_x + item_offset) == item_offset) {
	    var_holder.destination_x = left_limit;
	  } else {
	    var_holder.destination_x == right_limit;
	  }
      seconds *= 2;
    }
	slide(obj_id, var_holder.destination_x, y, fps, seconds, ease);
  }
}

function toggle_genre_categories(genre_id) {
  toggle_div('genre_categories' + genre_id);
  //match_size('browse_by_category_content', 'browse_by_category_bg');
  
  return false;
}

function toggle_div(div_id) {
  var obj = document.getElementById(div_id);
  
  if (obj.style.display == 'block') {
    obj.style.display = 'none';
  } else {
    obj.style.display = 'block';
  }
  
  return false;
}

var search_suggest_field;
var search_suggest_exact_field;
var search_suggestions = [];
var selected_result_id = -1;
var last_keystroke_time = 0;
var search_suggest_timeout;
var search_suggest_ajax_obj;

var colors = []
colors['selected'] = '#BFD3DD';
colors['deselected'] = '#FFFFFF';

var keys = [];
keys['up arrow'] = 38;
keys['down arrow'] = 40;
keys['enter'] = 13;
keys['shift'] = 16;
keys['backspace'] = 8;
keys['dash'] = 189;
keys['quote'] = 222;
keys['plus_equals'] = 187;
keys['comma_lessthan'] = 188;
keys['period_greaterthan'] = 190;
keys['forwardslash_questionmark'] = 191;
keys['semicolon_colon'] = 186;

window.onload = place_search_suggest;

function place_search_suggest() {
  var search_suggest_obj = document.getElementById('search_suggest');
  
  var positioner = document.getElementById('search_suggest_positioner');
  if (positioner == null) return;
  var positioner_x = positioner.offsetLeft;
  var positioner_y = positioner.offsetTop;
  
  while (positioner.offsetParent) {
    positioner = positioner.offsetParent;
    if (positioner.id == 'site_inside') break;
    
    //if (positioner.id) positioner_x += positioner.offsetLeft;
    positioner_x += positioner.offsetLeft;
    positioner_y += positioner.offsetTop;
  }
  
  //positioner_y += 110;
  
  search_suggest_obj.style.left = positioner_x + 'px';
  search_suggest_obj.style.top = positioner_y + 'px';
}

function show_search_suggest() {
  var search_suggest_obj = document.getElementById('search_suggest');
  
  if (search_suggest_obj.style.display == 'block') return;
  
  if (search_suggest_obj.style.left == '') {
    place_search_suggest();
  }
  
  search_suggest_obj.style.display = 'block';
}

function hide_search_suggest() {
  document.getElementById('search_suggest').style.display = 'none';
}

function search_suggest(txt_field, ajax_url, e, key_code) {
  
  var current_keycode;
  if (!key_code) {
    if (!e) var e = window.event;
    if (e.keyCode) {
      current_keycode = e.keyCode;
    } else if (e.which) {
      current_keycode = e.which;
    }
  }
  
  if (current_keycode == keys['shift']) return; // don't want to do anything since shift is just a modifier key
  
  /*var current_time = new Date();
  if (
    (current_time.getTime() - last_keystroke_time < 250 || last_keystroke_time == 0)
    && current_keycode != keys['up arrow']
    && current_keycode != keys['down arrow']
  ) {
    last_keystroke_time = current_time.getTime();
    window.clearTimeout(search_suggest_timeout);
    //search_suggest_timeout = window.setTimeout(function (_txt_field, _ajax_url, _e) { search_suggest(_txt_field, _ajax_url, _e); }, 500, txt_field, ajax_url, e);
    search_suggest_timeout = window.setTimeout(function () { search_suggest(txt_field, ajax_url, e, current_keycode); }, 250);
    return false;
  }*/
  
  if (search_suggest_ajax_obj != null) {
    search_suggest_ajax_obj.abort();
    search_suggest_ajax_obj = null;
  }
  
  if (key_code) current_keycode = key_code;
  
  var string = txt_field.value;
  search_suggest_field = txt_field;
  
  var search_suggest_obj = document.getElementById('search_suggest');
  
  if (string.length > 2) {
    
    var alphanumeric = new RegExp("[a-zA-Z0-9 ]");
    if (
      (
      alphanumeric.exec(String.fromCharCode(current_keycode))
      || current_keycode == keys['backspace']
      || current_keycode == keys['quote']
      || current_keycode == keys['dash']
      || current_keycode == keys['equals_plus']
      || current_keycode == keys['comma_lessthan']
      || current_keycode == keys['period_greaterthan']
      || current_keycode == keys['forwardslash_questionmark']
      || current_keycode == keys['semicolon_colon']
      )
      && current_keycode != keys['shift']
      && current_keycode != undefined
    ) {
      show_search_suggest();
      
      clear_results(search_suggest_obj);
      
	  search_suggest_field.parentNode.exact_match.value = 0;
	  
      var new_node;
      new_node = search_suggest_obj.appendChild(document.createElement('div'));
      new_node.innerHTML = 'Searching...';
      new_node.style.padding = '2px';
      
      var data;
      data  = '&string=' + url_encode(string);
      
      search_suggest_ajax_obj = ajax_get(ajax_url, data, handle_search_suggest_response);
    } else {
      
      search_suggest_field.parentNode.exact_match.value = 1;
	  
      if (current_keycode == keys['down arrow']) {
        var last_selected_result = document.getElementById('search_result' + selected_result_id);
        if (last_selected_result) last_selected_result.style.backgroundColor = colors['deselected'];
        
        selected_result_id = Math.min(search_suggestions.length - 1, ++selected_result_id);
        
        var current_selected_result = document.getElementById('search_result' + selected_result_id);
        if (current_selected_result) current_selected_result.style.backgroundColor = colors['selected'];
        
        txt_field.value = current_selected_result.innerHTML;
        txt_field.select();
      } else if (current_keycode == keys['up arrow']) {
        var last_selected_result = document.getElementById('search_result' + selected_result_id);
        if (last_selected_result) last_selected_result.style.backgroundColor = colors['deselected'];
        
        selected_result_id = Math.max(0, --selected_result_id);
        
        var current_selected_result = document.getElementById('search_result' + selected_result_id);
        if (current_selected_result) current_selected_result.style.backgroundColor = colors['selected'];
        
        txt_field.value = current_selected_result.innerHTML;
        txt_field.select();
      }
    }
  }
}

function handle_search_suggest_response(response) {
  var response_array = response.split('|glue|');
  
  var search_suggest_obj = document.getElementById('search_suggest');
  
  if (response_array[0] == 'success') {
    last_keystroke_time = 0;
    search_suggestions = [];
    for (var i in response_array) {
      if (i > 0) { // index 0 is 'success' or 'fail'
        if (response_array[i] != '') {
          search_suggestions.push(response_array[i]);
        }
      }
    }
    
    populate_search_suggestions();
  } else {
    //hide_search_suggest();
  }
}

function populate_search_suggestions() {
  var search_suggest_obj = document.getElementById('search_suggest');
  
  var new_node;
  
  clear_results(search_suggest_obj);
  
  if (search_suggestions.length > 0) {
    for (var i in search_suggestions) {
      // add results to search suggestions box
      new_node = search_suggest_obj.appendChild(document.createElement('div'));
      new_node.id = 'search_result' + i;
      new_node.innerHTML = search_suggestions[i];
      new_node.style.padding = '2px';
      new_node.style.cursor = 'pointer';
      new_node.onclick = function () {
        search_submit(search_suggestions[this.id.replace('search_result', '')]);
      };
      new_node.onmouseover = function () {
        search_suggest_field.onblur = null;
      }
      new_node.onmouseout = function () {
        search_suggest_field.onblur = hide_search_suggest;
      }
    }
  } else {
    new_node = search_suggest_obj.appendChild(document.createElement('div'));
    new_node.innerHTML = 'No results found';
    new_node.style.padding = '2px';
  }
}

function clear_results(obj) {
  selected_result_id = -1;
  while (obj.childNodes[0]) {
    obj.removeChild(obj.childNodes[0]);
  }
}

function search_submit(string) {
  search_suggest_field.value = string;
  search_suggest_field.parentNode.exact_match.value = 1;
  search_suggest_field.parentNode.submit();
}

function debug(string) {
  document.getElementById('debug').innerHTML = document.getElementById('debug').innerHTML + string;
}

var tmp = 0;
function notifyAlert(objText, objButton, objDiv, objChkBox, origVal) {
  var objTxt;objTxt = document.getElementById(objText);
  var objBttn;objBttn = document.getElementById(objButton);
  var objDv;objDv = document.getElementById(objDiv);
  var objChkBx;objChkBx = document.getElementById(objChkBox);
  //alert(objTxt); break;
  if(tmp == 0){
    ++tmp;
    var origVal2;origVal2 = origVal;
    document.getElementById('tmpTxt').value = objText;
    document.getElementById('origValue').value = origVal2;
    changeStyle();
  }		
  //alert(document.getElementById('tmpTxt').value);alert(objText);
  function changeStyle(){
    if(objChkBx.checked || objTxt.value !=  document.getElementById('origValue').value) {
      if(objBttn.style.color != '#9d1a1a'){
	objBttn.style.color = '#9d1a1a'; 
	/* objBttn.style.font = 'bold trebuchet ms ,helvetica,sans-serif'; */
	objBttn.style.background = '#fed'; 
	objBttn.style.border = '1px solid #9d1a1a'; 
			  
	objDv.style.display = 'block';
      }
	
      if(objTxt.style.background != '#ffdbdb'){
        objTxt.style.background = '#ffdbdb';
        objTxt.style.border = '1px solid #9d1a1a';
      }
			
    }
    if (document.getElementById('tmpTxt').value != objText){
      tmp = 0;
      var origVal = objTxt.value;
      document.getElementById('origValue').value = objTxt.value;
    }
  }
}