dom = (document.getElementById)? true : false;
nn4 = (document.layers)? true : false;
ie = (document.all)? true : false;
ie4 = (!dom && ie)? true : false;

var doc;

function preloadImages()
{
    doc = document;
    if( doc.images )
        {
        if( !doc.preloadImgs )
            doc.preloadImgs = new Array();
        var i, j = doc.preloadImgs.length;
        var a = preloadImages.arguments;
        for(i=0; i<a.length; i++)
            {
            doc.preloadImgs[j] = new Image;
            doc.preloadImgs[j++].src = a[i];
            }
        }
}

function findObject( id, doc )
{
    var i;

    if( doc == null )
        doc = document;

    if( dom )
        return doc.getElementById( id );
    else
        {
        if( ie4 )
        return doc.all[ id ];
        }

    for( i=0; i<doc.forms.length; i++ )
        for( j=0; j<doc.forms[i].elements.length; j++ )
        if( id == doc.forms[i].elements[j].name )
            return doc.forms[i].elements[j];

    for( i=0; i<doc.images.length; i++ )
        if( id == doc.images[i].name )
        return doc.images[i];

    if( doc.layers == null )
        return null;

    for( i=0; i<doc.layers.length; i++ )
        {
        if( id == doc.layers[i].name )
            return doc.layers[i];
        var x = findObject( id, doc.layers[i].document );
        if( x != null )
            return x;
        } 
    return null;
}

function showElem(elemId)
{
    if (dom)
        document.getElementById(elemId).style.visibility = "visible";
    else
        if (ie4)
        document.all[elemId].style.visibility = "visible";
        else
        if (nn4)
            document.layers[elemId].visibility = "show";
}

function hideElem(elemId)
{
    if (dom)
         document.getElementById(elemId).style.visibility = "hidden";
    else
        if (ie4)
        document.all[elemId].style.visibility = "hidden";
        else
        if (nn4) document.layers[elemId].visibility = "hide";
}

function turnElementOff( elemId )
{
    var elem = getElement( "sm_"+elemId );
    if( elem == null )
        return true;
    if( dom || ie4 )
        elem.style.display = "none";
    else
        {
        if( nn4 )
            elem.display = "none";
        }
}

function toggleElement( elemId, toggleActive )
{
    var elem = getElement( "sm_"+elemId );
    if( elem == null )
        return true;
    if( toggleElement.arguments.length == 1 )
        toggleActive = true;

    if( activeElem && toggleActive && (activeElem != elemId) )
        {
        turnElementOff( activeElem );
        low( "m", activeElem, true );
        }

    if( dom || ie4 )
        (elem.style.display == "none")?elem.style.display="":elem.style.display="none";
    else
        {
        if( nn4 )
            (elem.display == "none")?elem.display="":elem.display="none";
        }
    activeElem = elemId;
    return false;
}

function getElement( elemId )
{
    if (dom)
        return document.getElementById(elemId);
    else
        if (ie4)
            return document.all[elemId];
        else
            if (nn4)
                return document.layers[elemId];
    return null;
}


// This function writes HTML code into a layer
function Writelayer(layer,code,doc)
{
    if( doc == null )
        doc = "document";   
    if (nn4)
        {
        layer.document.open();
        layer.document.write( code );
        layer.document.close();
        }
    else
        if (ie4)
            {
        layer.innerHTML = code;
        }
        else
            if (dom)
                {
            layer.innerHTML = code;
            }
}

function anchorPosX(anchorPtr)
{
    if (document.layers)
        return anchorPtr.x;
    else if (document.getElementById || document.all)
        {
        var pos = anchorPtr.offsetLeft;
        while (anchorPtr.offsetParent != null)
            {
            anchorPtr = anchorPtr.offsetParent;
            pos += anchorPtr.offsetLeft;
            }
        return pos;
        }
}

function anchorPosY(anchorPtr)
{
    if (document.layers)
        return anchorPtr.y;
    else if (document.getElementById || document.all)
        {
        var pos = anchorPtr.offsetTop;
        while (anchorPtr.offsetParent != null)
            {
            anchorPtr = anchorPtr.offsetParent;
            pos += anchorPtr.offsetTop;
            }
        return pos;
        }
}

function show_params( obj )
{
    s = '';
    k = 0;
    for( i in obj )
        {
        s = s + i +'=' + eval( 'obj.' + i )+'\n';
        k++;
        if( k>20 )
            {
            alert( s );
            s = '';
            k = 0;
            } 
        }
    if( k )
        alert( s );
}

function checkFields()
{
    var dt = calendars[0];
    var now = new Date();
    if( dt.day <= now.getDate() && dt.month <= now.getMonth() && dt.year <= now.getFullYear() )
	{
	alert( 'Забронировать номер можно только за сутки до приезда. Укажите, пожалуйста, соответствующую дату.' );
	return false;	
	}
    f = findObject( 'coming' );
    if( f )
	f.value = dt.getDateStr();
    var f = findObject( 'name' );
    if( !f || f.value == '' )
	{
	alert( 'Укажите, пожалуйста, Ваше имя и фамилию.' );
	f.focus();
	return false;
	}
    f = findObject( 'i_rooms' );
    if( !f || (f.value != '1' && f.value != '2' && f.value != '3' && f.value != '4' ))
	{
	alert( 'Укажите, пожалуйста, сколько номеров Вы хотели бы заказать.' );
	return false;
	}
    var f1 = findObject( 'i_rk_half' );
    var f2 = findObject( 'i_rk_lux' );
    var f3 = findObject( 'i_rk_business' );
    var f4 = findObject( 'i_rk_apartments' );
    if( (!f1 || f1.value == '' ) && (!f2 || f2.value == '' ) &&
	(!f3 || f3.value == '' ) && (!f4 || f4.value == '' ) )
	{
	alert( 'Выберите, пожалуйста, тип номера, который Вы хотели бы заказать.' );
	return false;
	}
    f = findObject( 'nights' );
    //alert((new Number(f.value)).valueOf());
    if( !f || f.value == '' || ((new Number(f.value)).valueOf()==Number.NaN) )
	{
	alert( 'Укажите, пожалуйста, на сколько ночей Вы планируете у нас остаться. В виде числа, пожалуйста.' );
	f.focus();
	return false;
	}
    f = findObject( 'phone' );
    if( !f || f.value == '' )
	{
	alert( 'Укажите, пожалуйста, номер телефона, по которому с Вами можно связаться для уточнения информации по бронированию. Если Вы нерезидент Украины, укажите, пожалуйста, номер телефона в международном формате.' );
	f.focus();
	return false;
	}
    f = findObject('i_payment');
    if( !f || (f.value != 'наличными' && f.value != 'безналичными' && f.value != 'кредитной картой' ) )
	{
	alert( 'Укажите, пожалуйста, как Вы планируете расчитаться.' );
	return false;
	}
    f = findObject( 'race' );
    if( f && f.value !='' )
	{
        dt = calendars[1];
	f = findObject( 'tr_coming' );
	if( f )
	    f.value = dt.getDateStr();
	}
    var fobj = findObject( 'submitBooking' );
    if( fobj )
	fobj.submit();
    return false;
}
