/*проверяем поля на допустимость значений(которые берем из xml)*/
function ValidEnter(field){
        var Month = parseFloat(document.getElementById('month').value);                /*переменная для хранения количества месяцев*/
        var YearToMonth = parseFloat(document.getElementById('year').value)*12;        /*переменная для хранения количества месяцев в количестве лет*/
        var SummaMonth = Month + YearToMonth;                                                                                                           /*переменная для хранения общего количества месяцев*/
        var fieldValue = parseFloat( field.value )                                                                                                                      /*переменная для хранения введенного значения переданного аргументом в функцию*/



        if ( field.value != fieldValue || isNaN( fieldValue ) ) {
                document.getElementById('label_'+field.name).style.color = "#ff0000";
                document.getElementById('buttonCrTable').disabled='disabled';
        } else {
                if(!isNaN(document.getElementById('month').value) && !isNaN(document.getElementById('year').value)){
                        document.getElementById('label_'+field.name).style.color = "#000000";
                }
                if(SummaMonth>0 && parseFloat(document.getElementById('CostId').value)>0 && !isNaN(document.getElementById('CostId').value)  && !isNaN(document.getElementById('advance').value) && !isNaN(document.getElementById('month').value) && !isNaN(document.getElementById('year').value)){
                        document.getElementById('buttonCrTable').disabled=false;
                }
        }
}

/*при смене режима расчета скрыть отрисованные результаты*/
function changeAnuitet(){

if(document.getElementById('table').innerHTML != ''){
        document.getElementById('table').innerHTML='';
        document.getElementById('buttonCrTable').disabled=false;
}

}
/* при смене учета старховки */
function changeStrah()
{
        if(document.getElementById('strahovk').checked)
        {
                  if(document.getElementById('type_ipotec').checked) document.getElementById('ipStrahId').style.display="";
                else document.getElementById('ipStrahId').style.display="none";
                  if(document.getElementById('type_avto').checked) document.getElementById('avStrahId').style.display="";
                else document.getElementById('avStrahId').style.display="none";
                  if(document.getElementById('type_potreb').checked) document.getElementById('ptStrahId').style.display="";
                else document.getElementById('ptStrahId').style.display="none";
        }
        else
        {
            document.getElementById('ipStrahId').style.display="none";
                document.getElementById('avStrahId').style.display="none";
                document.getElementById('ptStrahId').style.display="none";
        }
         changeAnuitet();
}

/*расчитаем аванс*/
function ChangeAdvance(){
        var Month = parseFloat(document.getElementById('month').value);                          /*количество месяцев*/
        var YearToMonth = parseFloat(document.getElementById('year').value)*12;                 /*количество месяцев в кол-ве лет*/
        var SummaMonth = Month + YearToMonth;                                                  /*общее количество месяцев*/

        document.getElementById('credit').innerHTML = AfterDot2(parseFloat(document.getElementById('CostId').value)-document.getElementById('advance').value);
        document.getElementById('table').innerHTML ='';

        if(SummaMonth>0 && parseFloat(document.getElementById('CostId').value)<=0)
                document.getElementById('buttonCrTable').disabled='disabled';

        document.getElementById('srokImG').innerHTML = document.getElementById('year').value;
        document.getElementById('srokImM').innerHTML = document.getElementById('month').value;
        document.getElementById('srokImGa').innerHTML = document.getElementById('year').value;
        document.getElementById('srokImMa').innerHTML = document.getElementById('month').value;
        document.getElementById('sroklifeG').innerHTML = document.getElementById('year').value;
        document.getElementById('sroklifeM').innerHTML = document.getElementById('month').value;
        document.getElementById('sroklifeGa').innerHTML = document.getElementById('year').value;
        document.getElementById('sroklifeMa').innerHTML = document.getElementById('month').value;
        document.getElementById('sroklifeGp').innerHTML = document.getElementById('year').value;
        document.getElementById('sroklifeMp').innerHTML = document.getElementById('month').value;
}

/*Проверка на допустимость введенного размера аванса*/
function ChangeAdvance2(){
        if(!isNaN(document.getElementById('advance').value)){
                if(parseFloat(document.getElementById('advance').value) < parseFloat(document.getElementById('advance_hidden').value) || parseFloat(document.getElementById('advance').value) >parseFloat(document.getElementById('CostId').value)){
                        if(parseFloat(document.getElementById('advance').value) < parseFloat(document.getElementById('advance_hidden').value)){
                                alert('Сумма аванса не может быть меньше '+document.getElementById('advance_hidden').value);
                        }else{
                                alert('Сумма аванса не может быть больше '+document.getElementById('CostId').value);
                        }
                        document.getElementById('advance').value = document.getElementById('advance_hidden').value;
                }
                document.getElementById('credit').innerHTML =AfterDot2(parseFloat(document.getElementById('CostId').value) - parseFloat(document.getElementById('advance').value));
        }
}

