// --- COMMON ---------------------------------------------------------------------------------------------------------------- //

var guidEmptyID = '00000000-0000-0000-0000-000000000000';
var Document_ID = '00000000-0000-0000-0000-000000000000';
var DocumentForm_ID = '00000000-0000-0000-0000-000000000000';

function getClientWidth()
{
  return document.compatMode=='CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
}

function getClientHeight()
{
  return document.compatMode=='CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
}

function OpenWindow(url, x, y, width, height) {
	return open(url, "", "screenX=" + x + ", screenY=" + y + ", toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, width=" + width + ", height=" + height);
}

function OpenWindowSmart(url, w, h) {

	sw = parseInt(screen.availWidth);
	sh = parseInt(screen.availHeight);

	if (w > sw - 50) w = sw - 50;
	if (h > sh - 50) h = sh - 50;

	var BrUserAgent = navigator.userAgent.toLowerCase();
	
	if(BrUserAgent.indexOf('msie') != -1)
	{
		w += 16;
		h += 0;
	}
	else
    {
		w += 0;
		h += 0;
	}

	OpenWindow(url, (sw-w)/2, (sh-h)/2, w, h);

}

function ShowCopyright()
{
    alert("Copyright (c) " + (new Date()).getFullYear() + " by Capital Tour.");
    return false;
}

function Go(url, newwindow) {

    if (typeof(newwindow) == 'boolean' && newwindow == true)
        open(url, "", "screenx=50, screeny=50, left=50, top=50, toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, width=" + (screen.availWidth - 100) + ", height=" + (screen.availHeight - 100));
     else
        location.href = url;
}

function ShowHideItem(ItemName)
{
    var Item = document.getElementById(ItemName);
    Item.style.display = Item.style.display == "block" ? "none" : "block";
}

function ShowItem(ItemName, ItemDisplay)
{
    var Item = document.getElementById(ItemName);
    Item.style.display = ItemDisplay ? "block" : "none";
}

function ObjectPosition(id, left, top)
{
	var objStyle = document.getElementById(id).style;
	objStyle.position = 'absolute';
	objStyle.display = '';
	if (left) objStyle.left = (left > 0 ? left : getClientWidth() + left - parseInt(objStyle.width));
	if (top) objStyle.top = (top > 0 ? top : getClientHeight() + top - parseInt(objStyle.height));
}

function MakeFloat(id, left, top)
{
    ObjectPosition(id, left, top);

	var objStyle = document.getElementById(id).style;
	if (!window.opera)
	{  
		var top = parseInt(objStyle.top);
		window.onscroll = function() { objStyle.top = document.body.scrollTop + top; }
		window.onresize = function() { ObjectPosition(id, left, top); }
	}
	else
		objStyle.position = 'fixed';
}

function ShowHeader(HeaderNameLeft, HeaderNameRight, ClassName)
{
    document.write ("<div style=\"margin-bottom: 15px; margin-top: 10px;\">" +
                            "<div class=\"" + ClassName + "\" title=\"\">" +
	                        "    <div class=\"rb_header\">" +
		                    "        <b class=\"rb_top0\"></b><span><b class=\"rb_top1\"></b><b class=\"rb_top2\"></b></span>" +
		                    "        <table><tr><td>" +
			                "            <div class=\"rb_headerleft\"><h1>" + HeaderNameLeft + "</h1></div>" +
			                "            <div class=\"rb_headerright\">" + HeaderNameRight + "</div>" +
		                    "        </td></tr></table>" +
	                        "    </div>" +
                            "</div>" +
                            "</div>");

}

function CT_TagFringe(TagName, FringeCodeLeft, FringeCodeRight)
{
   var Tags = document.getElementsByTagName(TagName);
   for(var i = 0; i < Tags.length; i++)
        Tags[i].innerHTML = FringeCodeLeft + Tags[i].innerHTML + FringeCodeRight;
}

function CT_TagFringeH2()
{
    CT_TagFringe('h2', '<div>', '</div>');
}

// --- FORMS --------------------------------------------------------------------------------------------------------------- //

function AddDataFormRow(DataName) {

	arrData = eval('arr' + DataName);
	
	arrData[0][1]++;
	for(n = 1; n <= arrData[0][0]; n++) {
		arrData[n][arrData[0][1]] = "";
	}
	ShowDataFormInputs(DataName);
	ChangeDataForm(DataName, 0);
}

function DelDataFormRow(DataRowNumber, DataName) {

	arrData = eval('arr' + DataName);

	for(r = 1; r <= arrData[0][1]; r++) {
		for(n = 1; n <= arrData[0][0]; n++) {
			arrData[n][r] = arrData[n][r + ((r >= DataRowNumber) ? 1 : 0)];
		}
	}

	arrData[0][1]--;
	ShowDataFormInputs(DataName);
	ChangeDataForm(DataName, 0);
}

