/*** AJAX BASKET ***/

function waiting_div ( div_id, class_name ) {
	if (!class_name) class_name = 'waiting_div';
	return "<div id='"+div_id+"' class='"+class_name+"'><img src='/img/waiting.gif' alt='processing.../></div>";
}
function activate_value() {
}

function calculate_checkout( ) {
    // ^^PZ IT REALLY SHOU:D BE AUTOMATED!
    var checkout=0,n;
	if ($('order_10_10')) checkout = $F('order_10_10') * price_10_10;
    checkout = $F('order_1_1') * price_1_1 + checkout;
    checkout = $F('order_2_1') * price_2_1 + $F('order_2_5') * price_2_5 +  $F('order_2_10') * price_2_10 + $F('order_2_20') * price_2_20 + checkout;
    checkout = $F('order_3_1') * price_3_1 + $F('order_3_5') * price_3_5 + $F('order_3_10') * price_3_10 + $F('order_3_20') * price_3_20 + checkout;
    checkout = $F('order_4_1') * price_4_1 + checkout;
    checkout = $F('order_5_1') * price_5_1 + checkout;
	if ($('order_6_1')) checkout = $F('order_6_1') * price_6_1 + checkout;
	/*if (enable_promotion_50) {
		//find the most expensive ordered class;
		most_expensive = 0;
		if ($F('order_1_1') > 0) most_expensive = price_1_1;
		if ($F('order_4_1') > 0) most_expensive = price_4_1;
		if ($F('order_2_1') > 0 || $F('order_2_10') > 0 || $F('order_2_20') > 0) most_expensive = price_2_1;
		if ($F('order_3_1') > 0 || $F('order_3_10') > 0 || $F('order_3_20') > 0) most_expensive = price_3_1;
		most_expensive = most_expensive/2;
		checkout = checkout - most_expensive;
		$('promotion_amount').value = most_expensive.toCurrency();
	}*/
    n = checkout ;
    $('input_amount').value = n.toCurrency();
    //$('hidden_value').value = n.toCurrency();
}



function show_calendar(location,day,change) {
    var url = '/ajax/calendar/day='+day+'&location='+location;
    if (change) url = url + '&change=yes';
    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                if (js.show == 'change') {$('monthly_calendar').replace(js.calendar);}
                else {i = new Insertion.Top($('content'),js.calendar);}
            }
        }
    )

}
function create_class( week_start, day_of_the_week, location, create ) {
    var url = '/ajax/create_class/week_day='+week_start+'&day_of_the_week='+day_of_the_week+'&location='+location;
    if (create) {
        var time_from = week_start;
        url = '/ajax/create_class/time_from='+time_from+'&location='+location+'&create=yes';
    }
    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
//                if (js.indexOf('edit_class')) {
                    // do edit new class
//                    i = new Insertion.Top($('content'),js.edit_window);
//                } else {
                    i = new Insertion.Before($(js.day),js.hour_list);
                    $('week_admin').hide();
//                }
            }
        }
    )

}

