var fromInlineReview = false;
var loginSuccess = function(returnTo, tt) {
  disableUnloadCheck();
  if (isInlineForm()) {
    hideIFrame();
    if (returnTo != null && returnTo.length > 0) {
      window.location = returnTo;
    }
  }
  else {
    submitURForm();
  }
}


var resetPassword = function(email, returnTo){
  returnTo = window.location.protocol + '//' + window.location.hostname + returnTo;
  var lb = new ta.overlays.CenteredOverlay({
    backdrop: ta.overlays.BACKDROP_ALWAYS,
    onHide: function(){
      submitURForm();
    }
  });
  lb.loadRemoteContent(returnTo + "&skin=iframe");
}

var checkUnload = function(e) {
  if (!$defined(e)) e = window.event;
  if (e) e.returnValue = JS_review_lost;

  if (isInlineForm()) {
      new Request({url:'/ActionRecord?action=InlineFormCanceled'}).send();
  }

  return JS_review_lost;
}

var isInlineForm = function() {
  var form = $('UserReview');
  return form && form.inlineForm && form.inlineForm.value == 'true';
}

var disableUnloadCheck = function() {
  window.removeEvent('beforeunload', checkUnload);
}

var enableUnloadCheck = function() {
  window.addEvent('beforeunload', checkUnload);
}

function getFootprint()
{
    try
    {
        var FootprintId = TALSO.get('CookieId');

        if( FootprintId == '' )
        {
            TALSO.set( 'CookieId', $('LsoId').value );
            if( TALSO.get('CookieId') != $('LsoId').value )
            {
                $('LsoId').value = '';
            }
        }

        else $('LsoId').value = FootprintId;
    }

    catch (e)
    {
        if( $('LsoId') ) $('LsoId').value = '';
    }

    if( $('LsoId') ) return $('LsoId').value;
    return '';
}

var manageLsoId = function() {
  $('screenWidth').value = screen.width;
  $('screenHeight').value = screen.height;
  getFootprint();
}

var submitURForm = function(disableUnload) {
  prepareSubmission();
  if (validateURForm) $('UserReview').submit();
}

var submitURFormAjax = function() {
  prepareSubmission();
  var form = $('UserReview');
  var uri = form.action;

  new Request({
    url: uri,
    data: form,
    onComplete: submitComplete,
    method: 'post',
    evalScripts: true
  }).send();
}

var submitComplete = function(txt, xml) {
  if (txt.match(/id="UR_THANKS"/)) {
    new ta.overlays.CenteredOverlay({
      backdrop: ta.overlays.BACKDROP_ALWAYS
    }).loadRemoteSuccess(txt);
  }
    $('UserReview').reset();
    $$('img[class^="ratings_5_"]').each(function(item){
      $(item).removeClass($(item).getProperty('class')).addClass('ratings_5_0').getNext().innerHTML='';
    });
    $('ReviewTitle').setStyle("color","#9a9a9a");
    $('content').setStyle("color","#9a9a9a");
    $('word_counter').innerHTML = "您至少还需要输入 50 个字";
    $('submit_div').show();
    $('loading_div').hide();
}

var prepareSubmission = function() {
    disableUnloadCheck();
    manageLsoId();
    if( $('bestrowcont') ){
      $$('#bestrowcont, #showbestrow').dispose();
      $$('select').setStyle("visibility","visible");
      window.removeEvent("resize",first_resetbestrow);
      $$('.center_flash object').show();
      return false;
    }
}

var validateURForm = function() {
  var form = $('UserReview');

  // make sure title is not a sample title
  var title = $('ReviewTitle');
  if ( title.value == title.defaultValue )
  {
    title.value = "";
  }
  return true;
}

var validateEateryThanks = function(e) {
  new Event(e || window.event).stop();
  var form = $('EATERY_THANKS');

  // make sure user selected a restaurant
  var url = false;
  form.getElements('input[type=radio]').some(function(input) {
    if (input.checked) url = input.value;
    return input.checked;
  });
  if (url) {
    Cookie.write('NPID', 1578, {domain: cookieDomain, time:5})
    window.location = url;
  }
  else $('EATERY_THANKS_ERROR').setStyle('display', 'inline');
}

