(function(){ // create genre menu 
  var el = document.getElementById("genre-menu")

  for(var i=0;i<Turner_GenreList.length;i++){
    a = document.createElement('a');
    a.href='#'
    a.innerHTML = Turner_GenreList[i].name
    if (Turner_GenreList[i].name == "News & World Affairs") {
      a.innerHTML = "News & <br>World Affairs";
    }
    if (Turner_GenreList[i].name == "Actuality & Reality") {
      a.innerHTML = "Actuality<br/>& Reality";
    }
    a.id = "genre-menu-" + Turner_GenreList[i].id
    a.className = 'genre-menu-item'
    a.name = Turner_GenreList[i].id
    el.appendChild(a)
  }


})()



var setupAdvSearchDialog = function() {
  var Dom = YAHOO.util.Dom
  var Evt = YAHOO.util.Event
  var Sel = YAHOO.util.Selector

  Evt.addListener('adv-search-button', 'click', function(evt){
    Dom.setStyle('adv-search-bar', 'display', 'block')
    Evt.preventDefault(evt)
  })

  var bar = Sel.query('#adv-search-bar .content')[0]

  var createRowHeader = function(txt) {
    var el = document.createElement("span")
    el.className = 'row-header'

    el.innerHTML = txt
    return el
  }

  bar.appendChild(createRowHeader('Genre '))
  var elGenreSelect = document.createElement("select")
  var elSubGenreSelect = document.createElement("select")

  elGenreSelect.className='genre'
  elSubGenreSelect.className = 'subgenre'
  elGenreSelect.options.add(new Option('------ Select ------', ''))
  elSubGenreSelect.options.add(new Option('------ Select ------', ''))
  
  for(i=0;i<Turner_GenreListSortAlpha.length;i++){
    if (Turner_GenreListSortAlpha[i].name != 'CNN ImageSource') {
      var opt = new Option(Turner_GenreListSortAlpha[i].name, Turner_GenreListSortAlpha[i].id)
      elGenreSelect.options.add(opt)
    }
  }

  YAHOO.util.Event.addListener(elGenreSelect, 'change', function(){
    elSubGenreSelect.options.length = 1
    if(this.value){
      var selectedGenre = null

      for(i=0;i<Turner_GenreListSortAlpha.length;i++){
        if(this.value == Turner_GenreListSortAlpha[i].id){
          selectedGenre = Turner_GenreListSortAlpha[i]
          break;
        }
      }
      
      if(selectedGenre == null) return 
      for(i=0;i<selectedGenre.subGenreList.length;i++){
        var v = selectedGenre.subGenreList[i]
        elSubGenreSelect.options.add(new Option(v.name, v.id))
      }
    }
  })
  
  bar.appendChild(elGenreSelect)
  bar.appendChild(document.createElement("br"))


  bar.appendChild(createRowHeader("Sub Genre "))
  bar.appendChild(elSubGenreSelect)
  bar.appendChild(document.createElement("br"))

  var elBrandSelect = document.createElement("select")
  elBrandSelect.className='advancedbrand'
  elBrandSelect.options.add(new Option('------ Select ------', ''))
  for(i=0;i<Turner_BrandList.length;i++){
    var opt = new Option(Turner_BrandList[i].name, Turner_BrandList[i].id)
    elBrandSelect.options.add(opt)
  }

  bar.appendChild(createRowHeader("Brand "))
  bar.appendChild(elBrandSelect)
  bar.appendChild(document.createElement("br"))

  bar.appendChild(createRowHeader("Duration "))
  bar.appendChild(Turner_CreateFancyCheckbox("duration=30", "30'", 'radio'))
  bar.appendChild(Turner_CreateFancyCheckbox("duration=60", "60'", 'radio'))
  bar.appendChild(Turner_CreateFancyCheckbox("duration=other", "Others", 'radio'))
  bar.appendChild(document.createElement("br"))
  bar.appendChild(createRowHeader("Show Type "))
  bar.appendChild(Turner_CreateFancyCheckbox("showtype=one", "One-off", 'radio'))
  bar.appendChild(Turner_CreateFancyCheckbox("showtype=series", "Series", 'radio'))
  bar.appendChild(document.createElement("br"))

  if(SalesLogin == 5) {
        bar.appendChild(createRowHeader("Platform "))
        bar.appendChild(Turner_CreateFancyCheckbox("platform=FTV", "FTV"))
        bar.appendChild(Turner_CreateFancyCheckbox("platform=CSTV", "Cable/Sat TV"))
        bar.appendChild(Turner_CreateFancyCheckbox("platform=VOD", "VOD"))
        bar.appendChild(document.createElement("br"))
        bar.appendChild(createRowHeader("&nbsp;"))
        bar.appendChild(Turner_CreateFancyCheckbox("platform=ONLINE", "Online"))
        bar.appendChild(Turner_CreateFancyCheckbox("platform=MOBILE", "Mobile"))
        bar.appendChild(Turner_CreateFancyCheckbox("platform=INFLIGHT", "Inflight"))
        bar.appendChild(document.createElement("br"))
  }
  
  bar.appendChild(createRowHeader("Screener Available "))
  bar.appendChild(Turner_CreateFancyCheckbox("screener=yes", "Yes", 'radio'))
  bar.appendChild(Turner_CreateFancyCheckbox("screener=no", "No", 'radio'))
  bar.appendChild(document.createElement("br"))
  
  bar.appendChild(createRowHeader('Latest Release '))
  bar.appendChild(Turner_CreateFancyCheckbox("latest=yes", "Yes", 'radio'))
  bar.appendChild(Turner_CreateFancyCheckbox("latest=no", "No", 'radio'))
  bar.appendChild(document.createElement("br"))

  if(SalesLogin == 1) {
    bar.appendChild(createRowHeader('Published '))
    bar.appendChild(Turner_CreateFancyCheckbox("published=yes", "Yes", 'radio'))
    bar.appendChild(Turner_CreateFancyCheckbox("published=no", "No", 'radio'))
    bar.appendChild(document.createElement("br"))
  }

  bar.appendChild(createRowHeader('Title '))
  var elAdvSearchKeyword = document.createElement("input")
  elAdvSearchKeyword.id = 'adv-search-keyword'
  elAdvSearchKeyword.className = 'search-query-empty';
  bar.appendChild(elAdvSearchKeyword)

  //
//    var bytext = document.createElement("span")
//    bytext.innerHTML = ' by ';
    bar.appendChild(document.createTextNode('\u00a0 by \u00a0'));

  // seaching algo 
  bar.appendChild(function(){
    var select = document.createElement('select');
    select.className = 'matching';
    select.options.add(new Option('Partial Words', ''));
    select.options.add(new Option('Whole Words', 'any'));
    select.options.add(new Option('All Words', 'all'));
    select.options.add(new Option('Exact Phrase', 'exact'));

    return select;
  }());
  bar.appendChild(document.createElement("br"))
  bar.appendChild(document.createElement("br"))




  
  Evt.addListener(Sel.query('#adv-search-bar .close')[0], 'click', function() {
    Dom.setStyle('adv-search-bar', 'display', 'none')
  })

  Evt.addListener('adv-search-button','click', function() {
    Dom.setStyle('adv-search-bar','display', 'block')
    var region = Dom.getRegion('adv-search-button')
    Dom.setXY('adv-search-bar', [region.x, region.bottom + 5])
  })
}