function admin_change_person_status (class_id,booking_id) {
    var p_status = $F('booking_'+booking_id+'_status');
    if (p_status == 'cancelled') { admin_cancel_booking(class_id,booking_id); }
    if (p_status == 'attended' || p_status == 'notattended') {
        var url = '/ajax/edit_class_render/class_id='+class_id+'&booking_id='+booking_id;
        if (p_status == 'notattended') { url = url + '&attendance=n';}
        else {url = url + '&attendance=y';}

		$('schedule_edit_class_container').replace( waiting_div('schedule_edit_class_container','ec_content_foot') );

        var a = new Ajax.Request (url,
           {
                method: 'get',
                onSuccess: function(transport) {
                    var js = transport.responseText.evalJSON();
                    $('schedule_edit_class').replace(js.edit_window);
                    $(js.class_id).replace(js.class_item);
                    admin_hide_hidden();
                }
            }
        )

    }
}
function admin_change_person_payment (class_id,booking_id) {
    var payment = $F('booking_'+booking_id+'_payment');
    var url = '/ajax/edit_class_render/class_id='+class_id+'&booking_id='+booking_id+'&paid='+payment;

	$('schedule_edit_class_container').replace( waiting_div('schedule_edit_class_container','ec_content_foot') );

    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    );
}
function change_parking (class_id, booking_id) {
    var url = '/ajax/edit_class_render/class_id='+class_id+'&booking_id='+booking_id+'&change_parking=yes';
	$('schedule_edit_class_container').replace( waiting_div('schedule_edit_class_container','ec_content_foot') );

     var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    );
}
function admin_waiting_for_user(class_id,user_id) {
    var user_id = $F('book_for_user');
    var url = '/ajax/edit_class_render/class_id='+class_id+'&user_id='+user_id+'&waiting_for_user=yes';
    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    )
}
function admin_load_people_select(change_el,show_el,hide_el,link,class_id) {
  var url = '/ajax/get_people&change_el='+change_el+'&hide_el='+hide_el+'&show_el='+show_el;
  if (class_id) url += '&class_id=' + class_id;
  link.innerHTML = 'Please wait';
  var a = new Ajax.Request (url,
      {
           method: 'get',
           onSuccess: function(transport) {
               var js = transport.responseText.evalJSON();
               if (js.people_list) {
                 $(js.change_el).replace(js.people_list);
                 $(js.hide_el).hide();
                 $(js.show_el).show();
               }
           }
       }
   );
}
function admin_book_for_user(class_id) {
    var user_id = $F('book_for_user');
    var url = '/ajax/edit_class_render/class_id='+class_id+'&user_id='+user_id+'&book_for_user=yes';
	$('schedule_edit_class_container').replace( waiting_div('schedule_edit_class_container','ec_content_foot') );

    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    )
}
function admin_book_for_user_waiting(class_id,user_id) {
    var url = '/ajax/edit_class_render/class_id='+class_id+'&user_id='+user_id+'&book_for_user_waiting=yes';
    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    )
}
function admin_cancel_booking(class_id,booking_id,remove) {
    var url = '/ajax/edit_class_render/class_id='+class_id+'&booking_id='+booking_id+'&cancel_booking=yes';
    if (remove) url = url + '&remove=yes';
	$('schedule_edit_class_container').replace( waiting_div('schedule_edit_class_container','ec_content_foot') );

    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    )
}
function admin_cancel_waiting(class_id,waiting_id) {
    var url = '/ajax/edit_class_render/class_id='+class_id+'&waiting_id='+waiting_id+'&cancel_waiting=yes';
    var a = new Ajax.Request (url,
       {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    )
}function add_user_with_edit(class_id) {
    var url='/ajax/edit_class_render/class_id='+class_id+'&add_user=yes&'+ Form.serialize('add_user');
	$('schedule_edit_class_container').replace( waiting_div('schedule_edit_class_container','ec_content_foot') );

    var a = new Ajax.Request(
        url,
        {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                $('schedule_edit_class').replace(js.edit_window);
                $(js.class_id).replace(js.class_item);
                admin_hide_hidden();
            }
        }
    ); return false;
}
function admin_hide_hidden() { $$('#schedule_edit_class .hidden').each( function ( el ) { el.hide(); } );}
function edit_class(class_id,save) {
    if (!save) {
        var url = '/ajax/edit_class_render/class_id='+class_id;
        var a = new Ajax.Request(
            url,
            {
                method: 'get',
                onSuccess: function(transport) {
                    var js = transport.responseText.evalJSON();
                    i = new Insertion.Top($('content'),js.edit_window);
                    admin_hide_hidden();
                    // if ($('add_user')) new Validation('add_user');
                }
            }
        )
    } else {
        // get data from form
        var url = '/ajax/edit_class_render/class_id='+class_id+'&save=yes&'+Form.serialize('edit_class_form');
        // save it via Ajax
        var a = new Ajax.Request (url,
           {
                method: 'get',
                onSuccess: function(transport) {
                    var js = transport.responseText.evalJSON();
//                    $('schedule_edit_class').replace(js.edit_window);
                    $('schedule_edit_class').remove();
                    $(js.class_id).replace(js.class_item);
                }
            }
        )
   }
}
function myaccount_switch_parking (booking_id, max, show,live_only) {
    url = '/ajax/switch_parking_in_person/booking_id=' + booking_id + '&max='+max+'&show=' + show;
    if (live_only) url = url + '&live_only=1';
    var a = new Ajax.Request(
        url,
         {
            method: 'get',
            asynchronous: true,
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                js.show.each(
                    function (value,index) {
                        if (value == 'class_list') $('future_class_list').replace(js.class_list);
                        if (value == 'credits'){
                            if ($('credits')) $('credits').replace(js.credit_table);
                        }
                    }
                 );
             }
        }
    )
}
// cancel_class( class_id, charge (1/0), max, return_display )
function cancel_booking (booking_id, show_confirmation, max, show,live_only) {
    url = '/ajax/cancel_booking/booking_id=' + booking_id + '&max='+max+'&confirmation=' + show_confirmation + '&show=' + show;
    if (live_only) url = url + '&live_only=1';
    var a = new Ajax.Request(
        url,
        {
            method: 'get',
            asynchronous: true,
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                js.show.each(
                    function (value,index) {
                        if (value == 'class_list') $('future_class_list').replace(js.class_list);
                        if (value == 'confirmation'){ var i = new Insertion.Top($('content'),js.confirmation_window); }
                        if (value == 'credits'){
                            if ($('credits')) $('credits').replace(js.credit_table);
                        }
                        if (value == 'class_schedule') {
                            $('c_'+js.class_id).replace(js.class_item);
                        }
                    }
                 );
             }
        }
    )
}
function classover(class_id) {
  //new Effect.Appear($('over_'+class_id));
  if ($('c_'+class_id)) $('c_'+class_id).addClassName('classover');
  if ($('over_'+class_id)) $('over_'+class_id).show();
}
function classout(class_id) {
  //new Effect.Fade($('over_'+class_id));
  if ($('c_'+class_id)) $('c_'+class_id).removeClassName('classover');
  if ($('over_'+class_id)) $('over_'+class_id).hide();
}