function DataFormInit(DataName, RowsCount) {
	
	arrData = eval('arr' + DataName);

	if (typeof(RowsCount) == 'undefined') {

        objGuestData = FindElementById('str' + DataName);

		arrInitData = objGuestData.value.split("|");
		arrData[0][1] = arrInitData.length;

		objData = document.getElementById(DataName);
		arrData[0][2] = objData.innerHTML;
		arrData[0][3] = InputMinCount;

		for(r = 1; r <= arrInitData.length; r++) {
			arrInitDataTemp = arrInitData[r-1].split("~");
			for(n = 1; n <= arrInitDataTemp.length; n++) {
				arrData[n][r] = arrInitDataTemp[n-1];
			}
		}

	}
	else {
		for(r = arrData[0][1] + 1; r <= RowsCount; r++) {
			for(n = 1; n <= arrData[0][0]; n++) {
				arrData[n][r] = "";
			}
		}
		arrData[0][1] = RowsCount;
	}

	ChangeDataForm(DataName, 0);
	ShowDataFormInputs(DataName);
}

function ChangeDataForm(DataName, r) {

	arrData = eval('arr' + DataName);

	ElementTypeRegExp = /(\w*)\[(.*)\]/;

	if (r > 0) {
		for(n = 1; n <= arrData[0][0]; n++) {
			arrData[n][r] = document.getElementById(arrData[n][0].replace(ElementTypeRegExp, "$1") + r).value;
		}
	}

	strData = "";

	for(r = 1; r <= arrData[0][1]; r++) {
		strData += (r == 1 ? "" : "|");
		for(n = 1; n <= arrData[0][0]; n++) {
			strData += (n == 1 ? "" : "~") + arrData[n][r];
		}
	}
    
	objGuestData = FindElementById('str' + DataName);
	objGuestData.value = strData;

}

function ShowDataFormInputs(DataName) {

	arrData = eval('arr' + DataName);

	//ElementTypeRegExp = /(.*)\[(\w*)\]/;
	ElementTypeRegExp = /(\w*)\[(.*)\]/;

	var strInputs = "";
	for(r = 1; r <= arrData[0][1]; r++) {

		strInputs += "<tr>";
		strInputs += "<td align='right'>" + r + "</td>";
		for(n = 1; n <= arrData[0][0]; n++) {
			if (ElementTypeRegExp.exec(arrData[n][0]) == null) {
				ElementName = arrData[n][0];
				strInputs += "<td><input type='text' name='" + ElementName + r + "' id='" + ElementName + r + "' value='" + arrData[n][r] + "' class='flatinput' onchange=\"ChangeDataForm('" + DataName + "', " + r + ")\" onblur=\"ChangeDataForm('" + DataName + "', " + r + ")\"></td>";
			}
			else {
				ElementName = arrData[n][0].replace(ElementTypeRegExp, "$1");
				SelectArrayName = arrData[n][0].replace(ElementTypeRegExp, "$2");
				SelectArrayData = SelectArrayName.split(",");
				strInputs += "<td><select name='" + ElementName + r + "' id='" + ElementName + r + "' class='flatinput' onchange=\"ChangeDataForm('" + DataName + "', " + r + ")\" onblur=\"ChangeDataForm('" + DataName + "', " + r + ")\">";
				for(i = 0; i < SelectArrayData.length; i ++) {
					strInputs += "<option value='" + SelectArrayData[i] + "'" + (arrData[n][r] == SelectArrayData[i] ? " selected" : "") + ">" + SelectArrayData[i] + "</option>";
				}
				strInputs += "</select></td>";
			}
		}
		strInputs += "<td style='text-align: center; padding-left: 0px;'>" + ((r <= arrData[0][3] && arrData[0][1] <= arrData[0][3]) ? "<img src='/images/spacer.gif' width='25' height='20' border='0'>" : "<a href=\"javascript:DelDataFormRow(" + r + ", '" + DataName + "')\" style='color: #000000; text-decoration: none;'><img src='/images/delete.gif' width='25' height='20' border='0'></a>") + "</td>";
		strInputs += "</tr>\n";
	}

	TableRegExp = /<\/(table|TABLE)>/;

	objData = document.getElementById(DataName);
	objData.innerHTML = arrData[0][2].replace(TableRegExp, strInputs + '</table>');
}

function FindElementById(DataName) {

	ReturnObj = null;
	SearchString = new RegExp("(.*)" + DataName);

	for (i = 0; i <= document.forms[0].elements.length; i++) {
		if (document.forms[0].elements[i] && (SearchString.test(document.forms[0].elements[i].name) || SearchString.test(document.forms[0].elements[i].id))) {
			ReturnObj = document.forms[0].elements[i];
			
		}
	}
	return ReturnObj;
}

// --- FOLDERS --------------------------------------------------------------------------------------------------------------- //

