Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Веб скрипты » Поиск и обмен » Помогите найти скрипт календарика
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
Sergey_pol
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2002
Место проживания: Владивосток
Публикаций: 131
Статус: Sergey_pol в оф-лайне
Помогите найти скрипт календарика [сообщение #29227]

Нужен скрипт календарика на любом языке, такой чтобы н апрошедшие дни месяца выдавал ссылки в заданном формате а на последующие нет. (как на любом новостном сайте - архива новостей)
Может кто вдел что-то похожее...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 18-12-2002 01:04
Нажмите сюда для просмотра профайла Sergey_pol Отправить Персональное сообщение Sergey_pol Найти сообщения от Sergey_pol Добавить Sergey_pol в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #29239]

вот, глянь этот
http://www.phpinsider.com/php/code/Date_Calc/

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 18-12-2002 07:19
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
nanut
Участник+
Средний рейтинг: 4.18 | Оценок: 11
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jul 2002
Место проживания: есть;)
Публикаций: 404
Статус: nanut в оф-лайне
[сообщение #29313]

И здесь можешь глянуть:
=http://webcalendar.sourceforge.net/demo/day.php
=http://blazonry.com/scripting/datemenu.php
=http://realize.be/swentel/module.php?boxcontent=5

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 19-12-2002 02:29
Нажмите сюда для просмотра профайла nanut Отправить Персональное сообщение nanut Найти сообщения от nanut Добавить nanut в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
AndyAN
Модератор
Средний рейтинг: 3.88 | Оценок: 24
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Aug 2001
Место проживания: Москва
Публикаций: 763
Статус: AndyAN в оф-лайне
[сообщение #29377]

http://www.abledesign.com посмотри вот тут

__________________
ИзВенИте за ОпИЧАТКи =)

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-12-2002 07:20
Нажмите сюда для просмотра профайла AndyAN Отправить Персональное сообщение AndyAN Найти сообщения от AndyAN Добавить AndyAN в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Sergey_pol
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2002
Место проживания: Владивосток
Публикаций: 131
Статус: Sergey_pol в оф-лайне
[сообщение #29629]

Видите вся проблема в том, что все даты активные в предложенных Вами скриптах, а надо чтобы завтрашняя послезавтрашняя и прочие последующие даты были неактивными...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 24-12-2002 06:40
Нажмите сюда для просмотра профайла Sergey_pol Отправить Персональное сообщение Sergey_pol Найти сообщения от Sergey_pol Добавить Sergey_pol в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
RomaniS
FIRST MEMBER
Средний рейтинг: 4.33 | Оценок: 3
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания: Earth
Публикаций: 341
Статус: RomaniS в оф-лайне
[сообщение #29638]

Sergey_pol
Домой приду, скину код...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 24-12-2002 11:05
Нажмите сюда для просмотра профайла RomaniS Отправить Персональное сообщение RomaniS Найти сообщения от RomaniS Добавить RomaniS в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Sergey_pol
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2002
Место проживания: Владивосток
Публикаций: 131
Статус: Sergey_pol в оф-лайне
[сообщение #29974]

RomaniS, я уже заждался, обещал - скидывай. Или у тебя дом так далеко находится :-)

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 30-12-2002 00:02
Нажмите сюда для просмотра профайла Sergey_pol Отправить Персональное сообщение Sergey_pol Найти сообщения от Sergey_pol Добавить Sergey_pol в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
RomaniS
FIRST MEMBER
Средний рейтинг: 4.33 | Оценок: 3
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания: Earth
Публикаций: 341
Статус: RomaniS в оф-лайне
[сообщение #30026]

Sergey_pol
Забыл... сорри.... сейчас найду....

RomaniS добавил 30-12-2002 в 22:48:14:
Надеюсь разберешься

Тебе необходимые переменные поставить сможешь

calendar.php

PHP:


<?
  
   
// Календарь
   
require ("months.inc.php");
   
   
//print $REQUEST_URI;
  
   
$calendar_path = '/calendar';
   
   
   
   if (
ereg("^$calendar_path/?$",$REQUEST_URI,$path))
   {
    include (
"calendar/years.inc.php");
   }
   
   else if (
ereg("^$calendar_path/([0-9]+)/?$",$REQUEST_URI,$path))
   {
    
$year = $path[1];
    include (
"calendar/year.inc.php");
   }
   
   else if (
ereg("^$calendar_path/([0-9]+)/([0-9]+)/?$",$REQUEST_URI,$path))
   {
    
$year = $path[1];
    
$month = $path[2]; 
    include (
"calendar/month.inc.php");
   }
   
   else if (
ereg("^$calendar_path/([0-9]+)/([0-9]+)/([0-9]+)/?$",$REQUEST_URI,$path))
   {
    
$year = $path[1];
    
$month = $path[2]; 
    
$day = $path[3];
    
    include (
"calendar/day.inc.php"); 
   }
  
   else
   {
    
header ("Location:$calendar_path/");
   } 
   
?>



months.inc.php


PHP:

<?  
  $months 
= array
  (
   
'01' => 'Январь',
   
'02' => 'Февраль',
   
'03' => 'Март',
   
'04' => 'Апрель',
   
'05' => 'Май',
   
'06' => 'Июнь',
   
'07' => 'Июль',
   
'08' => 'Август',
   
'09' => 'Сентябрь',
   
'10' => 'Октябрь',
   
'11' => 'Ноябрь',
   
'12' => 'Декабрь'
  
);
  
  
   
$day_in_month = array

  (

   
"01"=>"31",

   
"02"=>"28",

   
"03"=>"31",

   
"04"=>"30",

   
"05"=>"31",

   
"06"=>"30",

   
"07"=>"31",

   
"08"=>"31",

   
"09"=>"30",

   
"10"=>"31",

   
"11"=>"30",

   
"12"=>"31"

  
);
?>



day.inc.php


PHP:

<?

  
//материалы за день
  
 
if ($day > 31)
 {
  
header ("Location:$calendar_path/");
  exit();
 } 
  
 
$tpl = new TemplatePower('calendar-day','NO_INCLUDE');  

 
$tpl->prepare();
 
 
$material_date = "$day/$month/$year";
 
 
$tpl->assign('year', $year);
 
$tpl->assign('month', $month);
 
$tpl->assign('day', $day);
 
 
$tpl->assign('calendar_path', $calendar_path);
  
 
$tpl->assign('current_time',date("H:i"));
 
$tpl->assign('current_date',date("d/m/Y"));
     
 
 
$tpl->assign('month_name_breaked',
              
ereg_replace ('([^ ])', '&nbsp;\1&nbsp;<br>', strtolower($months[$month])));


 
 
 
 
$materials = new materials();
 
 
$materials_list = $materials->materials_list (1,true,
                   
"DATE_FORMAT(material_date,'%d/%m/%Y') = '$material_date' AND
                   material_file != 'index' AND material_publish = '1'"
,'material_anons','','',true);

  
$prev_material = $materials->materials_list (1,true,
                   
"DATE_FORMAT(material_date,'%d/%m/%Y') < '$material_date' AND
                   material_file != 'index' AND material_publish = '1'"
,'material_anons','','1',true);

 if (
$prev_material)
 {
 
  
$tpl->assign ('prev_day_link',$calendar_path.'/'.(date ('Y/m/ d',strtotime($prev_material[0]['material_date'])))
.
'/');
 }
 
 
 
                   
 if (
$materials_list)
 {
  foreach (
$materials_list as $material)
  {
   
$tpl->newBlock('material');
   
   
$tpl->assign ('material_title',$material['material_title']);
   
$tpl->assign ('material_anons',$material['material_anons']);
   
$tpl->assign("material_time"   , date("H:i",strtotime($material['material_date'])) );
   
$tpl->assign("material_date"   , date("d/m/Y",strtotime($material['material_date'])) );
   
   
$tpl->assign ('material_url', '/'. $material['material_rubrics']['0']['rubric_full_pa
th'
].$material['material_cur_file'].$site['material_url_ext'] );

    
$tpl->assign ('rubric_name', 
                    
strtolower($material['material_rubrics'][0]['rubri
c_name'
]));
                   
     
$tpl->assign ('rubric_url', 
                   
'/'. $material['material_rubrics'][0]['rubric_full_path
'
]);            
                   
     
$tpl->assign ('rubric_class', 
                    isset(
$material['material_rubrics'][0]['rubric_pro
perties'
]['rubric_class']) ?
                    
$material['material_rubrics'][0]['rubric_propertie
s'
]['rubric_class'] :'');      
                                  
     
$tpl->assign ('material_url',$site['url'].'/'.
                    
$material['material_rubrics'][0]['rubric_full_path
'
].
                   
$material['material_cur_file'].$site['material_url_ext']);    
  }
 }                   
 
 
$tpl->printToScreen();  
?>



month.inc.php


PHP:

<?
 
  
// Календарь за месяц
  
 
if (!isset($months[$month]))
 {
  
header ("Location:$calendar_path/");
  exit();
 } 
  
 
$tpl = new TemplatePower('calendar-month','NO_INCLUDE');  

 
$tpl->prepare();
 
 
$tpl->assign('current_time',date("H:i"));
 
$tpl->assign('current_date',date("d/m/Y"));
     
 
$tpl->assign('year', $year);
 
$tpl->assign('month', $month);
 
 
 
$tpl->assign('calendar_path', $calendar_path);

  
$tpl->assign('month_name_breaked',
              
ereg_replace ('([^ ])', '&nbsp;\1&nbsp;<br>', strtolower($months[$month]))); 
 
 
$materials = new materials();
 
 
$materials_list = $materials->materials_list (1,true,
                   
"DATE_FORMAT(material_date,'%m.%Y') = '$month.$year' AND
                   material_file != 'index' AND material_publish = '1'"
,'','','',true);
                   
 
$prev_month =    $materials->materials_list (1,true,
                   
"DATE_FORMAT(material_date,'%m.%Y') < '$month.$year' AND
                   material_file != 'index' AND material_publish = '1'"
,'','','1',true);                   
    
 if (
$prev_month)
 {
    
$tpl->assign ('prev_month_link',$calendar_path.'/'.(date ('Y/m',strtotime($prev_month[0]['material_date']))).'/');
 }                   
 
 if (
$materials_list)
 {
  foreach (
$materials_list as $material)
  {
   
$dates[date('d/m/Y',strtotime($material['material_date']))]=1;
  }
  
  foreach (
$dates as $material_date => $val)
  {
   
$tpl->newBlock ('month_day');
   
   
$tpl->assign ('material_date',$material_date);
   
   foreach (
$materials_list as $material)
   {
    if (
date('d/m/Y',strtotime($material['material_date'])) == $material_date)
    {
     
$tpl->newBlock ('material');
     
     
$tpl->assign ('material_title',$material['material_title']);
     
$tpl->assign("material_time"   , date("H:i",strtotime($material['material_date'])) );
     
$tpl->assign ('material_url', '/'. $material['material_rubrics']['0']['rubric_full_pa
th'
].$material['material_cur_file'].$site['material_url_ext'] );


        
$tpl->assign ('rubric_name', 
                    
strtolower($material['material_rubrics'][0]['rubri
c_name'
]));
                   
     
$tpl->assign ('rubric_url', 
                   
'/'. $material['material_rubrics'][0]['rubric_full_path
'
]);            
                   
     
$tpl->assign ('rubric_class', 
                    isset(
$material['material_rubrics'][0]['rubric_pro
perties'
]['rubric_class']) ?
                    
$material['material_rubrics'][0]['rubric_propertie
s'
]['rubric_class'] :'');      
                                  
     
$tpl->assign ('material_url',$site['url'].'/'.
                    
$material['material_rubrics'][0]['rubric_full_path
'
].
                   
$material['material_cur_file'].$site['material_url_ext']);    

    }
   }
   
  }
 }
 
 
$tpl->printToScreen();  
?>



year.inc.php


PHP:

<?

 
// Список месяцев года
 
 
$tpl = new TemplatePower('calendar-year','NO_INCLUDE');  

 
$tpl->prepare();
 
 
$tpl->assign('current_time',date("H:i"));
 
$tpl->assign('current_date',date("d/m/Y"));
     
 
 
  
$years = sql2table
  
("
    SELECT DISTINCT YEAR(material_date) AS year
      FROM "
.$site['material_table']."
      ORDER BY YEAR(material_date)
   "
);
   
  if (
$years)
  {
   foreach (
$years as $year_pos => $year_disp)
   {
    
    
$tpl->newBlock ('year');
    
    if (
$year_disp['year'] == $year)
    {
     
$tpl->newBlock ('current_year');
     
$tpl->assign ('year',$year_disp['year']);
    }
    else
    {
     
$tpl->newBlock ('target_year');
     
$tpl->assign ('year',$year_disp['year']);
     
$tpl->assign ('year_url',$calendar_path.'/'.$year_disp['year'].'/');
    }
   }
  } 
   
   
 
$days = sql2table
 
("
   SELECT DISTINCT DATE_FORMAT(material_date,'%Y-%m-%d') AS year_day
   FROM "
.$site['material_table']."
   WHERE YEAR(material_date) = '
$year'
 "
);
 
 if (
$days)
 {
  foreach (
$days as $day)
  {
    
$year_months[date('m',strtotime($day['year_day']))
] = 
1;
   
$year_days[$day['year_day']] =1;
 
// print "<br> - ".$day['year_day'].'-'.date('m',strtotime($day['year_day']));
  
}
 }
 
 
 


for (
$month=0 ; $month < 12 ; $month++)
{
 
 if (
$month%3 == 0)  $tpl->newBlock ('months_row');
 
 
$tpl->newBlock ('month');
 
 
 
 
$pmonth = ($month < 9) ? '0'.($month+1):$month+1;
 
 
$tpl->assign ('month_name', $months[$pmonth]);
 
$tpl->assign ('month_url', $calendar_path.'/'.$year.'/'.$pmonth.'/');
 
 
 
$tpl->newBlock('row');
 
    
//День недели первого дня
    
$week_day =  date("w",strtotime("$year-$pmonth-01"));
    if (
$week_day == 0) $week_day=7;
     
 
    if (
$week_day !=1 ) 
    {
      for (
$i =0; $i < $week_day-1; $i++) 
      {
 
       
$tpl->newBlock('cell');
       
$tpl->newBlock('cell_blank');
      }
    }
    
    for (
$cur_day = 1; $cur_day <= $day_in_month[$pmonth]; $cur_day++)
     {
       
       
$week_day = date("w",strtotime("$year-$pmonth-$cur_day"));
       
       
$pday = ($cur_day < 10) ? '0'.$cur_day:$cur_day;
     
       
$exists = false;
       
 
       
       if (isset(
$year_days["$year-$pmonth-$pday"]))
       {
        
$tpl->newBlock('cell');
        
$tpl->newBlock('cell_ref');
       
        
$tpl->assign ('day_url',$calendar_path."/$year/$month/$pday/");
        
$tpl->assign ('day', $cur_day );
       }
       else
       {
        
$tpl->newBlock('cell');
        
$tpl->newBlock('cell_empty');
       
        
$tpl->assign ('day', $cur_day );
       }
       
       if (
$week_day == 0 && $cur_day != $day_in_month[$pmonth])
       {
        
$tpl->newBlock('row');
       }
       
       
     
       
      
      
     }    
     
     
     
$week_day =  date("w",strtotime("$year-$pmonth-".$day_in_month[$pmonth]));
       
 
        if (
$week_day != 0)
        {
         for (
$i =0; $i < 7 - $week_day; $i++) 
         {
 
          
$tpl->newBlock('cell');
          
$tpl->newBlock('cell_blank');
         }
        }
        
} 
 
 
 
$tpl->printToScreen(); 
  
?>



years.inc.php


PHP:

<?
 
  
// Список лет календаря
  
  
  
$year = retr_sql
  
("
    SELECT  YEAR(material_date) AS year
      FROM "
.$site['material_table']."
      ORDER BY YEAR(material_date) DESC
   "
);
   
  
header ("Location:$calendar_path/$year/");
 
?>

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 30-12-2002 22:32
Нажмите сюда для просмотра профайла RomaniS Отправить Персональное сообщение RomaniS Найти сообщения от RomaniS Добавить RomaniS в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Sergey_pol
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2002
Место проживания: Владивосток
Публикаций: 131
Статус: Sergey_pol в оф-лайне
[сообщение #30031]

Ну что я могу сказать, спасибо большое - на днях проверю работоспособность, а можешь это все на мыло скинуть (sergey_pol@mail.ru)

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 30-12-2002 23:30
Нажмите сюда для просмотра профайла Sergey_pol Отправить Персональное сообщение Sergey_pol Найти сообщения от Sergey_pol Добавить Sergey_pol в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #30032]

Sergey_pol ну ты даешь, тебе что тяжело взять это в файлы скопировать?

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 30-12-2002 23:33
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Sergey_pol
Участник+
Средний рейтинг: 4.6 | Оценок: 5
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2002
Место проживания: Владивосток
Публикаций: 131
Статус: Sergey_pol в оф-лайне
[сообщение #30034]

Да нет проблем, просто наверняка человек копировал это все их файлов и у него есть оригиналы рабочие, а по практике знаю, перенося несколько раз исходники что - то да потеряется обязательно...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 31-12-2002 00:33
Нажмите сюда для просмотра профайла Sergey_pol Отправить Персональное сообщение Sergey_pol Найти сообщения от Sergey_pol Добавить Sergey_pol в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
ZogG
Участник

Зарегистрирован: Apr 2004
Место проживания:
Публикаций: 33
Статус: ZogG в оф-лайне
[сообщение #67633]

а есть добровольцы которые объяснят как самому можно написать,просто мне интересно ,да и не люблю выезжать на готовеньком!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 08-06-2004 17:01
Нажмите сюда для просмотра профайла ZogG Отправить Персональное сообщение ZogG Посетить домашнию страничку ZogG! Найти сообщения от ZogG Добавить ZogG в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #67639]

quote:
не люблю выезжать на готовеньком

смотри да разбирай... чего учить то?

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 08-06-2004 21:29
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
ZogG
Участник

Зарегистрирован: Apr 2004
Место проживания:
Публикаций: 33
Статус: ZogG в оф-лайне
[сообщение #67640]

he][es
ну я туго в чужих кодах рублю,мне бы алгоритм и примерные действия а я потмо уже посвоему ладу тоже самое да как мне нравиться =)

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 08-06-2004 21:34
Нажмите сюда для просмотра профайла ZogG Отправить Персональное сообщение ZogG Посетить домашнию страничку ZogG! Найти сообщения от ZogG Добавить ZogG в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #67641]

ZogG а выше тебе не пример?

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 08-06-2004 21:54
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 06:33.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 4.18095398 seconds (99.87% PHP - 0.13% MySQL) with 26 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.