//Browser detection
var ext = (jQuery.browser.msie && jQuery.browser.version == "6.0") ? 'gif' : 'png';

//Apply IE6 flicker fix
try { document.execCommand("BackgroundImageCache", false, true); } catch(err) {}

//Apply IE png Hack
jQuery('#bg').ifixpng();
jQuery('#logo').ifixpng();
jQuery('#sign').ifixpng();
jQuery('#free').ifixpng();

if (logged_in) {
  jQuery('#tabs li').ifixpng();
};

jQuery('#main_title a').ifixpng();
jQuery('#blog_image img').ifixpng();

//safe console.log
function cl(s) {
  if (jQuery.browser.mozilla) {
    if (typeof(console) != 'undefined') {console.log(s)}
  }
};

//scrollTo method
//jQuery.fn.extend({
//  scrollTo : function(speed, easing) {
//    return this.each(function() {
//      var targetOffset = jQuery(this).offset().top;
//      jQuery('html,body').animate({scrollTop: targetOffset}, speed, easing);
//    });
//  }
//});

function tip(id, html) {
  var tip = jQuery('#tip');
  var x;
  jQuery("#"+id).mousemove(
    function(e){
      (e.pageX < (jQuery("body").width() - 200)) 
        ? x = e.pageX+20
        : x = e.pageX-150;
      tip.css({'left': x, 'top': e.pageY+20});
      tip.html(html);
      if (tip.css('display') == 'none'){
        tip.show();
        jQuery('#tip img');
      }
    }      
  );
  jQuery("#"+id).mouseout(
    function(){
      tip.hide();
    }
  )
};

tip('sign','<img src="/images/sign_hoverbox.'+ext+'" />');
tip('free','<img src="/images/free_hoverbox.'+ext+'" />');

tip('thumbJim','<img src="/images/jim.'+ext+'" />');
tip('thumbYury','<img src="/images/yury.'+ext+'" />');

//Founders thumbs
j("#thumbJim-image").html('<img src="/images/jim_thumb.'+ext+'" alt="Jim" />');
j("#thumbYury-image").html('<img src="/images/yury_thumb.'+ext+'" alt="Yury" />');

// Blog animation
jQuery('h2#bloghead').click(toggle_blog);

function toggle_blog(){
  var blog = jQuery('#blog');
  (blog.css('top') == '210px') ? blog_off() : blog_on()
};

var blog_shown = true;

function blog_on() {
  if (blog_shown == false){
    window.frames.blog_frame.location.href="http://holmesblog.com/index.php?wptheme=devBlog";
    blog_shown == true;
  }
  if (jQuery('#blog').css('top') == '904px') {
    jQuery('#blog').animate({top:'210px',height:'886px'},500);
    jQuery('#blog iframe').animate({height:'846px'},500);
    jQuery.scrollTo(200,'slow');
  }
  return true;
};

function blog_off() {
  if (jQuery('#blog').css('top') == '210px') {
    jQuery('#blog').animate({top:'904px',height:'190px'},500)
    jQuery('#blog iframe').animate({height:'190px'},500);
  }
  return true;
};

//function show_blog(){
//  window.frames.blog_frame.location.href="http://holmesblog.com/index.php?wptheme=devBlog";
//  blog_shown = true;
//}

function show_faq(){
  blog_on();
  blog_shown = false;
  window.frames.blog_frame.location.href="http://holmesblog.com/category/faq/?wptheme=devBlog";
  return false;
}



//Enable tabs
var tabs = new Control.Tabs($('tabs'), {
  linkSelector: 'li a',  
  activeClassName: 'selected',  
  beforeChange: function(){blog_off(), contact_us_off(); about_us_off();}
});

/*disabled because affects map rendering
if(!logged_in){
  tabs.setActiveTab('signin');
}
*/

//For stupid IE
jQuery('#homes_tab').click(function(){
  tabs.first();
});
jQuery('#settings_tab').click(function(){
  tabs.last();
});