function ShowHideFolder(ItemName)
{
    ShowHideItem ("F" + ItemName);
    var ItemImage = document.getElementById("FI" + ItemName);
    var strImage = ItemImage.src.toLowerCase();
    ItemImage.src = strImage.lastIndexOf("open") > 0 ? strImage.replace("open", "close") : strImage.replace("close", "open");
}

function ShowFolder(ItemName, ItemDisplay)
{
    ShowItem ("F" + ItemName, ItemDisplay);
    var ItemImage = document.getElementById("FI" + ItemName);
    var strImage = ItemImage.src.toLowerCase();
    ItemImage.src = ItemDisplay ? strImage.replace("close", "open") : strImage.replace("open", "close");
}

// --- ROUNBOX --------------------------------------------------------------------------------------------------------------- //

var RB_HeaderButtonImageMask = "/images/roundbox/headerbutton/$.gif";

function RB_GetObject(ControlName, PartName)
{
	return document.getElementById(ControlName + '-' + PartName);
}

function RB_InitImage(ID, CloseSrc, OpenSrc, OpenStatus)
{
	var objButton = RB_GetObject(ID, 'button');
	if (objButton)
	{
	    objButton.CloseSrc = RB_HeaderButtonImageMask.replace("$", CloseSrc);
	    objButton.OpenSrc = OpenSrc.length > 0 ? RB_HeaderButtonImageMask.replace("$", OpenSrc) : objButton.CloseSrc;
	    objButton.src = (OpenStatus ? objButton.OpenSrc : objButton.CloseSrc);
	}
}

function RB_ButtonChangeStatus(ID, OpenStatus)
{
	var objButton = RB_GetObject(ID, 'button');
	if (objButton)
    	objButton.src = (OpenStatus ? objButton.OpenSrc : objButton.CloseSrc);
}

function RB_Animate(ID, Step)
{
	var objBody = RB_GetObject(ID, 'body');
	var objClip = RB_GetObject(ID, 'clip');

    if (objBody && objClip)
    {
	    objBody.style.display = (Step == -1 ? 'none' : '');

	    if (Step < -1 || Step > 1)
	    {
		    var Height = objBody.FullHeight * (Step > 0 ? 1-Step/128 : -Step/128);
		    objBody.style.height = objClip.style.height = (Height > 1 ? Height : 1) + 'px';
		    objBody.style.paddingTop = objBody.style.paddingBottom = 8 * (Step > 0 ? 1-Step/128 : -Step/128) + 'px';
		    setTimeout("RB_Animate('" + ID + "'," + (Step/2) + ")", 60);
	    }
    	
	    if (Step == 1)
	    {
	        objBody.style.height = '';
	        objClip.style.height = '';
	        objBody.style.paddingBottom = '9px';
	    }

	    if (Step == 128) RB_ButtonChangeStatus(ID, true);
	    if (Step == -1) RB_ButtonChangeStatus(ID, false);
    }

}

function RB_ChangeStatus(ID)
{
	var objBody = RB_GetObject(ID, 'body');
	var objClip = RB_GetObject(ID, 'clip');

    if (objBody && objClip)
    {
	    var OpenFlag = (objBody.style.display == '');
	    if (!OpenFlag)
	    {
		    objBody.style.paddingTop = objBody.style.paddingBottom = '0px';
		    objBody.style.height = objClip.style.height = '1px';
		    objBody.style.display = 'block';
	    }

	    var objBodyBottom = RB_GetObject(ID, 'bodybottom');
	    if (objBodyBottom)
	        objBody.FullHeight = objBodyBottom.offsetTop - objBodyBottom.parentNode.offsetTop + 3;
	    RB_Animate(ID, OpenFlag ? -128 : 128);
    }
}

function ReplaceUnit(val)
{
    return parseFloat(val.replace('px', '').replace('pt', '').replace('em', ''));
}

// --- XML Http Request ------------------------------------------------------------------------------------------------------ //

function XMLProcessReqChange(request, callback, onerror)
{
	return function() {
		if (request.readyState == 4) {

			request.onreadystatechange = function() {};

			if (!request.status || request.status >= 200 && request.status < 300 || request.status == 304)
				callback(request);
			else
				if (typeof onerror == "function")
					onerror(request);
		}

	}

}

function XMLLoad(url, asyncFlag, callback, onerror)
{
    var method = 'POST';
    var parametersposition = -1;
    var parameters = null;
    
    parametersposition = url.indexOf('?');
    if (method == 'POST' && parametersposition > 0)
    {
        parameters = url.substring(parametersposition + 1);
        url = url.substring(0, parametersposition);
    }
    
	if (window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
		if (asyncFlag) request.onreadystatechange = XMLProcessReqChange(request, callback, onerror);
		request.open(method, url, asyncFlag);
		if (method == 'POST') request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
		request.send(parameters);
	}
	else if (window.ActiveXObject)
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request)
		{
			if (asyncFlag) request.onreadystatechange = XMLProcessReqChange(request, callback, onerror);
			request.open(method, url, asyncFlag);
    		if (method == 'POST') request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    		if (parameters)
    		    request.send(parameters);
    		else
    		    request.send();
		}
	}

    if (!asyncFlag)
    {
        var RequestFunction = XMLProcessReqChange(request, callback, onerror);
        RequestFunction();
    }

}

