$(document).ready(function() {
    rooms_rus = ["Двухместный", "Четырехместный", "Шестиместный", "Восьмиместный"];
    rooms_eng = ["Double", "4-bedded dorm", "6-bedded dorm", "8-bedded dorm"];
    amount_of_places = ["2", "4", "6", "8"];
    amount_of_rooms = ["1", "3", "4", "1"];

    // Вывод категорий номеров
    if ($("#order").val() == "yes") {
        dis = "disabled=\"disabled\"";
    } else {
        dis = "";
    }
    $("#rooms").append("<select id=\"rooms_table\" name=\"rtype\" " + dis + " >");
    $("#rooms_table").append("<option value=\"false\">- Выберите номер -</option>");
    for (i = 0; i < rooms_rus.length; i++) {
        num = i + 1;
        c = "";
        if (i == 0) {
            c = "checked=\"checked\"";
        }
        $("#rooms_table").append("<option value=\"" + num + "\">" + rooms_rus[i] + "</option>");
    }
    $("#rooms").append("</select>");

    // Вывод количества человек в номере
    for (i = 0; i < 4; i++) {
        num = i + 1;
        d = "style=\"display: none;\"";
        $("#showpeople").append("<div class=\"showpeople" + num + "\" " + d + ">");
        $(".showpeople" + num).append("<div id=\"showpeopletable" + num + "\" class=\"radiogroup\">");
        if (num == 1) {
            $("#showpeopletable1").append("<span valign=\"top\" class=\"RGRadio\"><input name=\"numberofpeople\" value=\"1_2\" type=\"radio\" checked=\"checked\" /></span><span valign=\"top\" class=\"RGLabel\"><label class=\"label_ru2\">2</label></span>");
            $(".showpeople" + num).append("</div>");
            $("#showpeople").append("</div>");
            continue;
        }
        for (o = 0; o < amount_of_places[i]; o++) {
            num2 = o + 1;
            $("#showpeopletable" + num).append("<span valign=\"top\" class=\"RGRadio\"><input name=\"numberofpeople\" value=\"" + num + "_" + num2 + "\" type=\"radio\" /></span><span valign=\"top\" class=\"RGLabel\"><label class=\"label_ru2\">" + num2 + "</label></span>");
        }
        $(".showpeople" + num).append("</div>");
        $("#showpeople").append("</div>");
    }

    // При выборе России
/*    $("#country").change(function() {
        sel = $("#country").val();
        if (sel == 179) { // В английской версии сайта 188, в русской версии 179
            $("#payment_other").hide();
            $("#payment_rus").show();
            $("#card").hide();
            $(":input[name=cardnumber]").val("");
            $(":input[name=validity]").val("");
            $(":input[name=cvv2]").val("");
            $(":input[name=cardtype]").val("");
            $(":input[name=cardholderfio]").val("");
        } else {
            $("#payment_rus").hide();
            $("#payment_other").show();
            $("#card").hide();
            $(":input[name=cardnumber]").val("");
            $(":input[name=validity]").val("");
            $(":input[name=cvv2]").val("");
            $(":input[name=cardtype]").val("");
            $(":input[name=cardholderfio]").val("");
        }
    });
*/
    // При выборе даты прибытия и отбытия
    $("#enddate, #begindate").keyup(function() {
        first = $("#begindate").val();
        second = $("#enddate").val();
        d1 = first.split(".");
        d2 = second.split(".");
        m1 = d1[1] - 1;
        m2 = d2[1] - 1;

        Date1 = new Date(d1[2], m1, d1[0]);
        Date2 = new Date(d2[2], m2, d2[0]);

        non = Math.round((Date2.getTime() - Date1.getTime())/(1000*60*60*24));
				
		/*function GoodYear (year) {
		 return (year<1900 ? year+1900 : year);
		}
		
		function LeapYear (year) {
		 if ((year%4==0) && (year%100!=0) || (year%400==0)) return true;
		 else return false;
		}
		
		function KolDays (d1,m1,d2,m2,y) {
		 var i,s;
		 var mondays= new Array (31,28,31,30,31,30,31,31,30,31,30,31);
		 if (LeapYear (y)==true) mondays[1]=29;
		 if (m1==m2) s=d2-d1;
		 else {
		  s=mondays[m1-1]-d1+1;
		  for (i=m1+1;i<m2;i++) s+=mondays[i-1];
		  s+=(d2-1);
		 }
		 return s;
		}
		
		function DaysBetween (day1,mon1,year1,day2,mon2,year2) {
		 var i,f;
		 if (year1==year2) f=KolDays (day1,mon1,day2,mon2,year1);
		 else {
		  f=KolDays (day1,mon1,31,12,year1)+1;
		  for (i=year1+1; i<year2; i++) {
		   f+=365;
		   if (LeapYear (i)) f++;
		  }
		  f+=(KolDays(1,1,day2,mon2,year2));
		 }
		 return f;
		}
		
		function WeekDay (day,month,year) {
		 if (month<3) month+=10; else month-=2;
		 if (month>10) year--;
		 var cent=Math.floor(year/100);
		 year %= 100;
		 var dday= Math.floor(2.6*month-0.2)+day+year+Math.floor(year/4)+Math.floor(cent/4)-2*cent;
		 dday= Math.floor((dday+777)%7);
		 return ((dday==0) ? 7 : dday); 
		}
		
/*		function PutInForm (d) {
		 if ( ((d%100) > 9) && ((d%100) < 21) ) s="дней";
		 else if ((d % 10) ==1) s="день";
		 else if (((d % 10) >1) && ((d % 10)<5)) s="дн\я";
		 else s="дней";
		 document.Q.kol.value= d + ' ' + s;
		}
		
		function InitForm() {
		  var wkd= new Array ("Пн","Вт","Ср","Чт","Пт","Сб","Вс");
		  var today = new Date();
		  d=today.getDate();
		  m=today.getMonth();
		  y=GoodYear(today.getYear());
		  document.Q.day2.value=d;
		  document.Q.month2.selectedIndex=m;
		  document.Q.year2.value=y;
		  m++;
		  t=DaysBetween (1,1,2000,d,m,y);
		  PutInForm (t);
		  w=WeekDay(d,m,y);
		  document.Q.wk2.value=wkd[w-1]; 
		  First=true;
		}
		
		function ClearForm () {
		 if (window.confirm("Очистить форму?")) {
		  document.Q.wk1.value="Сб";
		  document.Q.day1.value="1";
		  document.Q.month1.selectedIndex=0;
		  document.Q.year1.value="2000";
		  InitForm();
		 }
		 return true;
		}
		
		function CorrectDate (d,m,y) {
		 var mondays= new Array (31,28,31,30,31,30,31,31,30,31,30,31);
		 if (y<1) {
		  return false;
		 }
		 if (LeapYear (y)==true) mondays[1]=29;
		 if ((d<1) || (d>mondays[m-1])) {
		  return false;
		 }
		 return true;
		}
		non = DaysBetween (parseInt(d1[0], 10), parseInt(m1, 10), d1[2], parseInt(d2[0], 10), parseInt(m2, 10), d2[2]);*/
        if (non > 0) {
            $("#noofnights").html(non);
            $(":input[name=amount_of_nights]").val(non);
        } else {
            $("#noofnights").html("<small>дата отъезда не может быть раньше даты прибытия</small>");
        }
        
    });

    // При выборе оплаты по кредитной карте
    $(":radio[name=payment]").change(function() {
        check = $(":radio[name=payment]").filter(":checked").val();
        if (check == 1) {
            $("#card").show();
            $("#firstday").show();
        } else {
            $("#card").hide();
            if (check == 2) {
                $("#firstday").show();
            } else {
                $("#firstday").hide();
            }
        }
    });

    // При выборе категорий номера
    $(":select[name=rtype]").change(function() {
        for (i = 1; i <= 4; i++) {
            $(".showpeople" + i).hide();
        }
        check = $(":select[name=rtype]").val();
        $(".showpeople" + check).show();
        if (check == "showpeople1") {
            $("#additionalbedid").show();
            $(":button[name=addmore]").attr("disabled", "disabled");
        } else {
            $("#additionalbedid").hide();
            $(":radio[name=numberofpeople]").attr("checked", "");
            $(":button[name=addmore]").attr("disabled", "disabled");
        }
        $(":radio[name=additionalbed]").attr("checked", "");
    });

    // При выборе количества человек в номере
    $(":radio[name=numberofpeople]").change(function() {
        $(":radio[name=additionalbed]").attr("checked", "");
        $("#additionalbedid").hide();
        check = $(":radio[name=numberofpeople]").filter(":checked").val();
        if (check == "1_2" || check == "2_4" || check == "3_6" || check == "4_8") {
            $(":button[name=addmore]").attr("disabled", "disabled");
            $("#additionalbedid").show();
            $(":radio[name=additionalbed]").change(function() {
                if ($(":select[name=rtype]").val()) {
                    $(":button[name=addmore]").attr("disabled", "");
                }
            });
        } else {
            $(":radio[name=additionalbed]").attr("checked", "");
            if ($(":select[name=rtype]").val()) {
                $(":button[name=addmore]").attr("disabled", "");
            }
        }
    });

    // При нажатие на кнопку добавить номер
    
    count = 0;
    if ($(":hidden[name=total]").val()) {
        total = $(":hidden[name=total]").val();
    } else {
        total = 0;
    }
    $("#total").html(total);
//    if ($(":hidden[name=firstdaypay]").val()) {
//        firstdaypay = $(":hidden[name=firstdaypay]").val();
//    } else {
//        firstdaypay = 0;
//    }
//    $("#firstdaypay").html(firstdaypay);
    $(":button[name=addmore]").click(function() {
        amo_of_ni = $(":input[name=amount_of_nights]").val();
        if (amo_of_ni) {
            count++;
            roomtype2 = $(":select[name=rtype]").val();
            roomtype = $(":select[name=rtype]").val();
            numofpep = $(":radio[name=numberofpeople]").filter(":checked").val();
//            alert(numofpep);
            numofpep = numofpep[2];
//            alert(numofpep);
            morebed = $(":radio[name=additionalbed]").filter(":checked").val();
            if (morebed != 0 && morebed != undefined) {
                mb = "да";
            } else {
                mb = "нет";
            }
            amount_of_rooms[roomtype - 1] = amount_of_rooms[roomtype - 1] - 1;
            if (amount_of_rooms[roomtype - 1] == 0) {
                $(":button[name=addmore]").attr("disabled", "disabled");
                $(":select[name=rtype] option[value=" + roomtype + "]").attr("disabled", "disabled");
                $(":select[name=rtype]").val("no");
                $("#additionalbedid").hide();
                for (i = 1; i <= 4; i++) {
                    $(".showpeople" + i).hide();
                }
            }
            
            check_payment = $(":radio[name=payment]").filter(":checked").val();
            function TimeCost(SDate, EDate, f2, f4, f6, f8, bed)
            {
                this.SDate = SDate;
                this.EDate = EDate;
                this.Cost = [f2, f4, f6, f8, bed];
                this.GetAllDiffDays = function (inSDate, inEDate) {
                    if (this.Between(inSDate) && this.Between(inEDate)) {
                        return this.GetDiffDays(inEDate, inSDate);
                    }
                    else if (this.Between(inSDate)) {
                        return this.GetDiffDays(this.EDate, inSDate);
                    }
                    else if (this.Between(inEDate)) {
                        return this.GetDiffDays(inEDate, this.SDate);
                    }
                    else {
                        return 0;
                    }
                }
                this.GetCost = function (inSDate, inEDate) {
                    if (mb == "да") {
                        pb = this.Cost[4];
                    } else {
                        pb = 0;
                    }
                    if (roomtype == 1) {
                        result = (this.GetAllDiffDays(inSDate, inEDate) * this.Cost[0]) + (this.GetAllDiffDays(inSDate, inEDate) * pb);
                        return result;
                    } else if (roomtype == 2) {
                        result = (this.GetAllDiffDays(inSDate, inEDate) * this.Cost[1] * numofpep) + (this.GetAllDiffDays(inSDate, inEDate) * pb);
                        return result;
                    } else if (roomtype == 3) {
                        result = (this.GetAllDiffDays(inSDate, inEDate) * this.Cost[2] * numofpep) + (this.GetAllDiffDays(inSDate, inEDate) * pb);
                        return result;
                    } else if (roomtype == 4) {
                        result = (this.GetAllDiffDays(inSDate, inEDate) * this.Cost[3] * numofpep) + (this.GetAllDiffDays(inSDate, inEDate) * pb);
                        return result;
                    }
                }
                this.GetFirstDayCost = function (inSDate, inEDate) {
                    if (roomtype == 1) {
                        if (this.GetAllDiffDays(inSDate, inEDate)) {
                            if (mb == "да") {
                                pb = this.Cost[4];
                            } else {
                                pb = 0;
                            }
                            result = this.Cost[0] + pb;
                            return result;
                        }
                    } else if (roomtype == 2) {
                        if (this.GetAllDiffDays(inSDate, inEDate)) {
                            if (mb == "да") {
                                pb = this.Cost[4];
                            } else {
                                pb = 0;
                            }
                            result = (this.Cost[1] * numofpep) + pb;
                            return result;
                        }
                    } else if (roomtype == 3) {
                        if (this.GetAllDiffDays(inSDate, inEDate)) {
                            if (mb == "да") {
                                pb = this.Cost[4];
                            } else {
                                pb = 0;
                            }
                            result = (this.Cost[2] * numofpep) + pb;
                            return result;
                        }
                    } else if (roomtype == 4) {
                        if (this.GetAllDiffDays(inSDate, inEDate)) {
                            if (mb == "да") {
                                pb = this.Cost[4];
                            } else {
                                pb = 0;
                            }
                            result = (this.Cost[3] * numofpep) + pb;
                            return result;
                        }
                    }
                }
                this.Between = function (TryDate) {
                    return (TryDate >= this.SDate) && (TryDate <= this.EDate);
                }
                this.GetDiffDays = function(Date1, Date2)
                {
                    return Math.round((Date1.getTime() - Date2.getTime()) / (1000 * 60 * 60 * 24));
                }
            }

            var Diapazons = new Array();
            Diapazons.push(
                new TimeCost(new Date(2011, 0, 1), new Date(2011, 0, 11), 2500, 640, 600, 500, 450) // 01-01-2011 - 10-01-2011
            );
            Diapazons.push(
                new TimeCost(new Date(2011, 0, 10), new Date(2011, 4, 1), 1700, 550, 500, 400, 350) // 11-01-2011 - 30-04-2011
            );
            Diapazons.push(
                new TimeCost(new Date(2011, 4, 1), new Date(2011, 5, 11), 2500, 740, 670, 600, 450) // 01-05-2011 - 10-06-2011
            );
            Diapazons.push(
                new TimeCost(new Date(2011, 5, 11), new Date(2011, 5, 14), 3300, 900, 850, 800, 550) // 11-06-2011 - 13-06-2011
            );
            Diapazons.push(
                new TimeCost(new Date(2011, 5, 14), new Date(2011, 9, 1), 2500, 740, 670, 600, 450) // 14-06-2011 - 30-09-2011
            );
            Diapazons.push(
                new TimeCost(new Date(2011, 9, 1), new Date(2011, 11, 24), 1800, 600, 550, 450, 400) // 01-10-2011 - 23-12-2011
            );
            Diapazons.push(
                new TimeCost(new Date(2011, 11, 24), new Date(2012, 0, 1), 2500, 740, 670, 600, 450) // 24-12-2011 - 31-12-2011
            );

            var dt1_control = $("#begindate").val();
            var dt2_control = $("#enddate").val();

            var dt1_ms = dt1_control.split(".");
            var dt2_ms = dt2_control.split(".");

            mon1 = dt1_ms[1] - 1;
            mon2 = dt2_ms[1] - 1;

            var StartDate = new Date(dt1_ms[2], mon1, dt1_ms[0]);
            var EndDate = new Date(dt2_ms[2], mon2, dt2_ms[0]);

            var Cost = 0;
            var FDCost = 0;
            for (var i = 0; i < Diapazons.length; i++) {
                var Diapazon = Diapazons[i];
                Cost += Diapazon.GetCost(StartDate, EndDate);
                if (Diapazon.GetFirstDayCost(StartDate, EndDate) != undefined) {
                    FDCost = Diapazon.GetFirstDayCost(StartDate, EndDate);
                }
            }

            total += Cost;
//            firstdaypay += FDCost;
            
            save = "<tr id=\"room_n_" + count + "\"><td>" + count + "</td><td>" + rooms_rus[roomtype - 1] + "<input type=\"hidden\" name=\"room_type[]\" value=\"" + rooms_rus[roomtype - 1] + "\" /><input type=\"hidden\" name=\"room_index[]\" value=\"" + roomtype + "\" /></td><td>" + numofpep + "<input type=\"hidden\" name=\"amount_of_people[]\" value=\"" + numofpep + "\" /></td><td>" + mb + "<input type=\"hidden\" name=\"additional_bed[]\" value=\"" + mb + "\" /></td><td><input type=\"button\" value=\"удалить\" onclick=\"delete_number('room_n_" + count + "', " + roomtype + ", " + Cost + ", " + FDCost + ");\" /><input type=\"hidden\" name=\"total_price[]\" value=\"" + Cost + "\" /><input type=\"hidden\" name=\"first_day_price[]\" value=\"" + FDCost + "\" /></td></tr>";

            $("#not_select_number").remove();
            $("#morenumber table").append(save);
            
            delete_number = function(delete_id, amount_p, cst, fdcst) {
                $("#" + delete_id).remove();
                amount_of_rooms[amount_p - 1] = amount_of_rooms[amount_p - 1] + 1;
                $(":select[name=rtype] option[value=" + amount_p + "]").attr("disabled", "");
                old_pr = $(":input[name=total]").val();
                new_pr = old_pr - cst;
                total = new_pr;
                $("#total").html(new_pr);
                $(":input[name=total]").val(new_pr);
//                old_fpr = $(":input[name=firstdaypay]").val();
//                new_fpr = old_fpr - fdcst;
//                firstdaypay = new_fpr;
//                $("#firstdaypay").html(new_fpr);
//                $(":input[name=firstdaypay]").val(new_fpr);
            }

            $("#total").html(total);
            $(":input[name=total]").val(total);
//            $("#firstdaypay").html(firstdaypay);
//            $(":input[name=firstdaypay]").val(firstdaypay);

            $(":input[name=deletenumder]").click(function() {
                alert($(":input[name=deletenumder]").val());
            });
        } else {
            alert("Вы не ввели даты прибытия и отъезда.");
        }
    });

    $(".calendar").simpleDatepicker();
    $(".calendar").each(function() {
        $this = this;
        $(this).after($("<img alt=\"\" src=\"/pics/cal.jpg\"/>").simpleDatepicker({target : $this}));
    });
});
