/* -----------------------------------------------------------------------------------------
   $Id: jscript_ajax_cart.js 899 2007-06-30 20:14:56 VaM $   

   VaM Shop - open source ecommerce solution
   http://vamshop.ru
   http://vamshop.com

   Copyright (c) 2007 VaM Shop
   -----------------------------------------------------------------------------------------
   based on: 
   (c) 2006	 Andrew Weretennikoff (ajax_sc.js,v 1.1 2007/03/17); medreces@yandex.ru 

   Released under the GNU General Public License
   ---------------------------------------------------------------------------------------*/

$(document).ready(function(){

/*
function doViewCart() {
    $.ajax({
        type:       'get',
        url:        'ajax_view_cart.php',
        success:    function(response){
            $("#divViewCart").html(response);
        }
    }); 
    
    return false;
}

function doViewBoxCart() {
    $.ajax({
        type:       'get',
        url:        'ajax_box_cart.php',
        success:    function(response){
            $("#divShoppingCart").html(response);
        }
    }); 
    
    return false;
}
*/
      $.fn.clearForm = function() {
        return this.each(function() {
          var type = this.type, tag = this.tagName.toLowerCase();
          if (tag == 'form')
            return $(':input',this).clearForm();
          if (type == 'text' || type == 'password' || tag == 'textarea')
            this.value = '';
          else if (type == 'checkbox' || type == 'radio')
            this.checked = false;
          else if (tag == 'select')
            this.selectedIndex = -1;
        });
      };

    var options = { 
        beforeSubmit: function(formData, jqForm, options){
            // validate
            var f = jqForm[0]; 
            var errors = '';
            
            if (!f.pm_monitor_review.checked && !f.pm_monitor_price.checked){
                errors += '<p>Выберите хотя бы одно из условий слежения за товаром!</p>';
            } else if (f.pm_monitor_price.checked && parseInt(f.pm_monitor_price_value.value) <= 0){
                errors += '<p>Значение процента изменения цены на товар должно быть целым положительным числом!</p>';
            }
            
            if (!f.pm_customer_name.value)
                errors += '<p>Поле "Имя" обязательно!</p>';
            if (!f.pm_customer_email.value)
                errors += '<p>Поле "E-mail" обязательно!</p>';
                
            if (errors !== ''){
                $("#divProductsMonitoring #errors").show();
                $("#divProductsMonitoring #errors").html(errors);
                return false;
            } else {
                $("#divProductsMonitoring #errors").hide();
                return true;
            }
        },
        success:    function(response){
            var f = $("#formProductsMonitoring");
            
            $("#divProductsMonitoring #errors").hide();
            $("#divProductsMonitoring .pagecontent").hide();
            
            $("#divProductsMonitoring #results").show();
            
            $("#divProductsMonitoring #results").html(response);
            
            $("#divProductsMonitoring").fadeOut(8000);
            
            $("#formProductsMonitoring").clearForm();
        },
        url:        'products_monitoring.php',
        type:       'post'
    };
    
    var f = $("#formProductsMonitoring");
    f.ajaxForm(options);

    $("#divProductsMonitoring").css({
        "left" : window.screen.width / 2 - 200 + "px",
        "top"  : window.screen.height / 2 - 200 + "px"
    });
    
    $("#divProductsMonitoring #errors").hide();
    $("#divProductsMonitoring #results").hide();
    
    $("#divProductsMonitoring .pagecontent").show();
    
    $("#viewProductsMonitoring").live("click", function(){
        $("#divProductsMonitoring").toggle(function(){
            $("#divProductsMonitoring #errors").html("");
            
            $("#divProductsMonitoring #errors").hide();
            $("#divProductsMonitoring #results").hide();
    
            $("#divProductsMonitoring .pagecontent").show();
        });
    });

    $("#closeProductsMonitoringBtn").live("click", function () {
            $("#divProductsMonitoring").hide();
        
            $("#divProductsMonitoring #errors").hide();
            $("#divProductsMonitoring #results").hide();
    
            $("#divProductsMonitoring .pagecontent").show();
    });
    
    $("#divViewCart > form[id='cart_quantity'] input[type='text']").live('focusout',function(e) {
        var f = $(this).parents('form:first');
        
        var options = { 
            success:    function(){
                            doViewCart();
                            doViewBoxCart();
                            
                            $("#divViewCart").show();
                        },
            url:        'upd_cart.php?action=update',
            type:       'post'
        };
        f.ajaxForm(options);
        f.submit();
    });
    
    var viewFunc = function () {
            $("#divViewCart").show();
            doViewCart();
    };
    
    $("#headerShoppingCart").live("click", viewFunc);
    $("#viewCartBtn").live("click", viewFunc);
    
    // убрать каменты для отображения корзины при клике
    //$("#headerShoppingCart").live("click", viewFunc);
    //$("#viewCartBtn").live("click", viewFunc);
    
    $("#closeCartBtn").live("click", function () {
            $("#divViewCart").hide();
    });
	
    $("#divViewCart > form[id='cart_quantity'] span.del_btn").live('click',function(e) {
        $.ajax({
            type:       'post',
            url:        'upd_cart.php?action=delete&id='+$(this).attr("id"),
            success:    function(){
                            doViewCart();
                            doViewBoxCart();
                            
                            $("#divViewCart").show();
                        }
        }); 
    });
});

