﻿//////////////////////////////////////////
// ОБЪЕКТЫ            ////////////////////
//////////////////////////////////////////

// Объект VisaVariant
function VisaVariant()
{
    // Свойства для ручного расчета
    this.DateIn = null; 
    this.DateOut = null; 
    this.TripDuration = null; 
    this.IsTouristicTrip = false; 
    this.IsBusinessTrip = false;
    this.IsOneEntry = false; 
    this.IsTwoEntry = false;
    this.IsMultiEntry = false;
    this.DateVisaAt = null;
    
    // Свойства для быстрого расчета
    this.Duration = null; 
    this.EntryType = null; 
    
    //Общие свойства
    this.Citizenship = null;
    this.InvitationProcedure = null; 
    this.InvitationDelivery = null; 
    this.InvitationDeliveryTimeLimit = null; 
    this.ConsulateProcedure = null; 
    this.ConsulateProcedureComission = null; 
    this.Insurance = null; 
    this.PassportRegistration = null; 
    this.PassportDelivery = null; 
    this.PassportRegistrationTimeLimit = null; 
    this.PassportDeliveryTimeLimit = null; 
    this.RegistrationOption = null;
    this.GetPassportFromClientTimeLimit = null;
    this.IsHotel = null;
    
    this.Holidays = null;
    this.SpecialDays = null;
}

function VisaVariant(oDateIn, oDateOut, oTripDuration, oTouristicTrip, oBusinessTrip, oOneEntry, oTwoEntry, oMultiEntry, oDateVisaAt, oDuration, oEntryType, oCitizenship, oInvitationProcedure, oInvitationDelivery, oInvitationDeliveryTimeLimit, 
    oConsulateProcedure, oConsulateProcedureComission, oInsurance, oPassportRegistration, oPassportDelivery, oPassportRegistrationTimeLimit, 
    oPassportDeliveryTimeLimit, oRegistrationOption, oGetPassportFromClientTimeLimit, oIsHotel, oHolidays, oSpecialDays)
{
    // Свойства для ручного расчета
    this.DateIn = oDateIn;  
    this.DateOut = oDateOut;  
    this.TripDuration = oTripDuration; 
    this.TouristicTrip = oTouristicTrip; 
    this.BusinessTrip = oBusinessTrip;
    this.OneEntry = oOneEntry; 
    this.TwoEntry = oTwoEntry; 
    this.MultiEntry = oMultiEntry; 
    this.DateVisaAt = oDateVisaAt;    
    
    // Свойства для быстрого расчета
    this.Duration = oDuration; 
    this.EntryType = oEntryType; 
    
    //Общие свойства
    this.Citizenship = oCitizenship;
    this.InvitationProcedure = oInvitationProcedure; 
    this.InvitationDelivery = oInvitationDelivery; 
    this.InvitationDeliveryTimeLimit = oInvitationDeliveryTimeLimit; 
    this.ConsulateProcedure = oConsulateProcedure; 
    this.ConsulateProcedureComission = oConsulateProcedureComission; 
    this.Insurance = oInsurance; 
    this.PassportRegistration = oPassportRegistration; 
    this.PassportDelivery = oPassportDelivery; 
    this.PassportRegistrationTimeLimit = oPassportRegistrationTimeLimit; 
    this.PassportDeliveryTimeLimit = oPassportDeliveryTimeLimit; 
    this.RegistrationOption = oRegistrationOption;
    this.GetPassportFromClientTimeLimit = oGetPassportFromClientTimeLimit;
    this.IsHotel = oIsHotel;
    
    this.Holidays = oHolidays;
    this.SpecialDays = oSpecialDays;
}

// Объект Duration ("Продолжительность")
function Duration(field, duration, duration_type, text)
{
    this.Field = field;
    this.DurationValue = duration; 
    this.DurationType = duration_type;
    this.Text = text;
}

// Объект EntryType ("Тип въезда")
function EntryType(field, duration, duration_type, entry_type, text)
{
    this.Field = field;
    this.DurationValue = duration; 
    this.DurationType = duration_type;
    this.EntryType = entry_type;
    this.Text = text;
}

// Объект InvitationProcedure ("Процедура оформления приглашения")
function InvitationProcedure(field, duration, duration_type, entry_type, procedure_time, procedure_time_type, procedure_type, price, text)
{
    this.Field = field;
    this.DurationValue = duration; 
    this.DurationType = duration_type;
    this.EntryType = entry_type;
    this.ProcedureTimeValue = procedure_time; 
    this.ProcedureTimeType = procedure_time_type;
    this.ProcedureType = procedure_type;
    this.Price = price;
    this.Text = text;
}

// Объект InvitationDelivery ("Доставка приглашения из России в Италию")
function InvitationDelivery(field, procedure_time, procedure_time_type, price, text)
{
    this.Field = field;
    this.ProcedureTimeValue = procedure_time; 
    this.ProcedureTimeType = procedure_time_type;
    this.Price = price;
    this.Text = text;
}