setupAdvSearchDialog();



// history


YAHOO.util.Event.onDOMReady(function(){
  var el = document.getElementById('search-result')
  if(el == null){
    // hook all the searching functions to redirect to search page for the time being
    var list = YAHOO.util.Selector.query('.genre-menu-item')
    for(i=0;i<list.length;i++){
      YAHOO.util.Event.addListener(list[i], 'click', function(){
        location.href = '/search#query={"genre"%3A"'+this.name+'"}'
      })
    }
    var searchButton = document.getElementById("search-button")
    YAHOO.util.Event.addListener(searchButton, 'click', function(evt){
      YAHOO.util.Event.preventDefault(evt)
      var filteredKeyword = document.getElementById('search-query').value;
      // remove duplicated spacings
      filteredKeyword = filteredKeyword.replace(/\s+/g," ");
      if ((filteredKeyword.toLowerCase() == 'a') || (filteredKeyword.toLowerCase() == 'an') || (filteredKeyword.toLowerCase() == 'the')) {
        alert("Search criteria for articles (a/an/the) is not valid.");
      }

      // encode uri
      var keyword = encodeURIComponent(filteredKeyword);
      location.href='/search#query={"keyword"%3A"'+keyword+'"}'
    })

    YAHOO.util.Event.addListener('checkbox-lastestrelease', 'click', function(evt) {
      // 20100304: behaviour change, click always turn ON.
      //this.className = this.className == 'checked' ? "unchecked" : "checked"
      //var yn = this.className == 'unchecked' ? 'no':'yes';
      this.className = 'checked';
      var yn = 'yes';
      location.href ='/search#query={"latest"%3A"'+yn+'"}'
      YAHOO.util.Event.preventDefault(evt)
    })
  }

  el = document.getElementById('genre-menu-05a9539ebb39757f78e50ccec3db95355d9a3357')
  if(el != null) {
    el.href = '/cnnimagesource'
  }

//  el2 = document.getElementById('genre-menu-2804d9f16a38553f8238529c90d66e7d7426c150')
//  if(el2 != null) {
//    el2.href = '/formats'
//  }


})