// --- XML HTTP Request ------------------------------------------------------------------------------------------------------ //

function CT_InitScriptContainer()
{
    document.write('<div id="CT_ScriptContainer" style="display: none;"></div>');
}

function CT_ContentScriptLoader(ScriptPath)
{
    var objScriptContainer = document.getElementById('CT_ScriptContainer');
    if (objScriptContainer != null)
    {
        objScriptContainer.innerHTML = 'MSIE <script id="CT_Script" charset="utf-8"></' + 'script>';
        var objScript = document.getElementById("CT_Script");
        if (objScript!= null)
            objScript.src = ScriptPath;
    }
}

// --- DROPDOWNLIST FUNCTIONS ------------------------------------------------------------------------------------------------ //

function InitDropDownList(ddlObject, DefaultValue, DefaultText)
{
    ddlObject.options.length = 0;
    if (DefaultValue != null && DefaultText != null)
        ddlObject.options[0] = new Option(DefaultText, DefaultValue);
}

function FillDropDownList(ddlObject, HTMLCollection, DefaultValue, DefaultText, ValueFieldName, TextFieldName)
{
    InitDropDownList(ddlObject, DefaultValue, DefaultText);
    if (ddlObject != null && HTMLCollection != null)
        for(var i = 0; i < HTMLCollection.length; i++)
        {
            var id = HTMLCollection[i].getElementsByTagName(ValueFieldName)[0].firstChild != null ? HTMLCollection[i].getElementsByTagName(ValueFieldName)[0].firstChild.data : '';
            var name = HTMLCollection[i].getElementsByTagName(TextFieldName)[0].firstChild != null ? HTMLCollection[i].getElementsByTagName(TextFieldName)[0].firstChild.data : '';
            ddlObject.options[ddlObject.length] = new Option(name, id);
        }
}

function SetDropDownList(ddlObject, value, text)
{
    for(var i = 0; i < ddlObject.length; i++)
    {
        if (ddlObject.options[i].value == value)
            ddlObject.selectedIndex = i;
        if (ddlObject.options[i].text == text)
            ddlObject.selectedIndex = i;
    }
}

function GetHTMLCollectionValue(HTMLCollection, ParameterName)
{
    if (HTMLCollection != null && HTMLCollection.getElementsByTagName(ParameterName) != null && HTMLCollection.getElementsByTagName(ParameterName)[0].firstChild != null)
        return HTMLCollection.getElementsByTagName(ParameterName)[0].firstChild.data;
    else
        return '';
}

// --- COMFORTABLE SERVICE - HOTEL SEARCH ------------------------------------------------------------------------------------ //

var ComfortableService_HotelSearch_SearchMask = "";

function ComfortableService_HotelSearch()
{
    if (ComfortableService_HotelSearch_SearchMask != txtControls_ComfortableService_SearchHotel_Name.value || txtControls_ComfortableService_SearchHotel_Name.value.length < 3)
    {
        ComfortableService_HotelSearch_SearchMask = txtControls_ComfortableService_SearchHotel_Name.value;
        if (txtControls_ComfortableService_SearchHotel_Name.value.length < 3)
            ComfortableService_HotelSearch_GetHotelList(null);
        else
            XMLLoad('/static/xml/GuideHotelSearch.aspx?name=' + ComfortableService_HotelSearch_SearchMask, false, ComfortableService_HotelSearch_GetHotelList)
    }
}

