/**
 * make sure there return false to the a to disable the norm navigation
 * <a href='json/service' onclick='return Turner_HandleAjaxLink(this, "are you sure")'>XXX</a>
 */

var Turner_HandleAjaxLink = function(theLink, theConfirmMsg, successHandler) {
  
  if(theConfirmMsg && !confirm(theConfirmMsg)){
    return false;
  }

  var callback = {}
  callback.successHandler = successHandler
  
  callback.failure = function(obj){
    alert("server error")
  }
  callback.success = function(obj){
    json = YAHOO.lang.JSON.parse(obj.responseText)
    if(json.error){
      alert("Error : " + json.error)
      return;
    }
    
    if(typeof this.successHandler =='function'){
      this.successHandler(json)
    }
    
    if(this.successHandler == 'showResult'){
      alert(json.result)
    }
  }

  YAHOO.util.Connect.asyncRequest("POST", theLink.href, callback, null)
  
  return false; // make sure the link event doesnt fire
}

var Turner_CreateFancyCheckbox = function(value, strLabel, type){
  var result = document.createElement("div")
  result.className = 'checkbox'
  var isRadio = 'radio' == type
  var chk = document.createElement("input")
  chk.type = 'image'
  chk.className = 'checkbox-clear'
  chk.src = "/etc/images/check_box.png"

  if(isRadio){
    // make sure there is at most only 1 selected all time
    YAHOO.util.Event.addListener(chk, 'click', function(){
      var key = this.value.split('=')[0]
      var list = YAHOO.util.Selector.query('input.checkbox-clear,input.checkbox-checked')
      for(i=0;i<list.length;i++){
        if(this == list[i])continue;
        var key2 =list[i].value.split('=')[0]
        if(key2 == key){
          list[i].className = 'checkbox-clear'
          list[i].src = '/etc/images/check_box.png'
        }
      }
      this.className = 'checkbox-checked'
      this.src = '/etc/images/ticked_checkbox.png'
    })
  }else{
    YAHOO.util.Event.addListener(chk, 'click', function(){
      var bChecked = this.className == 'checkbox-checked'
      this.src = "/etc/images/" + (bChecked? "check_box.png" : "ticked_checkbox.png");
      this.className = bChecked ? "checkbox-clear" : "checkbox-checked"
    })
  }
  chk.value = value
  chk.checked = false
  result.appendChild(chk)
  result.appendChild(document.createTextNode(strLabel))
  return result
}


var Turner_GetGenreById = function(id){
  for(i=0;i<Turner_GenreList.length;i++){
    if(Turner_GenreList[i].id == id){
      return Turner_GenreList[i]
    }
  }

  return null
}

Turner_StringToParam = function(str){
  var regexp = /(\w*)=([a-zA-Z0-9_\-]*)/g
  var list = str.match(regexp)
  var result = {}
  if(list){
    for(i=0;i<list.length;i++){
      var kv = list[i].split('=')
      result[kv[0]] = kv[1]
    }
  }

  return result;
}

Turner_ParamToString = function(obj){
  var result = ''
  for(i in obj){
    if(typeof obj[i] == 'function' || obj[i]==null) continue;
    result += "&"+ i + "=" + obj[i]
  }

  return result;
}


var Turner_Login = function(formID){
  
  var callback = {}
  callback.failure = function(obj) {
    alert("server error")
  }
  callback.success = function(obj){
    json = YAHOO.lang.JSON.parse(obj.responseText)

    if(json.error){
      alert(json.error)
      return;
    }

    if(json.result == 'PWD_CHANGED'){
      alert("Your password has been changed successfully. Please continue browsing.")
    }


    if(json.result == "OK" || json.result == 'PWD_CHANGED'){
      // go to HTTP page for phase 2 login
      var port = (location.port == '8443' || location.port == '8080')? ':8080':''
      href = "http://" + location.hostname + port + "/json/loginservice?phase2&u=" + json.u +"&t=" + json.t + "&s=" + json.s
      if (json.redirect){
        href += "&redirect=" + encodeURIComponent(json.redirect)
      }
      location.href= href;
    }
  }

  YAHOO.util.Connect.setForm(formID)
  YAHOO.util.Connect.asyncRequest('post', '/json/loginservice', callback)
}


Turner_GetServerLocation = function(isSecure){

  var protocol = isSecure? "https://" : "http://"

  var port = ''

  if(location.hostname == 'localhost'){
    port = isSecure? ':8443' :':8080'
  }

  return protocol + location.hostname + port

}


Turner_Blink = function(id){
  el = document.getElementById(id)
  if(!el) return;
  setInterval(function(){
    if(YAHOO.util.Dom.hasClass(el, 'blink')){
      YAHOO.util.Dom.removeClass(el,'blink')
    }else{
      YAHOO.util.Dom.addClass(el,'blink')
    }
  }, 800)
}

Turner_FilterSearchKeyword = function(str){
  var result = str.replace(/\bthe\b/g,"");
  result = result.replace(/\ban\b/g,"");
  result = result.replace(/\ba\b/g,"");
  return result;
}

function searchPressEnter(evt) {
    var keyCode = null;

    if( evt.which ) {
        keyCode = evt.which;
    } else if( evt.keyCode ) {
        keyCode = evt.keyCode;
    }
    if( 13 == keyCode ) {
        var searchButton = document.getElementById("search-button");
        searchButton.click();
        return false;
    }
    return true;
}
