//---------------------------------------
// PUBLIC VARIABLES
//---------------------------------------
var is_ajaxing = null;
//---------------------------------------
// CONSTRUCTOR
//---------------------------------------
$(document).ready(function () {
   if(!($.browser.msie && $.browser.version.substr(0,1)=="6")) {}
   //create thumb pager
   $("#thumbnails").scrollable({ 
      // one configuration property 
      size: 1, 
      items: "#thumb_slider",
      hoverClass: 'hover',
      clickable: false
   });
   //create thumb hovers
   $('.thumb').hover(function(){
      $('#enlarged a').attr("href",$(this).children('span').html());
      $('#enlarged img').attr("src",'image_size.php?img=/' + $(this).children('span').html() + "&amp;h=237&amp;w=355");
   });
   //create accordion functions
   $('#property_menu ul').hide();
   $('#property_menu ul:first').show();
   $('#property_menu li span').click(function() {
      var checkElement = $(this).next();
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
         return false;
      }
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
         $('#property_menu ul:visible').slideUp('normal');
         checkElement.slideDown('normal');
         return false;
      }
   });
   //end accordion
   //request a showing button
   $('#request_a_showing_button').live("click",function() {
      ajax_update({ajaxURL: 'myscripts/mls/request_a_showing_form.php',type:'serialize',formId:'request_a_showing_form',callback:{fn: update_request_a_showing}});
   });
   //send to friend button
   $('#send_to_a_friend_button').live("click",function() {
      ajax_update({ajaxURL: 'myscripts/mls/send_to_a_friend_form.php',type:'serialize',formId:'send_to_a_friend_form',callback:{fn: update_send_to_a_friend}});
   });
   //mortgage calculator
   $('#btn_mortgage_calculate').live("click",function() {
      ajax_update({ajaxURL: 'myscripts/mls/mortgage_calculator.php',type:'serialize',formId:'mortgage_calculator',dataType:'json',callback:{fn: update_mortgage_calculator}});
      return false;
      //load_icon:'mortgage_calculating',
   });
   //.attr("type","button");
});
//---------------------------------------
// CALL BACK METHODS
//---------------------------------------
function update_request_a_showing(params) {
   $('#request_a_showing_form_wrapper').html(params.data);
   autopopulateLabels();
}
//---------------------------------------
function update_mortgage_calculator (params) {
   $('#down_payment div').html(params.data.down_payment);
   $('#amount_financed div').html(params.data.amount_financed);
   $('#monthly_payment div').html(params.data.monthly_payment);
   if($('#calc_results').hasClass('hidden')) {
      $('#calc_results').removeClass('hidden');
   }
}
//---------------------------------------
function update_send_to_a_friend(params) {
   $('#send_to_a_friend_form_wrapper').html(params.data);
   autopopulateLabels();
}
//---------------------------------------
// METHODS
//---------------------------------------
function toggle_ajax_loader (target,params) {
   var ajax_target = (target) ? target : "ajax_loader";
   var text = (params != null && params.text) ? '&nbsp;' + params.text : '';
   if($('#'+ajax_target).hasClass('hidden')) {
      $('#'+ajax_target).removeClass('hidden');
      $('#'+ajax_target).html("<img src='/spark/_mls/images/ajax-loader.gif' alt='Please wait&hellip;' />"+text+"");
   } else {
      $('#'+ajax_target).addClass('hidden');
      $('#'+ajax_target).empty();
   }
}
//---------------------------------------
function ajax_update(_atts) {
   var _data = (_atts.data) ? _atts.data : null;
   var _type = (_atts.type) ? _atts.type : "";
   var _ajax_loader_target = (_atts.load_icon) ? _atts.load_icon : null;
   var _ajax_loader_opts = (_atts.load_icon_opts) ? _atts.load_icon_opts : null;
   var _data_type = (_atts.dataType) ? _atts.dataType : "html";
   var _do_ajax = false;

   switch (_type) {
      case "serialize":
         _data = $('#'+_atts.formId).serialize();
         _do_ajax = true;
      break;
      default:
         if (_data != null) {
            _do_ajax = true;
         } else if ($('#sortOrder').val() != "") {
            //_data = {sortOrder: $('#sortOrder').val()};
            _do_ajax = true;
         } else {}
      break;
   }

   if (_do_ajax) {
      if (typeof toggle_ajax_loader == 'function' && $('#'+_ajax_loader_target).length > 0) {
         toggle_ajax_loader({target:_ajax_loader_target,options:_ajax_loader_opts});
      }
      ajax_in_action = true;

      //abort any open ajax calls
      if(is_ajaxing) {
         is_ajaxing.abort();
      }

      is_ajaxing = $.ajax({
             type: "POST"
            ,url: _atts.ajaxURL
            ,data: _data
            ,cache: false
            ,dataType: _data_type
            ,success: function(data) {
               is_ajaxing = false;

               if(data.error) {
                  //_debug(data.id);
               } else {
                  if(_atts.callback) {
                     (_atts.callback.params) ? _atts.callback.params.data = data : _atts.callback.params = {data: data};
                     (_atts.callback.params && _ajax_loader_target != null) ? _atts.callback.params.load_icon = _ajax_loader_target : "";
                     _atts.callback.fn(_atts.callback.params);
                  } else {
                     ($(".admin").length > 0) ? toggle_submit_btn('saved') : "";
                  }
                  //hide loading icon
                  if (typeof toggle_ajax_loader == 'function') {
                     toggle_ajax_loader({target:_ajax_loader_target,options:_ajax_loader_opts},true);
                  }
               }
            }//end success
      });
   }//end if
}