function submitButtonHandler(event) {
  if (event) new Event(event).stop();
  submitURForm(true);
}

function submitButtonHandlerAjax(event) {
  if (event) new Event(event).stop();
  closeLightbox(); // close preview lightbox if applicable
  fromInlineReview = true;
  submitURFormAjax(true);
}

function thanksFromSave() {
  ta.store('inlineFormThanksFromSave', true);
}


function thanksSaveSelectedAjax(event) {
  if (event) new Event(event).stop();
  var form = $('UR_PROFILE');

  new Request({
    url: form.action,
    data: form,
    applyBehavior: true,
    onComplete:function(response){
      $('THANK_YOU').set('html',response);
    },
    method: 'POST'
  }).send();
}


function setSubmitAction(value,pid)
{
  $('submitAction').value=value;
  if (pid)
    $('pid').value=pid;
}



function updatePhotoAjax(event) {
  if (event) new Event(event).stop(); thanksSaveSelectedAjax(event);
}

function iframeLoaded(elmt) {
  if (ta.has('inlineFormThanksFromSave')) {
    ta.remove('inlineFormThanksFromSave');
    closeLightbox();
  }
  else {
    var div = $('THANK_YOU');
    div.innerHTML = elmt.innerHTML;
    window.behavior.apply(div);
  }
}

function closeThanks() {
  closeLightbox();
}

function closeLightbox() {
  var lb = ta.retrieve('overlays.current');
  if (lb) lb.hide();
}

function fraudPeek(event) {
  $('noFraudPeek').value="1";
  
  // Record the peek.
  new Request({url: '/ReportIAP?action=fdetails&fp=' + getFootprint()}).send();

  ta.call('ta.overlays.Factory.relRight', event);
}