function ComfortableService_HotelSearch_GetHotelList(request)
{
	var strHTML = "";
	var HotelListLength = 20;
    var GuideURL = '/catalog/guide/';

    var response = (request != null) ? request.responseXML.getElementsByTagName('guide') : null;
	if (response != null && response.length > 0)
	{

        var SearchMask = GetHTMLCollectionValue(response[0], 'searchmask');
        var RecordsCount = GetHTMLCollectionValue(response[0], 'recordscount');
	    var HotelList = response[0].getElementsByTagName('hotel');
	    if (HotelList.length > 0)
	    {
		    strHTML = '<div class="result" style="' + (HotelList.length > 5 ? 'height: 174px;' : '') + '">' +
		                '<table cellpadding="0" cellspacing="0" width="100%">';
		    for(i=0; i < HotelList.length && i < HotelListLength; i++)
		    {
    		
		        var GuideObject = HotelList[i];
		        var HotelName = GetHTMLCollectionValue(GuideObject, 'name');
		        var HotelCode = GetHTMLCollectionValue(GuideObject, 'code');
		        var HotelStars = GetHTMLCollectionValue(GuideObject, 'stars');
    		    
		        GuideObject = HotelList[i].getElementsByTagName('city')[0];
		        var CityName = GetHTMLCollectionValue(GuideObject, 'name');
		        var CityCode = GetHTMLCollectionValue(GuideObject, 'code');

		        GuideObject = HotelList[i].getElementsByTagName('country')[0];
		        var CountryName = GetHTMLCollectionValue(GuideObject, 'name');
		        var CountryCode = GetHTMLCollectionValue(GuideObject, 'code');

		        GuideObject = HotelList[i].getElementsByTagName('continent')[0];
		        var ContinentName = GetHTMLCollectionValue(GuideObject, 'name');
		        var ContinentCode = GetHTMLCollectionValue(GuideObject, 'code');
    		    
		        var ContinentURL = GuideURL + ContinentCode + '/';
		        var CountryURL = ContinentURL + CountryCode + '/';
		        var CityURL = CountryURL + CityCode + '/';
		        var HotelURL = CityURL + HotelCode + '/';

    		    var SearchMaskHighlight = RegExp('(' + SearchMask + ')', "i");
    		    HotelName = HotelName.replace(SearchMaskHighlight, '<u>$1</u>');
    		    
			    strHTML += '<tr><th><a href="' + HotelURL + '" title="описание отеля">' + HotelName + '</a>&nbsp;' + HotelStars + '</th></tr>' +
							    '<tr><td>' +
									    '<a href="' + CityURL + '" title="описание курорта">' + CityName + '</a>, ' +
									    '<a href="' + CountryURL + '" title="описание страны">' + CountryName + '</a>, ' +
									    '<a href="' + ContinentURL + '" title="описание континента">' + ContinentName + '</a>' +
							    '</td></tr>';
    						
		    }
		    
            if (RecordsCount > HotelListLength)
                strHTML += '<tr><td style="font-size: 10px; color: #ff0000;"><b>Внимание!</b><br>Найдено отелей: ' + RecordsCount + '.<br>Показано отелей: ' + HotelListLength + '.<br>Для поиска нужного отеля Вам, вероятно, придётся уточнить запрос.</td></tr>';
		    
		    strHTML += '</table></div>';
		}
		else
		    strHTML += '<div class="error">Отелей, содержащих в названии фразу <b>' + SearchMask.substring(0, 8) + (SearchMask.length > 8 ? "..." : "") + '</b>, не найдено.</div>';

	}
	else
	    strHTML = '<div class="error">Для поиска отеля введите любые (минимум три) буквы из его названия.</div>';

    divControls_ComfortableService_SearchHotel_Result.innerHTML = strHTML;
	divControls_ComfortableService_SearchHotel_Result.style.display = 'block';

}

// --- COMFORTABLE SERVICE - ORDER STATE ------------------------------------------------------------------------------------- //

var ComfortableService_OrderState_Number = "";

function ComfortableService_OrderState()
{
    if (ComfortableService_OrderState_Number != txtControls_ComfortableService_OrderState_Number.value || txtControls_ComfortableService_OrderState_Number.value.length < 10)
    {
        ComfortableService_OrderState_Number = txtControls_ComfortableService_OrderState_Number.value;
        if (ComfortableService_OrderState_Number.length < 10)
            ComfortableService_OrderState_GetState(null);
        else
            XMLLoad('/static/xml/OrderState.aspx?number=' + ComfortableService_OrderState_Number, false, ComfortableService_OrderState_GetState)
    }
}

function ComfortableService_OrderState_GetState(request)
{
    var Order = (request != null) ? request.responseXML.getElementsByTagName('order') : null;
    var ComfortableService_OrderState_State = (Order != null && Order.length > 0) ? GetHTMLCollectionValue(Order[0], 'state') : '';
    
    if (ComfortableService_OrderState_State.length > 0)
    	ComfortableService_OrderState_State = (ComfortableService_OrderState_State != 'n/a') ? '<b>Статус:</b> ' + ComfortableService_OrderState_State : '<div class="error">Указанный номер<br>заявки не найден.</div>';
    else    	    
        ComfortableService_OrderState_State = '<div class="error">Укажите номер заявки.</div>';

    divControls_ComfortableService_OrderState_Result.innerHTML = ComfortableService_OrderState_State;
}

// --- COMFORTABLE SERVICE - FLIGHT TIME ------------------------------------------------------------------------------------- //

function ComfortableService_FlightTime_ChangeCountry(Country_ID)
{
    if (Country_ID != guidEmptyID)
        XMLLoad('/static/xml/CharterDateList.aspx?country_id=' + Country_ID, false, ComfortableService_FlightTime_GetDates)
    else
    {
        var ddlControls_ComfortableService_FlightTime_Date = document.getElementById('ddlControls_ComfortableService_FlightTime_Date');
        InitDropDownList(ddlControls_ComfortableService_FlightTime_Date, '', ' ')
    }
}