jQuery(document).ready(function(){

  j('.signup_link, .text_hi_box>.overla                                                                                                                             y').click(function(){
    tabs.setActiveTab('signup');
    return false;
  });

  j('.signin_link').click(function(){
    tabs.setActiveTab('signin');
    return false;
  });

//this overlay is dynamically generated so need to wait while document become ready. Should be DRYd up.
  j('.sign_up_box>.overlay').click(function(){
    tabs.setActiveTab('signin');
    return false;
  });
  j('.overlay').css('cursor', 'pointer');

  j('.text_hi_box>.overlay').click(function(){
    tabs.setActiveTab('signup');
    return false;
  });
  j('.overlay').css('cursor', 'pointer');
  
// end overlay
  
  subNavTabs.setActiveTab($('summaryTab').down('a'));
  if(logged_in) {
    settingsSubNavTabs = new Control.Tabs('settings_sub_nav');
    settingsSubNavTabs.setActiveTab($('mainSettingsTab').down('a'));
  }

  new Control.Modal($('tos').down(),{
    position: 'absolute',
    containerClassName: 'modal_container',
    position: 'absolute',
    height: 500
  });
  new Control.Modal($('tos2'),{
    position: 'absolute',
    containerClassName: 'modal_container',
    position: 'absolute',
    height: 500
  });
});

subNavTabs = new Control.Tabs('sub_nav',{
  afterChange:function(){init_images()}
});

//document.observe('contentloaded', function(){
   function showRating() {
     var cur = jQuery('#subscription_rating').html();
     var id =  jQuery('#subscription_id').html();
     jQuery('#rating').clear().rater(rating_address+"/"+id, {maxvalue:5, curvalue:cur})
     cl('showing rating');
   }

    //ScrollLock for modal windows
//    function scrollLock(e) {
//        var a=e.data.pos;
//        window.scrollTo(a[0],a[1]);
//        return false;
//    }
//
//    function onOpen(h) {
//        var a = [self.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
//                 self.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop];
//        jQuery(window).bind('scroll',{pos: a},scrollLock);
//    }
//
//    function onClose(h) {
//        jQuery(window).unbind('scroll',scrollLock); // unbinds lock
//    }

    if (logged_in){
    var add_property_modal;
    if ($('add_property')) {
    add_property_modal = new Control.Modal($('add_property'),{
        contents: jQuery('#add_property_form_container').html(),
        containerClassName: 'modal_container',
        position: 'absolute',
        afterOpen: function() {
          cl('form opened');
          jQuery('.add_property_form').submit(
            function(){
            jQuery.ajax({
              type : "POST",
              url : jQuery(this).attr('action'),
              data : {'search[query]':jQuery(this).children('input.search_query').val()},
              dataType : 'script',
              success : function(){
                if(marker_data) {
                  Grid.marker_init(marker_data);
                  //Grid.update();
                  Grid.add(marker_data);
                }
              }
            })
            add_property_modal.close();
            return false;
            }
          )
        }
    })
    }
    };

    $w('post_listing about_us_link').each( function(id) {
      if ($(id)) {
        window.modal = new Control.Modal($(id).down(),{
          position: 'absolute', top: 195,
          afterOpen: onOpen, afterClose: onClose
        });
      }
    });

    cl('modals binded');
//});  

jQuery("#notes_tab").toggle(notes_on,notes_off);

jQuery('#notes_text').click(notes_toggle);

function notes_toggle(){
  jQuery('#notes_text').toggle();
  jQuery('#notes_form').toggle();
}

function notes_on(){
  jQuery("#notes").animate({
    height:140
  });
};

function notes_off(){
  jQuery("#notes").animate({
    height:24
  });
};

jQuery('#notes_form form').submit(function(){
  jQuery.ajax({
    type : "POST",
    url : jQuery(this).attr('action')+"?subscription_id="+jQuery('#subscription_id').val(),
    data : {'notes':jQuery(this).children('textarea').val()},
    dataType : 'script'
  });
  return false;
});

Ajax.Responders.register({
  onComplete : function() {
    $('loading').hide();
  }
});

jQuery('#undo_link').click(function(){
  jQuery.ajax({
    type : "POST",
    url : jQuery(this).attr('href'),
    data : {'id':jQuery('#undo_id').val()},
    dataType : 'script',
    success : function(){
      Grid.add(marker_data);
      //Grid.update();
      jQuery('#undo').hide();
    }
  });
  return false;
});