SHOW_ADDED = 1; // set 0 if you no need show
Offset_X = -10;
Offset_Y = -30;

function addHandler(object, event, handler) { // Thanks xpoint.ru!
  if (typeof object.addEventListener != 'undefined')
    object.addEventListener(event, handler, false);
  else if (typeof object.attachEvent != 'undefined')
    object.attachEvent('on' + event, handler);
  else {
    var handlersProp = '_handlerStack_' + event;
    var eventProp = 'on' + event;
    if (typeof object[handlersProp] == 'undefined') {
      object[handlersProp] = [];
      if (typeof object[eventProp] != 'undefined')
        object[handlersProp].push(object[eventProp]);
      object[eventProp] = function(e) {
        var ret = true;
        for (var i = 0; ret != false && i < object[handlersProp].length; i++)
          ret = object[handlersProp][i](e);
        return ret;
    } }
    object[handlersProp].push(handler);
} }
function removeHandler(object, event, handler) { // Thanks xpoint.ru!
  if (typeof object.removeEventListener != 'undefined')
    object.removeEventListener(event, handler, false);
  else if (typeof object.detachEvent != 'undefined')
    object.detachEvent('on' + event, handler);
  else {
    var handlersProp = '_handlerStack_' + event;
    if (typeof object[handlersProp] != 'undefined') {
      for (var i = 0; i < object[handlersProp].length; i++) {
        if (object[handlersProp][i] == handler) {
          object[handlersProp].splice(i, 1);
          return;
} } } } }

var x, y;
var loadingImage = new Image();
var okImage = new Image();
loadingImage.src = "images/loading.gif";
okImage.src = "images/ok.gif";

if (window.opera || (navigator.userAgent.indexOf('MSIE') > -1)) { //IE + Opera
  getM_x = function () { return event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;}
  getM_y = function () { return event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;}
} else { // Mozilla
  addHandler(document, 'mousemove', function(e) {
    x = e.pageX;
    y = e.pageY;
  });
  getM_x = function () { return x; }
  getM_y = function () { return y; }
}
function showOk() {
  var imgLoading = document.getElementById("_loading_");
  with (imgLoading) {
    src = okImage.src;
    style.visibility = "visible";
} }

function hideOk() {
  if(document.getElementById("_loading_")) document.getElementById('_loading_').style.visibility = "hidden";
  removeHandler(document, 'mousemove', hideOk);
}
function showLoading() {
  var imgLoading = document.getElementById("_loading_");
  if(!imgLoading) {
    imgLoading = document.createElement("img");
    with(imgLoading) {
      id = "_loading_";
      style.position = "absolute";
      style.visibility = "hidden";
    }
    document.body.appendChild(imgLoading);
  }
  with(imgLoading) {
    src = loadingImage.src;
    style.left = (getM_x() + Offset_X) + "px";
    style.top = (getM_y() + Offset_Y) + "px";
    style.visibility = "visible";
} }
function hideLoading() {
  if(document.getElementById("_loading_")) document.getElementById("_loading_").style.visibility = "hidden";
}

function doBuyNowGet( link ) {
  showLoading();
  var reqAddCart = new JsHttpRequest();
  reqAddCart.onreadystatechange = function() {
    if (reqAddCart.readyState == 4) {
      if (reqAddCart.responseJS) {
        document.location.href = reqAddCart.responseJS.ajax_redirect;
        return;
      }
      else {
        document.getElementById('divShoppingCart').innerHTML = ''+(reqAddCart.responseText||'')+'';
        hideLoading();
        if ( SHOW_ADDED ) {
          showOk();
          timerID = setTimeout( "addHandler(document, \'mousemove\', hideOk)", 500);
        }
      }
    }
  }
  reqAddCart.caching = false;
  reqAddCart.open('GET', link, true);
  reqAddCart.send(null);
}