function ComfortableService_FlightTime_GetDates(request)
{
    var ChartersCollection = request.responseXML.getElementsByTagName('charters');
    var CharterCollection = ChartersCollection[0].getElementsByTagName('charter');
    FillDropDownList(ddlControls_ComfortableService_FlightTime_Date, CharterCollection, '', 'выберите дату', 'date', 'date_wd')
}

function ComfortableService_FlightTime_GetFlights()
{
    if (ddlControls_ComfortableService_FlightTime_Date.value.length > 0)
        OpenWindowSmart('/static/CharterList/' +
                        '?country_id=' + ddlControls_ComfortableService_FlightTime_Country.value +
                        '&flightdate=' + ddlControls_ComfortableService_FlightTime_Date.value
                        , 760, 180);
    else
        alert("Выберите страну и дату вылета.");
}

// --- COMFORTABLE SERVICE - INTERNATIONAL PASSPORT CHECK -------------------------------------------------------------------- //

function ComfortableService_PassportCheck_GetIssueDate()
{
    var CurrentDate = new Date();
    CurrentDate.setDate(CurrentDate.getDate() - 1);
    
    var PassportMinDuration = parseInt(ddlControls_ComfortableService_PassportCheck_PassportMinDuration.value);
    var TourDateStr = txtControls_ComfortableService_PassportCheck_TourDate.value;
    var TourDate = new Date(TourDateStr.substring(6, 10), TourDateStr.substring(3, 5) - 1, TourDateStr.substring(0, 2));
    var TourDuration = parseInt(ddlControls_ComfortableService_PassportCheck_TourDuration.value);
    
    if (PassportMinDuration > 0 && TourDate > CurrentDate && TourDuration > 0)
    {
        TourDate.setDate(TourDate.getDate() + PassportMinDuration + TourDuration);
        divControls_ComfortableService_PassportExpireDate.style.display = 'block';
        divControls_ComfortableService_PassportExpireDate.innerHTML =
            'Срок действия паспорта должен истекать не ранее указанной ниже даты:<br>' +
            '<div class="PassportCheck_Expires"><span>' +
            (TourDate.getDate() < 10 ? '0' : '') + TourDate.getDate() + '.' + (TourDate.getMonth() < 9 ? '0' : '') + (TourDate.getMonth() + 1) + '.' + TourDate.getFullYear()
            '</span></div>'
    }
    else
        divControls_ComfortableService_PassportExpireDate.style.display = 'none';

}

// --- DYNAMIC FORMS --------------------------------------------------------------------------------------------------------- //


var DynamicFormActionScriptDefault = '/static/xml/dynamicform/';
var DynamicFormActionScript = '';

function DynamicFormRequestHandler(request)
{
	var response = request.responseXML.documentElement;
    var data = (response != null) ? response.getElementsByTagName('status') : null;
    var status = (data != null && data.length > 0 && data[0].firstChild != null) ? data[0].firstChild.data : "";
    
    if (status.length > 0)
        alert(status);
}

function DynamicFormRequestBuilder(Container)
{
    var HTTPRequest = '';
    	
    if (Container != null)
    {
        for(var i = 0; i < Container.childNodes.length; i++)
        {

            if (Container.childNodes[i].childNodes.length > 0)
                HTTPRequest += DynamicFormRequestBuilder(Container.childNodes[i]);

            var FieldName = Container.childNodes[i].name ? Container.childNodes[i].name.substring(Container.childNodes[i].name.lastIndexOf('$') + 1) : '';
            var FieldValue = '';
            
            if (FieldName.substring(0, 1) != '_')
            {
            
                switch(Container.childNodes[i].type)
                {
                    case 'hidden':
                    case 'text':
                    case 'textarea':
                        FieldValue = Container.childNodes[i].value;
                        break;
                    case 'select-one':
                        FieldValue = Container.childNodes[i].options[Container.childNodes[i].selectedIndex].value;
                        break;
                    case 'checkbox':
                        FieldValue = Container.childNodes[i].checked ? "да" : "нет";
                        break;
                    case 'radio':
                        if (Container.childNodes[i].checked)
                            FieldValue = Container.childNodes[i].value;
                        break;
                    case 'submit':
                        Container.childNodes[i].disabled = true;
                        break;
                }
            
	            if (FieldValue.length > 0)
	                    HTTPRequest += '&' + escape(FieldName) + '=' + escape(FieldValue);
	            
            }

        }
        
        return (HTTPRequest);
    }

}