// Объект PassportDeliveryTimeLimit ("Лимит доставки приглашения из России в Италию")
function InvitationDeliveryTimeLimit(field, price, text)
{
    this.Field = field;
    this.Price = price;
    this.Text = text;
}

// Объект ConsulateProcedure ("Процедура оформления визы")
function ConsulateProcedure(field, procedure_time, procedure_time_type, procedure_type, price, text)
{
    this.Field = field;
    this.ProcedureTimeValue = procedure_time; 
    this.ProcedureTimeType = procedure_time_type;
    this.ProcedureType = procedure_type;
    this.Price = price;
    this.Text = text;
}

// Объект ConsulateProcedureComission ("Комиссия для процедуры оформления визы")
function ConsulateProcedureComission(field, procedure_time, procedure_time_type, procedure_type, price, text)
{
    this.Field = field;
    this.ProcedureTimeValue = procedure_time; 
    this.ProcedureTimeType = procedure_time_type;
    this.ProcedureType = procedure_type;
    this.Price = price;
    this.Text = text;
}

// Объект Insurance ("Страхование")
function Insurance(field, duration, duration_type, procedure_type, price, text)
{
    this.Field = field;
    this.DurationValue = duration; 
    this.DurationType = duration_type;
    this.ProcedureType = procedure_type;
    this.Price = price;
    this.Text = text;
}

// Объект ClientPlacement ("Местоположение клиента")
function ClientPlacement(field, procedure_time, procedure_time_type, price, text)
{
    this.Field = field;
    this.ProcedureTimeValue = procedure_time; 
    this.ProcedureTimeType = procedure_time_type;
    this.Price = price;
    this.Text = text;
}

// Объект PassportRegistrationTimeLimit ("Лимит оплаты доставки паспорта от клиента")
function PassportRegistrationTimeLimit(field, price, text)
{
    this.Field = field;
    this.Price = price;
    this.Text = text;
}

// Объект PassportDeliveryTimeLimit ("Лимит оплаты доставки паспорта обратно клиенту")
function PassportDeliveryTimeLimit(field, price, text)
{
    this.Field = field;
    this.Price = price;
    this.Text = text;
}

// Объект RegistrationOption ("Опции оплаты регистрации")
function RegistrationOption(field, price, text)
{
    this.Field = field;
    this.Price = price;
    this.Text = text;
}

//////////////////////////////////////////
// МЕТОДЫ             ////////////////////
//////////////////////////////////////////

function InitDurationsList(ddlDurationsId)
{
    var ddlDurations = document.getElementById(ddlDurationsId);

    for (i=0;i<arDurations.length;i++)
    {
        var d = arDurations[i];
        var item = new Option(d.Text, i);
        ddlDurations.options[ddlDurations.options.length] = item;
    }
}

function InitEntryTypesList(ddlEntryTypesId, ddlDurationsId)
{
    var ddlEntryTypes = document.getElementById(ddlEntryTypesId);
    var ddlDurations = document.getElementById(ddlDurationsId);

    if (ddlDurations.value != "-1")
    {             
        for (i=0;i<arEntryTypes.length;i++)
        {
            var et = arEntryTypes[i];        
            var d = arDurations[ddlDurations.value];        
            
            if ((et.DurationValue == d.DurationValue) &&
                (et.DurationType == d.DurationType) &&
                (et.Field == d.Field))
            {
                var item = new Option(et.Text, i);
                ddlEntryTypes.options[ddlEntryTypes.options.length] = item;
            }
        }
    }
}

function InitInvitationProceduresList(ddlInvitationProceduresId, ddlEntryTypesId, ddlDurationsId)
{
    var ddlInvitationProcedures = document.getElementById(ddlInvitationProceduresId);
    var ddlEntryTypes = document.getElementById(ddlEntryTypesId);
        
    if (ddlEntryTypes.value != "-1")
    {
        for (i=0;i<arInvitationProcedures.length;i++)
        {
            var ip = arInvitationProcedures[i];        
            var et = arEntryTypes[ddlEntryTypes.value];        
            
            if ((ip.DurationValue == et.DurationValue) &&
                (ip.DurationType == et.DurationType) &&
                (ip.Field == et.Field) &&
                (ip.EntryType == et.EntryType))
            {
                var item = new Option(ip.Text, i);
                ddlInvitationProcedures.options[ddlInvitationProcedures.options.length] = item;
            }
        }
    }
}

function InitInvitationDeliveryList(ddlInvitationDeliveryId)
{
    var ddlInvitationDelivery = document.getElementById(ddlInvitationDeliveryId);

    for (i=0;i<arInvitationDelivery.length;i++)
    {
        var d = arInvitationDelivery[i];
        var item = new Option(d.Text, i);
        ddlInvitationDelivery.options[ddlInvitationDelivery.options.length] = item;
    }
}