function add_to_basket( class_id, show) { add_remove_basket('add_to_basket',class_id,show,0); }
function add_to_waiting( class_id, show) { add_remove_basket('add_to_waiting',class_id,show,0); }
function remove_from_basket( class_id, show, all ) { add_remove_basket('remove_from_basket',class_id,show,all);}
function remove_from_waiting( class_id, show, all ) { add_remove_basket('remove_from_waiting',class_id,show,all);}
function switch_parking( class_id, show ) { add_remove_basket( 'switch_parking_in_basket', class_id, show); }
function add_remove_basket( func,  class_id, show, all) {
    var url = '/ajax/'+func+'/';
    var params = 'class_id=' + class_id + '&show=' + show;
    if ((func=='remove_from_basket' || func=='remove_from_waiting') && all > 0) params = params + '&remove_all=yes';

	if (show == 0) {
		$('c_'+class_id).replace(waiting_div('c_'+class_id) );
		$('c_'+class_id).hide();
		new Effect.Appear($('c_'+class_id));
	}
    var a = new Ajax.Request(
        url + params,
        {
            method: 'get',
            onSuccess: function(transport) {
                var js = transport.responseText.evalJSON();
                if (js.show == 'schedule_page') schedule_page(js);
                if (js.show == 'confirm_basket_page') confirm_basket_page(js);
                if (js.show == 'account_page') account_page(js);
            }
        }
    );
}
function account_page( js ) {
    $('waiting_list').replace(js.waiting_list);
}
function schedule_page( js ) {
    $(js.class_id).replace(js.class_item);
	$(js.class_id).hide();
	new Effect.Appear($(js.class_id));
    if (js.show_basket) $('show_basket').replace(js.show_basket);
}
function confirm_basket_page( js ) {
    $('class_list').replace(js.class_list);
}
function reportError(request) {
    alert('error');
}
Number.prototype.toCurrency=function(noFractions,decimalSeparator,thousandsSeparator){
   var n,startAt,intLen;
   if (decimalSeparator==null) decimalSeparator=".";
   if (thousandsSeparator==null) thousandsSeparator=",";
   n = this.round(noFractions?0:2,true,decimalSeparator);
   intLen=n.length-(noFractions?0:3);
   if ((startAt=intLen%3)==0) startAt=3;
   for (var i=0,len=Math.ceil(intLen/3)-1;i<len;i++)n=n.insertAt(i*4+startAt,thousandsSeparator);
   return n;
}
Number.prototype.toInteger=function(thousandsSeparator){
   var n,startAt,intLen;
   if (thousandsSeparator==null) thousandsSeparator=",";
   n = this.round(0,true);
   intLen=n.length;
   if ((startAt=intLen%3)==0) startAt=3;
   for (var i=0,len=Math.ceil(intLen/3)-1;i<len;i++)n=n.insertAt(i*4+startAt,thousandsSeparator);
   return n;
}
Number.prototype.round=function(decimals,returnAsString,decimalSeparator){
   //Supports 'negative' decimals, e.g. myNumber.round(-3) rounds to the nearest thousand
   var n,factor,breakPoint,whole,frac;
   if (!decimals) decimals=0;
   factor=Math.pow(10,decimals);
   n=(this.valueOf()+"");         //To get the internal value of an Object, use the valueOf() method
   if (!returnAsString) return Math.round(n*factor)/factor;
   if (!decimalSeparator) decimalSeparator=".";
   if (n==0) return "0."+((factor+"").substr(1));
   breakPoint=(n=Math.round(n*factor)+"").length-decimals;
   whole = n.substr(0,breakPoint);
   if (decimals>0){
      frac = n.substr(breakPoint);
      if (frac.length<decimals) frac=(Math.pow(10,decimals-frac.length)+"").substr(1)+frac;
      return whole+decimalSeparator+frac;
   }else return whole+((Math.pow(10,-decimals)+"").substr(1));
}

String.prototype.insertAt=function(loc,strChunk){
   return (this.valueOf().substr(0,loc))+strChunk+(this.valueOf().substr(loc))
}