function DynamicFormSubmit(e)
{

    if (WebForm_OnSubmit())
    {
        var Container = document.getElementById(DocumentForm_ID);
        var Form_ID = DocumentForm_ID.substring(DocumentForm_ID.length - 32);

        var ActionScript = DynamicFormActionScript.length > 0 ? DynamicFormActionScript : DynamicFormActionScriptDefault;
        var HTTPRequest = DynamicFormRequestBuilder(Container);
        
        if (HTTPRequest.length > 0)
            XMLLoad(ActionScript + (ActionScript.indexOf('?') >= 0 ? '&' : '?') + 'Form_ID=' + Form_ID + HTTPRequest, false, DynamicFormRequestHandler);
    }
    return false;
}

function DynamicFormInit()
{
    var aspnetForm = document.getElementById('aspnetForm');
    aspnetForm.onsubmit = DynamicFormSubmit;
}


// --------------------------------------------------------------------------------------------------------------------------- //

var CT_OnloadFunctionsList = [];
var CT_OnloadFunctionExecuted = false;

function CT_OnloadFunction()
{
    if (!CT_OnloadFunctionExecuted)
    {
        CT_OnloadFunctionExecuted = true;
        for(var i = 0; i < CT_OnloadFunctionsList.length; i++)
            CT_OnloadFunctionsList[i]();
    }
}

function CT_AddOnloadFunction(NewFunction)
{
    if (CT_OnloadFunctionsList.length == 0)
    {
        if (typeof(window.onload) == 'function')
            CT_OnloadFunctionsList.push(window.onload);
        window.onload = CT_OnloadFunction;
    }
    CT_OnloadFunctionsList.push(NewFunction);
}

// --- BANNERS --------------------------------------------------------------------------------------------------------------- //

var CT_BannersPath = '/img/';
var CT_BannersActionScript = '/static/img/go.aspx';

var CT_BannersAnimate = [];
var CT_BannersAnimateFl = false;
var CT_BannersToLoad = 0;

var CT_BannerAnimateFramesCount = 2;
var CT_BannerAnimateFramesPeriod = 10;
var CT_BannerAnimateTimeShiftStep = 0;
var CT_BannerAnimateLoopCount = 50;

function CT_BannerRender()
{

    var TimeShift = 0;

    while (CT_BannerList.length > 0)
    {
        var ID = null;
        var Position = 0;
        var FirstBanner = false;
        var RandomPosition = Math.round(Math.random() * (CT_BannerList.length - 1));
        
        for(RandomID in CT_BannerList)
            if (ID == null && (Position++ == RandomPosition || CT_BannerList[Position]['BannerPlaceCode'] == 'top'))
                ID = RandomID;

        var BannerPlace = (ID != null ? document.getElementById('banner_' + CT_BannerList[ID]['BannerPlaceCode']) : null);
        var BannerFullName = CT_BannersPath + CT_BannerList[ID]['FileName'] + '.' + CT_BannerList[ID]['Type'];

        if (BannerPlace == null) break;

        if (BannerPlace != null)
        {
            var innerHTML = '';
            
            switch(CT_BannerList[ID]['Type'])
            {

                case 'txt':

                    innerHTML = '<div style="position: relative; top: 0; left: 0; width: ' + CT_BannerList[ID]['Width'] + 'px; height: ' + CT_BannerList[ID]['Height'] + 'px;">' +
                                CT_BannerList[ID]['Text'] +
                                '</div>';
                    break;
                
                case 'gif':
                case 'jpg':
                case 'jpeg':

                    innerHTML = '<div style="position: relative; top: 0; left: 0; width: ' + CT_BannerList[ID]['Width'] + 'px; height: ' + CT_BannerList[ID]['Height'] + 'px;">' +
                                '<img src="' + BannerFullName + '" style="width: ' + CT_BannerList[ID]['Width'] + 'px; height: ' + CT_BannerList[ID]['Height'] + 'px; border: 0px;" /><br />' +
                                '</div>';
                    break;

                case 'swf':

                    innerHTML = '<noindex><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="' + CT_BannerList[ID]['Width'] + '" height="' + CT_BannerList[ID]['Height'] + '" style="z-index: 0;" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0">' +
                                '<param name="movie" value="' + BannerFullName + '"/>' +
                                '<param name="quality" value="high" />' +
                                '<param name="scale" value="exactfit" />' +
                                '<param name="wmode" value="transparent" />' +
                                '<param name="allowScriptAccess" value="sameDomain" />' +
                                '<embed src="' + BannerFullName + '"' +
                                '   width="' + CT_BannerList[ID]['Width'] + '"' +
                                '   height="' + CT_BannerList[ID]['Height'] + '"' +
                                '   quality="high"' +
                                '   scale="exactfit"' + 
                                '   wmode="transparent"' +
                                '   allowScriptAccess="sameDomain"' +
                                '   name="CapitalTourBanner"' +
                                '   type="application/x-shockwave-flash"' +
                                '   pluginspage="http://www.macromedia.com/go/getflashplayer"' +
                                '/>' +
                                '</object></noindex><br />';
                    break;
                    
            }
            
            innerHTML += '<noindex><div class="bannercoverdiv" style="width: ' + CT_BannerList[ID]['Width'] + 'px; height: ' + CT_BannerList[ID]['Height'] + 'px; margin-top: -' + CT_BannerList[ID]['Height'] + 'px;">' +
                            '<input type="button"' +
                            ' style="width: ' + CT_BannerList[ID]['Width'] + 'px; height: ' + CT_BannerList[ID]['Height'] + 'px; cursor: ' + (CT_BannerList[ID]['Link'].length == 0 ? 'default' : 'pointer') + '; border: 0px;"' +
                            (CT_BannerList[ID]['Link'].length > 0 ? 'onclick="Go(CT_BannersActionScript + \'?id=' + CT_BannerList[ID]['ID'] + '\', ' + CT_BannerList[ID]['NewWindow'] + ')"' : '') +
                            '/ >' +
                            '</div></noindex>';
                            
            BannerPlace.style.display = '';

            if (BannerPlace.innerHTML.indexOf(BannerFullName) < 0)
            {
                var AnimationShift = (BannerPlace.innerHTML.indexOf('.swf') < 0 && innerHTML.indexOf('.swf') < 0) ?
                    -TimeShift * CT_BannerAnimateTimeShiftStep : CT_BannerAnimateFramesCount;
                
                CT_BannersAnimate.push([BannerPlace, BannerPlace.innerHTML, innerHTML, BannerFullName, CT_BannerList[ID]['Title'], CT_BannerList[ID]['ClassName'], AnimationShift])
                
            }
                
            TimeShift++;

        }

        CT_BannerList.splice(ID, 1);

    }

    if (TimeShift > 0 && !CT_BannersAnimateFl)
        CT_BannerShow();

    var strBannerPlaceScript = document.getElementById('BannerScript').src;
    var strBannerPlaceCode = strBannerPlaceScript.split('bannerplacecode=');
    var arrBannerPlaceCode = strBannerPlaceCode[1].split(';');
    
    for(var i = 0; i < arrBannerPlaceCode.length; i++)
    {
        var objBannerPlace = document.getElementById('banner_' + arrBannerPlaceCode[i]);
        if (objBannerPlace.innerHTML.indexOf('spacer.gif') > 0)
            objBannerPlace.style.display = 'none';
    }
    
}