function doAddProduct(form) {
  showLoading();
  var reqAddCart = new JsHttpRequest();
  reqAddCart.onreadystatechange = function() {
    if (reqAddCart.readyState == 4) {
      if (reqAddCart.responseJS) {
        document.location.href = reqAddCart.responseJS.ajax_redirect;
        return;
      }
      else {
        document.getElementById('divShoppingCart').innerHTML = ''+(reqAddCart.responseText||'')+''
        if ( SHOW_ADDED ) {
          showOk();
          timerID = setTimeout( "addHandler(document, \'mousemove\', hideOk)", 500);
        }
      }
    }
  }
// собираем все элементы формы:
  var senddata = new Object();
  var fe = form.elements;
  for(var i=0 ; i<fe.length ; i++) {
    if ( fe[i].type=="radio" || fe[i].type=="checkbox" ) {
      if ( fe[i].checked ) senddata[fe[i].name] = fe[i].value;
    } else {
      senddata[fe[i].name] = fe[i].value;
    }
  }
  var url = 'ajax_shopping_cart.php?' + ( senddata.products_id ? 'products_id='+senddata.products_id+'&' : "" ) + ( senddata.products_qty ? '&products_qty='+senddata.products_qty+'&' : "" ) + ( senddata.id ? '&id='+senddata.id+'&' : "" ) + 'action=add_product';

  reqAddCart.caching = false;
  reqAddCart.open( 'GET', url, true);
  reqAddCart.send( senddata );
  return false;
}

function doDelProduct(form) {
  showLoading();
  var reqAddCart = new JsHttpRequest();
  reqAddCart.onreadystatechange = function() {
    if (reqAddCart.readyState == 4) {
      if (reqAddCart.responseJS) {
        document.location.href = reqAddCart.responseJS.ajax_redirect;
        return;
      }
      else {
        document.getElementById('divShoppingCart').innerHTML = ''+(reqAddCart.responseText||'')+''
        if ( SHOW_ADDED ) {
          showOk();
          timerID = setTimeout( "addHandler(document, \'mousemove\', hideOk)", 500);
        }
      }
    }
  }

  var senddata = new Object();
  var fe = form.elements;
  for(var i=0 ; i<fe.length ; i++) {

    if ( fe[i].type=="hidden" ) {
      senddata[fe[i].name] = fe[i].value;
    }
  }
  var url = 'ajax_shopping_cart.php?' + ( senddata["products_id[]"] ? 'products_id[]='+senddata["products_id[]"]+'&' : "" ) + ( senddata["old_qty[]"] ? '&old_qty[]='+senddata["old_qty[]"]+'&' : "" ) + ( senddata["cart_quantity[]"] ? '&cart_quantity[]='+senddata["cart_quantity[]"]+'&' : "" ) + ( senddata["cart_delete[]"] ? '&cart_delete[]='+senddata["cart_delete[]"]+'&' : "" ) + 'action=update_product';

  reqAddCart.caching = false;
  reqAddCart.open( 'GET', url, true);
  reqAddCart.send( senddata );
  return false;
}

function ReviewsPage(page,products_id) {
  showLoading();
  var reqAddCart = new JsHttpRequest();
  reqAddCart.onreadystatechange = function() {
    if (reqAddCart.readyState == 4) {
      if (reqAddCart.responseJS) {
        document.location.href = reqAddCart.responseJS.ajax_redirect;
        return;
      }
      else {
        document.getElementById('divReviews').innerHTML = ''+(reqAddCart.responseText||'')+''
		
        if ( SHOW_ADDED ) {
          showOk();
          timerID = setTimeout( "addHandler(document, \'mousemove\', hideOk)", 500);
        }
      }
    }
  }

  var senddata = new Object();
  var url = 'ajax_reviews_page.php?page=' + page + '&products_id=' + products_id + '&type=ajax';

  reqAddCart.caching = false;
  reqAddCart.open( 'GET', url, true);
  reqAddCart.send( senddata );
  return false;
}


function doViewCart() {
  // view cart
  var reqViewCart = new JsHttpRequest();
  reqViewCart.onreadystatechange = function() {
    if (reqViewCart.readyState == 4) {
      if (reqViewCart.responseJS) {
        document.location.href = reqViewCart.responseJS.ajax_redirect;
        return;
      }
      else {
        document.getElementById('divViewCart').innerHTML = ''+(reqViewCart.responseText||'')+''
      }
    }
  }

  var senddata = new Object();
  var url = 'ajax_view_cart.php';
  
  reqViewCart.caching = false;
  reqViewCart.open( 'GET', url, true);
  reqViewCart.send( senddata );
  
  return false;
}

function doViewBoxCart(){
  // shopping cart
  var reqShoppingCart = new JsHttpRequest();
  reqShoppingCart.onreadystatechange = function() {
    if (reqShoppingCart.readyState == 4) {
      if (reqShoppingCart.responseJS) {
        document.location.href = reqShoppingCart.responseJS.ajax_redirect;
        return;
      }
      else {
        document.getElementById('divShoppingCart').innerHTML = ''+(reqShoppingCart.responseText||'')+''
      }
    }
  }

  var senddata = new Object();
  var url = 'ajax_shopping_cart.php';

  reqShoppingCart.caching = false;
  reqShoppingCart.open( 'GET', url, true);
  reqShoppingCart.send( senddata );
  
  return false;
}