// more advanced search dialog setup
YAHOO.util.Event.onDOMReady(function(){
  // radios
  var advSearchButton = YAHOO.util.Selector.query('#adv-search-bar .search-button')[0]

  YAHOO.util.Event.addListener(advSearchButton, 'click', function(){

    var query = {}
    query.genre = YAHOO.util.Selector.query('#adv-search-bar select.genre')[0].value;
    query.subgenre = YAHOO.util.Selector.query('#adv-search-bar select.subgenre')[0].value;
    query.brand = YAHOO.util.Selector.query('#adv-search-bar select.advancedbrand')[0].value;
    query.matching = YAHOO.util.Selector.query('#adv-search-bar select.matching')[0].value;
    var filteredKeyword = YAHOO.util.Dom.get('adv-search-keyword').value;
    //    var filteredKeyword = Turner_FilterSearchKeyword(YAHOO.util.Dom.get('adv-search-keyword').value);
    //    if (filteredKeyword != YAHOO.util.Dom.get('adv-search-keyword').value) {
    //        alert("Articles (a/an/the) removed from keyword list.");
    //    }
    // remove duplicated spacings
    filteredKeyword = filteredKeyword.replace(/\s+/g," ");
    if ((filteredKeyword.toLowerCase() == 'a') || (filteredKeyword.toLowerCase() == 'an') || (filteredKeyword.toLowerCase() == 'the')) {
      alert("Search criteria for articles (a/an/the) is not valid.");
    }
    YAHOO.util.Dom.get('adv-search-keyword').value = filteredKeyword;

    query.keyword = YAHOO.util.Dom.get('adv-search-keyword').value

    var list = YAHOO.util.Selector.query('#adv-search-bar input.checkbox-checked')
    for(i=0;i<list.length;i++){
      kv = list[i].value.split('=')
      if(query[kv[0]]){
        query[kv[0]] += "," + kv[1]
      }else {
        query[kv[0]] = kv[1]
      }
    }
    YAHOO.util.Dom.setStyle('adv-search-bar', 'display', 'none')
    location.href= '/search#query='+encodeURIComponent(YAHOO.lang.JSON.stringify(query))
    
  })

  YAHOO.util.Event.addListener('adv-search-keyword', 'focus', function(){
    YAHOO.util.Dom.removeClass(this,'search-query-empty')
  })
  YAHOO.util.Event.addListener('adv-search-keyword', 'blur', function(){
    if(this.value){
      YAHOO.util.Dom.removeClass(this, 'search-query-empty')
    }else{
      YAHOO.util.Dom.addClass(this, 'search-query-empty')
    }
  })


})


YAHOO.util.Event.onDOMReady(function(){
  YAHOO.util.Event.addListener('search-query', 'focus', function(){
    YAHOO.util.Dom.removeClass(this,'search-query-empty')
  })
  YAHOO.util.Event.addListener('search-query', 'blur', function(){
    if(this.value){
      YAHOO.util.Dom.removeClass(this, 'search-query-empty')
    }else{
      YAHOO.util.Dom.addClass(this, 'search-query-empty')
    }
  })
})