function CT_BannerShow()
{

    for(var ID = CT_BannersAnimate.length - 1; ID >= 0; ID--)
    {
        CT_BannersAnimate[ID][6]++;
        
        var PrerenderBlock = document.createElement("div");

        if (CT_BannersAnimate[ID][6] < CT_BannerAnimateFramesCount)
        {
            var Shift = CT_BannersAnimate[ID][0].offsetHeight * (2 - CT_BannersAnimate[ID][6] / CT_BannerAnimateFramesCount);
    	    PrerenderBlock.innerHTML = CT_BannersAnimate[ID][1] + '<div style="margin-top: -' + Shift + 'px;">' + CT_BannersAnimate[ID][2] + '</div>';
            CT_BannersAnimate[ID][0].innerHTML = PrerenderBlock.innerHTML;
            CT_BannersAnimate[ID][0].innerHTML = CT_BannersAnimate[ID][2];
        }
        else
        {
    	    PrerenderBlock.innerHTML = CT_BannersAnimate[ID][2];
            CT_BannersAnimate[ID][0].innerHTML = PrerenderBlock.innerHTML;
            CT_BannersAnimate[ID][0].title = CT_BannersAnimate[ID][4];
            CT_BannersAnimate[ID][0].className = CT_BannersAnimate[ID][5];
            CT_BannersAnimate.splice(ID, 1);
        }

        PrerenderBlock = null;
    }

    if (CT_BannersAnimate.length > 0)
    {
        setTimeout('CT_BannerShow()', CT_BannerAnimateFramesPeriod);
        CT_BannersAnimateFl = true;
    }
    else
    {
        CT_BannersAnimateFl = false;
        CT_BannerAnimateFramesCount = 8;
        CT_BannerAnimateFramesPeriod = 10;
        CT_BannerAnimateTimeShiftStep = 4;
    }


}

function CT_BannerUpdate()
{
    if (CT_BannerAnimateLoopCount-- > 0 && document.getElementById('BannerScript'))
        CT_ContentScriptLoader(document.getElementById('BannerScript').src);
}

// --- ONLOAD ---------------------------------------------------------------------------------------------------------------- //

CT_InitScriptContainer();
// CT_AddOnloadFunction(CT_TagFringeH2);
setTimeout('CT_OnloadFunction()', 3000);

// --------------------------------------------------------------------------------------------------------------------------- //

function setHome(url) 
{ 
    url.style.behavior='url(#default#homepage)'; 
    url.setHomePage(document.location); 
    return false;
} 