/*при вводе нового периода кредитования, провести перерасчет месяцев на месяцы и годы и скрыть прошлые расчеты*/
function ChangeMonth(){
        if(document.getElementById('month').value > 12){
                var month = document.getElementById('month').value;
                var year = (month - month % 12)/12;

                document.getElementById('month').value = month % 12;
                document.getElementById('year').value = year;
        }
        if(document.getElementById('month').value == 12){
                var month = document.getElementById('month').value;
                var year = (month - month % 12)/12;

                document.getElementById('month').value = 0;
                document.getElementById('year').value = year;
        }
        if(document.getElementById('month').value == ''){
                document.getElementById('month').value = 0;
                ValidEnter(document.getElementById('month'));
        }
        document.getElementById('table').innerHTML ='';
}

/*функция расчетов и пострoения таблиц*/
function CreateTable(){
        var Month = document.getElementById('month').value;                                                                                                     /*кол-во месяцев*/
        var CountYear = parseFloat(document.getElementById('year').value);                                                              /*кол-во лет*/
        var YearToMonth = parseFloat(document.getElementById('year').value)*12;   /*кол-во месяцев в кол-ве лет*/
        var SummaMonth = parseFloat(Month) + parseFloat(YearToMonth);                                                                   /*общее кол-во месяцев*/
        var j = document.getElementById('IdMonth').value
        var n = 0
        var NowYear = parseFloat(document.getElementById('IdYear').value)+1
        var CreditMonth = parseFloat(document.getElementById('credit').innerHTML)/SummaMonth    /*сумма кредита в месяц*/
        var Rest = 0;                                                                                                                                                                                                                    /*переменная для хранения невыплаченного остатка*/
        var Rate = 0 ;                                                                                                                                                                                                                   /*переменная для хранения значения 'Выплата процентов' при расчете без ануитета*/
        var Summa = 0 ;                                                                                                                                                                                                          /*переменная для хранения значения сумма кредита в месяц с учетом 'Выплата процентов' при расчете без ануитета*/
        var SummaRate = 0 ;                                                                                                                                                                                                      /*переменная для хранения значения суммы  выплаты процентов*/
        var SummaSumma = 0 ;
                var SummaAthers = 0 ;
                var SummaCreditMonth = 0 ;                                                                                                                                                                                          /*общая сумма в месяц*/
        var span1 = ''
        var span2 = ''
        var DayOfMonth=0;                                                                                                                                                                                                       /*для хранения дня месяца (1..31)*/
        var Difference=0;                                                                                                                                                                                                               /*для хранения разницы во времени*/
        var DateData = new Array();                                                                                                                                                                             /*массив для хранения дат выплат*/
        var YearData = new Array();                                                                                                                                                                             /*массив для хранения номера года от рождества Христова в которых будут производится выплаты по кредитованию :))*/
        var YearShowData = new Array();                                                                                                                                                         /*массив для позиций в которых выводить "год"*/
        var DifferenceData = new Array();    /*массив для хранения разниц во времени*/


if(document.getElementById('anuitet').checked){ // с аннуитетем
        var span1 = new Array();
        var span2 = new Array();
        var span_ = new Array();

        j++;
        Header = '<table cellspacing="0" cellpadding="3" border=1><tr><td colspan=2><b>Месяц</b></td> <td ><b>Погашение %</b></td> <td ><b>Погащение<br/>тела кредита</b></td><td><b>Комиссионные<br>банка<b></td> <td ><b>Общая сумма <br/>за месяц</b></td> <td ><b>Остаток</b></td> </tr>';
        for(var i=0; i<SummaMonth; i++){
                if(j==12){j=0}
                var mmm=parseFloat(j)+1;
                if(j==0 || i==0){

                        var year=NowYear++;
                        if(i==0){
                                DayOfMonth = document.getElementById('IdDay').value;
                                var DateObj = new Date(parseFloat(document.getElementById('IdYear').value)+1,document.getElementById('IdMonth').value,DayOfMonth);
                                if(DateObj.getDay()==6)DayOfMonth = parseFloat(document.getElementById('IdDay').value)+2;
                                if(DateObj.getDay()==0)DayOfMonth = parseFloat(document.getElementById('IdDay').value)+1;
                                DateObj = new Date(parseFloat(document.getElementById('IdYear').value)+1,document.getElementById('IdMonth').value,DayOfMonth);
                                DateData[i] = DayOfMonth+"."+parseFloat(DateObj.getMonth()+1)+"."+year;
                                var a = new Array();
                                a = DateData[i].split('.');
                                var d1 = new Date(parseFloat(a[2]),a[1]-1,a[0]);
                                DateObj.setMonth(parseFloat(DateObj.getMonth()+1));
                                DayOfMonth = DateObj.getDate();
                                if(DateObj.getDay()==6)DayOfMonth=DateObj.getDate()+2;
                                if(DateObj.getDay()==0)DayOfMonth=DateObj.getDate()+1;
                                if(DateObj.getMonth()==0){
                                        year+=1;
                                }
                                DateData[i] = DayOfMonth+"."+parseFloat(DateObj.getMonth()+1)+"."+year;
                                var a = new Array();
                                a = DateData[i].split('.');
                                var d2 = new Date(parseFloat(a[2]),a[1]-1,a[0]);
                                Difference = Math.round((d2.getTime() - d1.getTime()) / 86400000);
                                DifferenceData[i] = Difference;
                        }else{


                                d1 = new Date(YearData[i-1],DateObj.getMonth(),DayOfMonth);
                                DateObj.setMonth(parseFloat(DateObj.getMonth()+1));
                                DateData[i] = DayOfMonth+"."+parseFloat(DateObj.getMonth()+1)+"."+year;
                                var a = new Array();
                                a = DateData[i].split('.');
                                d2 = new Date(parseFloat(a[2]),a[1]-1,a[0]);
                                Difference = Math.round((d2.getTime() - d1.getTime()) / 86400000);
                                DifferenceData[i] = Difference;
                        }

                        DateData[i] = DayOfMonth+"."+parseFloat(DateObj.getMonth()+1)+"."+year;
                        YearData[i] = year;
                        YearShowData[i] = year;
                                span1[i] = '<span id="span'+year+'_'+mmm+'">';
                                span2[i] ='</span>';
                                n++;


                }else{
                                span1[i] = '<span id="span'+year+'_'+mmm+'">';
                                span2[i] = '</span>';
                        DayOfMonth = document.getElementById('IdDay').value;
                        var DateObj = new Date(parseFloat(document.getElementById('IdYear').value)+1,DateObj.getMonth(),DayOfMonth);
                        if(DateObj.getDay()==6)DayOfMonth=DateObj.getDate()+2;
                        if(DateObj.getDay()==0)DayOfMonth=DateObj.getDate()+1;

                        DateData[i] = DayOfMonth+"."+parseFloat(DateObj.getMonth()+1)+"."+year;
                        var a = new Array();
                        a = DateData[i].split('.');
                        var d1 = new Date(parseFloat(a[2]),a[1]-1,a[0]);


                        var d1 = new Date(YearData[i-1],DateObj.getMonth(),DayOfMonth);
                        DateObj.setMonth(parseFloat(DateObj.getMonth()+1));
                        DayOfMonth = DateObj.getDate();
                        if(DateObj.getDay()==6)DayOfMonth=DateObj.getDate()+2;
                        if(DateObj.getDay()==0)DayOfMonth=DateObj.getDate()+1;
                        DateData[i] = DayOfMonth+"."+parseFloat(DateObj.getMonth()+1)+"."+year;
                        var a = new Array();
                        a = DateData[i].split('.');
                        var d2 = new Date(a[2],a[1]-1,a[0]);
                        Difference = Math.round((d2.getTime() - d1.getTime()) / 86400000);
                        DifferenceData[i] = Difference;

                        YearData[i] = year;
                        YearShowData[i] = '';

                        var divYear = i%12;
                        if(divYear == 0 || i==0){

                        }else ;
                }
                j++;
        }

        var n=0;
        var Summa1=1;
        var Summa2=1;
        var Summa21=1;
        var countAnuitet=1;
        n=parseFloat(document.getElementById('rate').value)/360/100;



        for(var i=0; i<SummaMonth; i++){
                Summa1*=(1+DifferenceData[i]*n);
        }
        Summa1*=parseFloat(document.getElementById('credit').innerHTML);

        tempCount=SummaMonth-1;
        for(var i=0; i<tempCount; i++){
                for(var j=0;j<countAnuitet;j++){
                        Summa21 *= (1+DifferenceData[tempCount-j]*n);
                }

                Summa2 += Summa21;
                Summa21=1;
                countAnuitet++;
        }

        var Anuitet = Summa1/Summa2;

        var AllCredit = parseFloat(document.getElementById('credit').innerHTML);

        for(var i=0; i<SummaMonth; i++){
                                Komis=0;
                                if(document.getElementById('month_comis_ostat').checked) Komis=AllCredit/100*parseFloat(document.getElementById('atmont').value);
                                if(document.getElementById('month_comis_credit').checked) Komis=parseFloat(document.getElementById('credit').innerHTML)/100*parseFloat(document.getElementById('atmont').value);
                                Athers = parseFloat(document.getElementById('atherId').value)+Komis;
                                SummaAthers +=Athers;

                CreditMonth=AllCredit*DifferenceData[i]*n;
                Rest = Anuitet - CreditMonth;
                AllCredit = AllCredit-Rest;
                SummaRate+=CreditMonth;
                                SummaCreditMonth += Rest;
                var a = new Array();

                        var AnuitetALL = Anuitet+Athers;
                SummaSumma+=AnuitetALL;
                a = DateData[i].split('.');
                if(a[0]<10)a[0]="0"+a[0];
                if(a[1]<10)a[1]="0"+a[1];
                AllCredit=(AllCredit<0)?0:AllCredit;
                Header += '<tr align="right"><td >'+YearShowData[i]+' </td><td >'+a[0]+'.'+a[1]+'.'+a[2]+'</td><td >'+AfterDot2(CreditMonth)+'</td><td >'+AfterDot2(Rest)+'</td><td>'+AfterDot2(Athers)+'</td><td >'+AfterDot2(AnuitetALL)+'</td><td >'+span1[i]+''+AfterDot2(AllCredit)+''+span2[i]+'</td></tr>';

        }
        Header += '<tr align="right"><td colspan=2 style="padding:0px 2px 0px 0px;"><b>Итого:</b></td><td style="padding:0px 2px 0px 0px;"><b>'+AfterDot2(SummaRate)+'</b></td><td><b>'+AfterDot2(SummaCreditMonth)+'</b></td><td style="padding:0px 2px 0px 0px;" ><b>'+AfterDot2(SummaAthers)+'</b></td><td style="padding:0px 2px 0px 0px;"><b>'+AfterDot2(SummaSumma)+'</b></td><td ></td></tr>';
        Header += '</table>';
        document.getElementById('table').innerHTML = Header;

}else{    // без аннунитета

        Header = '<table cellspacing="0" cellpadding="3" border=1><tr><td  colspan=2><b>Месяц</b></td> <td ><b>Погашение %</b></td> <td  ><b>Погашение<br/>тела кредита</b></td> <td  ><b>Комиссионные<br>банка</b></td><td ><b>Общая сумма<br/>за месяц</b></td>  <td ><b>Остаток</b></td></tr>';
        var year='';
        for(var i=0; i<SummaMonth; i++){
                 var sss='';
                if(j==12){j=0; }
                 var mmm=parseFloat(j)+1;
                if(j==0 || i==0){
                        year=NowYear++;
                                n++;
                }else{
        //                year='';
                        var divYear = i%12;
                        if(divYear == 0) n++;
                }
                                span1 = '<span id="span'+year+'_'+mmm+'">';
                                span2='</span>';
                Rest = parseFloat(document.getElementById('credit').innerHTML)-CreditMonth*i;
                Rate = Rest/100*parseFloat(document.getElementById('rate').value)/12;
                SummaRate +=Rate;

                                Komis=0;
                                if(document.getElementById('month_comis_ostat').checked) Komis=Rest/100*parseFloat(document.getElementById('atmont').value);
                                if(document.getElementById('month_comis_credit').checked) Komis=parseFloat(document.getElementById('credit').innerHTML)/100*parseFloat(document.getElementById('atmont').value);
                                Athers = parseFloat(document.getElementById('atherId').value)+Komis;
                                SummaAthers +=Athers;

                Summa = CreditMonth+Rate+Athers;
                                Rest = Rest-CreditMonth;
                                SummaCreditMonth += CreditMonth;
                Rest=(Rest<0)?0:Rest;
                SummaSumma += Summa;
                Header += '<tr align="right"><td>'+year+' </td><td >'+calendarNames.month[j]+'</td><td >'+AfterDot2(Rate)+'</td><td >'+AfterDot2(CreditMonth)+'</td><td >'+AfterDot2(Athers)+'</td><td >'+AfterDot2(Summa)+'</td><td >'+span1+''+AfterDot2(Rest)+''+span2+'</td></tr>';
                j++;
        }
        Header += '<tr align="right"><td colspan=2 style="padding:0px 2px 0px 0px;"><b>Итого:</b></td><td style="padding:0px 2px 0px 0px;"><b>'+AfterDot2(SummaRate)+'</b></td><td><b>'+AfterDot2(SummaCreditMonth)+'</b></td><td style="padding:0px 2px 0px 0px;" ><b>'+AfterDot2(SummaAthers)+'</b></td><td style="padding:0px 2px 0px 0px;"><b>'+AfterDot2(SummaSumma)+'</b></td><td></td></tr>';
        Header += '</table>';
        document.getElementById('table').innerHTML = Header;
}
        Other = '<p><b>Дополнительные расходы:</b> '+AfterDot2(parseFloat(document.getElementById('raz').value))+'</p>';
        if(document.getElementById('strahovk').checked)
        {
        Other += '<table cellspacing="0" cellpadding="3" border="1" style="margin:20px 0px 0px 0px" >';
        Other += '<tr><td><b>Год</b></td>';
        var First = 0;
        var Second = 0;
        var Rezult =0;
        Summa=0;
        NowYear = parseFloat(document.getElementById('IdYear').value)+1;
        if(document.getElementById('type_ipotec').checked)      /*страховка ипотечного*/
        {
              Other += '<td><b>Титульное страхование</b></td><td><b>Страхование имущества</b></td><td><b>Страхование жизни заемщика</b></td><td><b>Общая сумма платежей</b></td></tr>';
              if(Month > 0)  CountYear++;
              var maxSrok=(parseFloat(document.getElementById('titsrokId').value )> CountYear)?parseFloat(document.getElementById('titsrokId').value):CountYear;
              var SummTitul = 0;
              var SummLife = 0;
              var SummStr = 0;

              for(i=0; i <maxSrok; i++)
              {
                   Titul=parseFloat(document.getElementById('CostId').value)/100*parseFloat(document.getElementById('titprId').value);
                   SummTitul += Titul;
                   if(i+1>CountYear)
                      Life =  Str = 0;
                   else
                   {
                       if(i==0) Second = parseFloat(document.getElementById('credit').innerHTML);
                       else  Second = parseFloat(document.getElementById('span'+(NowYear-1+i)+'_12').innerHTML);

                       Life = Second/100*parseFloat(document.getElementById('lifeId').value);
                       Str =  Second/100*parseFloat(document.getElementById('imId').value);
                   }
                   SummLife += Life;
                   SummStr += Str;
                  Other += '<tr><td>'+parseFloat(NowYear+i)+'</td><td align="right">'+ AfterDot2(Titul) +'</td><td align="right">'+AfterDot2(Str)+'</td><td align="right">'+AfterDot2(Life)+'</td><td align="right">'+AfterDot2(Titul+Str+Life)+'</td></tr>';
              }
              Other += '<tr><td><b>Итого</b></td><td align="right"><b>'+ AfterDot2(SummTitul) +'</b></td><td align="right"><b>'+AfterDot2(SummStr)+'</b></td><td align="right"><b>'+AfterDot2(SummLife)+'</b></td><td align="right"><b>'+AfterDot2(SummTitul+SummStr+SummLife)+'</b></td></tr>';

        }
        if(document.getElementById('type_avto').checked)     /*страховка авто*/
        {
              Other += '<td><b>Страхование КАСКО</b></td><td><b>Страхование жизни заемщика</b></td><td><b>Общая сумма платежей</b></td></tr>';
              if(Month > 0)  CountYear++;
              var SummKasko = 0;
              var SummLife = 0;
              for(i=0; i <CountYear; i++)
              {
                   Kasko=parseFloat(document.getElementById('CostId').value)/100*parseFloat(document.getElementById('caskoId').value);
                   SummKasko += Kasko;

                   if(i==0) Second = parseFloat(document.getElementById('credit').innerHTML);
                   else  Second = parseFloat(document.getElementById('span'+(NowYear-1+i)+'_12').innerHTML);
                   Life = Second/100*parseFloat(document.getElementById('avlifeId').value);
                   SummLife += Life;
                  Other += '<tr><td>'+parseFloat(NowYear+i)+'</td><td align="right">'+ AfterDot2(Kasko) +'</td><td align="right">'+AfterDot2(Life)+'</td><td align="right">'+AfterDot2(Kasko+Life)+'</td></tr>';
              }
              Other += '<tr><td><b>Итого</b></td><td align="right"><b>'+ AfterDot2(SummKasko) +'</b></td><td align="right"><b>'+AfterDot2(SummLife)+'</b></td><td align="right"><b>'+AfterDot2(SummKasko+SummLife)+'</b></td></tr>';

        }
        if(document.getElementById('type_potreb').checked)      /*страховка потребительского*/
        {
           Other += '<td><b>Страхование имущества</b></td></tr>';
           var SummStr = 0;
           if(Month > 0)  CountYear++;
              for(i=0; i <CountYear; i++)
              {
                   if(i==0) Second = parseFloat(document.getElementById('credit').innerHTML);
                   else  Second = parseFloat(document.getElementById('span'+(NowYear-1+i)+'_12').innerHTML);
                   Str = Second/100*parseFloat(document.getElementById('tarifId').value);
                   SummStr += Str;
                  Other += '<tr><td>'+parseFloat(NowYear+i)+'</td><td align="right">'+AfterDot2(Str)+'</td></tr>';
              }
              Other += '<tr><td><b>Итого</b></td><td align="right"><b>'+AfterDot2(SummStr)+'</b></td></tr>';

        }

        Other += '</table>';
        }
        SummComissRaz = AfterDot2(parseFloat(document.getElementById('credit').innerHTML)/100*document.getElementById('comis').value);
        Other += '<p><b>Разовые сборы:</b>'+SummComissRaz+'</р>';

//        Other += '<p><b>Итого - минимально необходимая сумма: (<span id="id_min">грн.</span>)</b>   <span id="id_min_rezult"> </p>';

        document.getElementById('table').innerHTML += Other;

//        document.getElementById('id_min_rezult').innerHTML = AfterDot2(parseFloat(document.getElementById('id_account').innerHTML) + parseFloat(document.getElementById('id_notary').innerHTML) + FirstYearRezult + parseFloat(document.getElementById('advance').value));

        document.getElementById('buttonCrTable').disabled=true;
}