function InitConsulateProceduresList(ddlConsulateProceduresId)
{
    var ddlConsulateProcedures = document.getElementById(ddlConsulateProceduresId);

    for (i=0;i<arConsulateProcedureComissions.length;i++)
    {
        var d = arConsulateProcedureComissions[i];
        var item = new Option(d.Text, i);
        ddlConsulateProcedures.options[ddlConsulateProcedures.options.length] = item;
    }
}

function InitCitizenshipsList(ddlCitizenshipsId)
{
    var ddlCitizenships = document.getElementById(ddlCitizenshipsId);
    var arTexts = new Array();
    var strDefaultValue = "Италия";
    
    for (i=0;i<arConsulateProcedures.length;i++)
    {        
        var d = arConsulateProcedures[i];

        if (!IsContains(arTexts, d.Text))
        {
            var item = new Option(d.Text, d.Text);   
            ddlCitizenships.options[ddlCitizenships.options.length] = item;
            if (d.Text == 'Италия')
            {
                item.selected = true; 
                strDefaultValue = "Италия"       
            }  
            if (d.Text == 'Italia')
            {
                item.selected = true;
                strDefaultValue = 'Italia';
            }
            arTexts.push(d.Text);
        }
    }
    SetDefaultValue(ddlCitizenshipsId, strDefaultValue);
}

function InitInsurancesList(ddlInsurancesId)
{
    var ddlInsurances = document.getElementById(ddlInsurancesId);

    for (i=0;i<arInsurances.length;i++)
    {
        var d = arInsurances[i];
        var item = new Option(d.Text, i);
        ddlInsurances.options[ddlInsurances.options.length] = item;
    }
}

function InitPassportRegistrationList(ddlPassportRegistrationId)
{
    var ddlPassportRegistration = document.getElementById(ddlPassportRegistrationId);

    for (i=0;i<arPassportRegistration.length;i++)
    {
        var d = arPassportRegistration[i];
        var item = new Option(d.Text, i);
        ddlPassportRegistration.options[ddlPassportRegistration.options.length] = item;
    }
}

function InitPassportDeliveryList(ddlPassportDeliveryId)
{
    var ddlPassportDelivery = document.getElementById(ddlPassportDeliveryId);

    for (i=0;i<arPassportDelivery.length;i++)
    {
        var d = arPassportDelivery[i];
        var item = new Option(d.Text, i);
        ddlPassportDelivery.options[ddlPassportDelivery.options.length] = item;
    }
}

function InitRegistrationOptionsList(ddlRegistrationOptionsId)
{
    var ddlRegistrationOptions = document.getElementById(ddlRegistrationOptionsId);

    for (i=0;i<arRegistrationOptions.length;i++)
    {
        var d = arRegistrationOptions[i];
        var item = new Option(d.Text, i);
        ddlRegistrationOptions.options[ddlRegistrationOptions.options.length] = item;
    }
}

// Процедуры заполнения выпадающих списков для ручного расчета
function InitTourTypesCheckboxes(cbxTouristicId, cbxBusinessId, num)
{
    var item;
    var cbxTouristic = document.getElementById(cbxTouristicId);
    var cbxBusiness = document.getElementById(cbxBusinessId);
    
    cbxBusiness.disabled = !(num > 0);
    cbxTouristic.disabled = !((num > 0) && (num < 31));
    cbxBusiness.checked = (num > 30);
}

function InitEntryTypesCheckboxes(cbxOneEntryId, cbxTwoEntryId, cbxMultiEntryId, num)
{
    var cbxOneEntry = document.getElementById(cbxOneEntryId);
    var cbxTwoEntry = document.getElementById(cbxTwoEntryId);
    var cbxMultiEntry = document.getElementById(cbxMultiEntryId);
    
    cbxOneEntry.disabled = !((num > 0) && (num < 91));
    cbxTwoEntry.disabled = !((num > 0) && (num < 91));
    cbxMultiEntry.disabled = !(num > 30);
    cbxMultiEntry.checked = (num > 90);
}


function SetDefaultValue(ddlId, val)
{
    var ddl = document.getElementById(ddlId);

    for (i = ddl.length-1; i >= 1; i--)
    {
        if (ddl.options[i].value == val) 
        {
            ddl.options[i].selected = true;
            return;
        }
    }
}

function removeAllOptions(ddl)
{
    for (i = ddl.length-1; i >= 0; i--)
        ddl.options[i] = null;
}

function removeAllOptionsWithoutFirst(ddlId)
{
    var ddl = document.getElementById(ddlId);
    
    for (i = ddl.length-1; i >= 1; i--)
        ddl.options[i] = null;
}