function submitLufthansa(event) {
  new Event(event).stop();
  new Request({
    url: '/MemberProfileController',
    data: [
      {
        'Action': 'LufthansaMM'
      },
      $('LUFTHANSA_FORM')
    ],
    onFailure: function(e) { alert(JS_Ajax_failed); },
    onComplete: function(txt,xml) {
      if(txt.match(/^{/)) {
        var data = eval( '(' + txt + ')' );
        if(data.ERROR) {
          ta.overlays.showInLightbox(data.ERROR);
          return;
        }
        alert(JS_Ajax_failed);
        return;
      }
      if(txt.match(/LHERROR/)) {
        $('LUFTHANSA_ERROR').set('html',txt);
      }
      else {
        $('LUFTHANSA_CONTAINER').set('html',txt);
      }
    }
  }).send();
}

function initSearchTypeFromHash()
{
  if (location.hash.length > 1)
  {
    var elt = $(location.hash.substr(1));
    if (elt != null && elt.name == "type")
    {
      elt.checked="checked";
      var boundfn = changeSearchType.bind(elt);
      boundfn();
    }
  }
}

/* for expand inline review, hide book buttons if check rate box doesn't exist. */
function checkCheckRate(){
  if ($$('input[name=searchPrice]').length == 0
      && $$('.see-prices-btn').length == 0
      && $$('.book-now-btn').length == 0) {
    
    $$('.bookNow').hide();
  }
}
ta.store("ta.servlet.Reviews.callback", checkCheckRate);

rules['#UR_PROFILE'] = function(elmt) {
  elmt.addEvent('submit', function (e) {
    elmt.action = elmt.action + '?' + elmt.toQueryString();
    return true;
  });
}

var userReviewBannerSlideFx = null;

function showCertifiedHotelBanner() {
  var nextPos = -640;
  function animateBannerContent(){
    $("daodaoCertifiedHotelBenefitListWrapper").tween("left", nextPos);
    if (nextPos == 0)
      nextPos = -640;
    else 
      nextPos = 0;
  }
  if (userReviewBannerSlideFx != null) {
    userReviewBannerSlideFx.slideIn().chain(function(){
      // after slide in, animate the banner every 10 seconds.
      animateBannerContent.periodical(10000);
    });
  }
}

if (typeof dd == "undefined") dd = {};
if (typeof dd.hotels == "undefined") dd.hotels = {};
if (typeof dd.hotels.halfmeta == "undefined") dd.hotels.halfmeta = {};
if (typeof dd.hotels.checkrate == "undefined") dd.hotels.checkrate = {};

dd.hotels.halfmeta.timer = false;
dd.hotels.halfmeta.lastElem = false;
dd.hotels.halfmeta.timerElem = false;

dd.hotels.halfmeta.parsePriceStr = function (s) {
  var values = s.split(",");
  if (values.length == 2) {
    var elem = ta.id(values[0]+"_price");
    if (elem) {
      var price = parseInt(values[1]);
      if (!isNaN(price)) {
        if (price > 0) {
          elem.innerHTML="<strong>"+values[1]+"</strong>元起";
        } else if (price == -2) {
          elem.innerHTML="已满房";
        } else {
          elem.innerHTML="价格不详";
        }
        elem.hasPrice = true;
      }
    }
  }
}

dd.hotels.halfmeta.showDaoDaoMetaPrices = function() {
  var form = ta.id('HotelDateSearch');
  if (!form) {
    return;
  }
  
  var checkIn = form.getElements('[id^=checkIn_]')[0]
  var checkOut = form.getElements('[id^=checkOut_]')[0]
  if (!checkIn || !checkOut) {
    return;
  }
  
  var priceElements = $$('.metaprice');
  var spinner = ta.id('show-meta-prices-spinner');
  
  var pattern = new RegExp(/check.*_([0-9]+)/);
  var geo = pattern.exec(checkIn.id)[1];
  
  var _data = {
    loc: geo,
    start: checkIn.value,
    end: checkOut.value,
    action: "getPrices"
  };
  
  new Request({
    url : '/DaoDaoHotelMetaPricesAjax',
    data : _data,
    method:'post',
    onRequest : function() {
      // show spinner
      spinner.show();
  
      priceElements.each(function (e) {
        e.hasPrice = false;
        e.innerHTML="";
      });
    },
    onComplete : function(txt) {
      setTimeout(function() {
        txt.split("\n").each(dd.hotels.halfmeta.parsePriceStr);
        
        priceElements.each(function (e) {
          if (!e.hasPrice) {
            e.innerHTML="价格不详";
          }
        });
        
        // hide spinner
        spinner.hide();
      }, 500);
    }
  }).send();
}

dd.hotels.halfmeta.delayedShow = function(elem, delay) {
  elem = ta.id(elem)
  this.lastElem = elem;

  // start a new timer only if we moused over a new element
  if (elem != this.timerElem) {
    if (this.timer) {
      // clear the old timer
      clearTimeout(this.timer);
    }
  
    this.timerElem = elem;
    this.timer = setTimeout(function() {
      // only update if we are still hovering over this element
      var hm = dd.hotels.halfmeta;
      if (hm.lastElem != null && hm.timerElem == hm.lastElem) {
        hm.doHighlight(hm.timerElem);
      }
      hm.timerElem = null;
    }, delay);
  }
}

dd.hotels.halfmeta.doHighlight = function(elem) {
  $$('.pricecheck').each(function(e) {
    if (e == elem) {
      e.addClass('highlight');
      e.getElement('input').checked = true;
    } else {
      e.removeClass('highlight');
      e.getElement('input').checked = false;
    }
  });
}

dd.hotels.halfmeta.mouseOut = function() {
  this.lastElem = null;
}

dd.hotels.halfmeta.checkRateProviderMetaPriceClick = function(event, elmt, vendSetId, crType) {
  elmt = ta.id(elmt);
  if (elmt.hasClass('pricecheck')) {
    if (this.timer) {
      // clear the old timer
      clearTimeout(this.timer);
    }
    this.doHighlight(elmt);
  }
  ta.commerce.checkrates.checkRatesClicked(event, elmt, vendSetId, crType);
}

dd.hotels.checkrate.showCheckRateOverlayTimeout = null;
dd.hotels.checkrate.hideCheckRateOverlayTimeout = null;

dd.hotels.checkrate.alignCheckRateOverlay = function(){
  var elementToAlignWith = ta.id("HotelDateSearch");
  var position = elementToAlignWith.getPosition(); // get position relative to page.
  var overlay = ta.id('checkrate_overlay');
  overlay.setPosition({x : position.x - 5, y : position.y - 5});
};

dd.hotels.checkrate.showCheckRateOverlay = function(event, elmt, nodelay){
  dd.hotels.checkrate.clearCheckRateOverlayTimeout();
  if (nodelay){
    _rdRecord('http://rd.daodao.com/coverage/HR/CR/Education/clickshow');
    dd.hotels.checkrate.alignCheckRateOverlay();
    var overlay = ta.id('checkrate_overlay');
    overlay.fade("show");
    overlay.show();
  } else {
    _rdRecord('http://rd.daodao.com/coverage/HR/CR/Education/hovershow');
    dd.hotels.checkrate.showCheckRateOverlayTimeout = (function(){
      dd.hotels.checkrate.alignCheckRateOverlay();
      var overlay = ta.id('checkrate_overlay');
      overlay.set("tween", {duration: 200});
      if (!overlay.isVisible()){
        overlay.fade("hide");
        overlay.show();
      }
      overlay.fade(1.0);
    }).delay(500);
  }
};

dd.hotels.checkrate.hideCheckRateOverlay = function(event, elmt){
  dd.hotels.checkrate.clearCheckRateOverlayTimeout();
  var overlay = ta.id('checkrate_overlay');
  overlay.hide();
};

dd.hotels.checkrate.clearCheckRateOverlayTimeout = function(){
  if (dd.hotels.checkrate.hideCheckRateOverlayTimeout != null)
  {
    clearTimeout(dd.hotels.checkrate.hideCheckRateOverlayTimeout);
    dd.hotels.checkrate.hideCheckRateOverlayTimeout = null;
  }
  if (dd.hotels.checkrate.showCheckRateOverlayTimeout != null)
  {
    clearTimeout(dd.hotels.checkrate.showCheckRateOverlayTimeout);
    dd.hotels.checkrate.showCheckRateOverlayTimeout = null;
  }
};

dd.hotels.checkrate.synchingDates = false;

dd.hotels.checkrate.synchDates = function(paired, overlay){
  if (dd.hotels.checkrate.synchingDates){
    return true;
  }
  _rdRecord('http://rd.daodao.com/coverage/HR/CR/Education/providerchanged');
  var elmt = paired.elmt;
  dd.hotels.checkrate.synchingDates = true;
  var isCheckIn = elmt.hasClass("checkIn");
  var updateTarget = ".cal .checkIn";
  if (!isCheckIn) {
    updateTarget = ".cal .checkOut";
  }
  $$(updateTarget).each(function(item){
    if (item != elmt){
      item.value = elmt.value;
      item.onchange();
    }
  });
  dd.hotels.checkrate.synchingDates = false;
};

var userreviewPageOnload = function (){
  if ($("daodaoCertifiedHotelBanner")){
    $("daodaoCertifiedHotelBanner").show();
    userReviewBannerSlideFx = new Fx.Slide("daodaoCertifiedHotelBanner").hide();
    showCertifiedHotelBanner.delay(3000);
  }
  
  if ($$('.show-meta-prices').length > 0) {
    dd.hotels.halfmeta.showDaoDaoMetaPrices();
  }
  
  if ($("see-prices-btn-hover")){
    $("see-prices-btn-hover").fade("hide");
    $("see-prices-btn-hover").show();
    (function(){
      new Fx.Tween('see-prices-btn-hover', {
        property: 'opacity',
        duration: 500,
        link: 'chain',
        transition: 'sine:in:out'
      }).start(1).start(0);
    }).periodical(3000);
  }
};

var userreviewPageDomReady = function(){
  // put the overlay at the bottom of body for absolute positioning;
  if (ta.id('checkrate_overlay') != null) {
    ta.id('checkrate_overlay').inject(document.body);
    ta.store('calendar.onUpdateCallback', 'dd.hotels.checkrate.synchDates');
    $(window).addEvent("resize", dd.hotels.checkrate.alignCheckRateOverlay);
    
    // hook up rd
    $$("#checkrate_overlay .cal .Cdate").addEvent("change", function(){_rdRecord('http://rd.daodao.com/coverage/HR/CR/Education/datechanged');});
  }
};

$(window).addEvent( 'domready', userreviewPageDomReady );
$(window).addEvent( 'load', userreviewPageOnload );