/*ограничиваем вывод двух знаков после запятой*/
function AfterDot2(name){

        name = name.toFixed(2);

        return name;
}


/*проверяем на валидность периода страхования относительно данных из xml*/
function SetValidPeriod(){
        var Month = parseFloat(document.getElementById('month').value);                   /*количество месяцев*/
        var YearToMonth = parseFloat(document.getElementById('year').value)*12;           /*количество месяцев в кол-ве лет*/
        var SummaMonth = Month + YearToMonth;                                                                                                           /*общее количество месяцев*/

        if(SummaMonth < period_from){
                alert("Срок должен быть не меньше "+period_from+" месяцев.");
                document.getElementById('year').value = 0;
                document.getElementById('month').value = period_from;
        }
        if(SummaMonth > period_to){
                alert("Срок должен быть не больше "+period_to+" месяцев.");
                document.getElementById('year').value = period_to/12;
                document.getElementById('month').value = 0;
        }
        ChangeAdvance();
}

function showAlt()
{
        var posx = 0;
        var posy = 0;
        var e = window.event;
        var s = e.srcElement;
        var n;

        if(s.htmlFor)   { n = s.htmlFor } else
        if(s.id)                { n = s.id } else
        if(s.name)              { n = s.name }
        n = document.getElementById('alt_'+n);

        if(e.pageX || e.pageY)
        {
                posx = e.pageX;
                posy = e.pageY;
        }
        else if(e.clientX || e.clientY)
        {
                posx = e.clientX + document.body.scrollLeft;
                posy = e.clientY + document.body.scrollTop;
        }
        posx -= 20;     if(posx < 0) posx = 0;
        posy += 25;

        switch(e.type)
        {
                case 'mousemove':
                        n.style.left = posx;
                        n.style.top  = posy;
                        break;
                case 'mouseover':
                        n.style.left = posx;
                        n.style.top  = posy;
                        n.style.display = 'block';
                        break;
                case 'mouseout':
                        n.style.display = 'none';
                        break;
        }
}