window.setTimeout(function(){jQuery("#alert").animate({top:200}, "slow")}, 8000);
jQuery('#alert .x_close').click(function(){
  jQuery("#alert").animate({top:200}, "slow")
});

 
    function init_images() {
      j("#images_wrapper img").height(100).width(140);
      kkk = {};
      kkk[1] = [1];
      kkk[2] = [1,1];
      kkk[3] = [0.8, 1, -0.79];
      kkk[4] = [0.6, 0.8, 1, -0.79];
      kkk[5] = [0.6, 0.8, -1, -0.79, -0.59];

      rkkk = {};
      rkkk[1] = [1];
      rkkk[2] = [1,1];
      rkkk[3] = [0.79, 1, -0.8];
      rkkk[4] = [0.59, 0.79, 1, -0.8];
      rkkk[5] = [0.59, 0.79, -1, -0.8, -0.6];

      size = j("#images_wrapper img").size();
      show_size = (size > 5) ? 5 : size;

      kk = kkk[show_size];
      rkk = rkkk[show_size];
      left=0;
      corr = 0;
      h = 0;
      top_margin = 10;
      
      if (size>4)
        left_margin = 5;
      if (size==4)
        left_margin = 25;
      if (size==3)
        left_margin = 59;
      w = 0;
      if(size>2)
        j("#images_wrapper img").each(function(n){
          img = this;
          h = j(img).height();
          w = j(img).width();
          l = (kk[n]||-0.58);
          k = Math.abs(l);
          a = l/k; 
          if(a<0) corr = 0.2;

          j(img).css({ 
              position: 'absolute', 
              height:h*k, 
              width: w*k, 
              top: h*(1-k)/2 + top_margin,
              left: left,
              'z-index': k*100
            });

          left = left + w*(k+corr)/2 + left_margin;
        });
    };

    function slideLeft(m){
      j("#images_wrapper").append(j("#images_wrapper img:first")[0]);

      j("#images_wrapper img").each(function(n){
        img = this;
        l = (kk[n]||0.55);
        m = (kk[n-1]);
        k = Math.abs(l);
        a = l/k; 
        if(a<0) corr = 0.2;

        if(n>=show_size)
          j("#images_wrapper img:eq("+(n)+")").css('z-index', 1);
          j(this).css('z-index', k*100);
          j("#images_wrapper img:last").css('z-index',5);
          j(this).animate({ 
            height:h*k, 
            width: w*k, 
            top: h*(1-k)/2 + top_margin,
            left: left
          }, 500*Math.abs(m), function(){
            //
          });
          left = left + w*(k+corr)/2 + left_margin;
      });
  }
  
  function slideRight(m){
    j("#images_wrapper").prepend(j("#images_wrapper img:last")[0]);
    
    j("#images_wrapper img").each(function(n){
      img = this;
      l = (rkk[n]||0.55);
      m = (rkk[n-1]);
      k = Math.abs(l);
      a = l/k; 
      if(a<0) corr = 0.2;
      if(n>=show_size)
        j("#images_wrapper img:eq("+(n)+")").css('z-index', n+1);
      j(this).css('z-index', k*100);
      j("#images_wrapper img:first").css('z-index',5);
      j(this).animate({ 
          height:h*k, 
          width: w*k, 
          top: h*(1-k)/2 + top_margin,
          left: left
        }, 500*Math.abs(m));
        left = left + w*(k+corr)/2 + left_margin;
    });
  };
  
  function start_images(){
    if(size > 2)
    j("#images_wrapper img").click(function(e){
      clicked_img = j(e.target)[0];
      pos = Math.round((show_size-1)/2) - j.inArray(clicked_img,j("#images_wrapper img"));
      pos = pos/Math.abs(pos);
      left = 0;
      corr = 0;
      if(pos<0) {
        //cl('left: '+ pos);
        slideLeft(Math.abs(pos));
      }
      else if(pos>0) {
        //cl('right: '+ pos);
        slideRight(pos);
      }
    });
  };
  j(document).ready(function(){
    init_images();
    start_images();
  });
//new PeriodicalExecuter(Grid.update, 60);

//Inactive-tab animation

//      j('#tabs li a:not(.selected)').livequery(function() {
//          j(this).hover(function() {
//            j(this).animate({ left : "4px" }, 150);            
//            }, function() {
//            j(this).animate({ left : "0px" }, 150);
//          });
//         }, function() { 
        // unbind the mouseover and mouseout events 
//        j(this) 
//            .unbind('mouseover') 
//            .unbind('mouseout'); 
//       });

