����JFIF�����%%��� }!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������� w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|��O�������h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,��������ο�O�P��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������k�w���~���v��������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j�?�5o�%��?��� g����U@�����&O3�����a�;�^=�wH���D��/��*� �fX�I���,������k?g_���?�5o�%��?��� g����U@�F�����������*������?�o�}��Τ~g��ʀ�#V��Y������~ο�T�j��K/� ������������z��������#;�~���A�;��� w�F�����������*���տ��_�@�o��5����EU������������u�誠��W��[�����������O��?jW���@��տ���@�o��5����EM������������v�訠�#V��Y�������������V��Zv��~����vw�~���c�Q@���,��~���kgo���?�5o�%��/��� o����Q@��o�%�>�ߤ���߳����S������?��o�%�~�ߠ�d�߳����S����g�P��j��K?� _������������[� g�D����[�;�TP7���������'Ѿ���=��;/�P��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���a������۔���B{���ea�`T�+ �n%Ц �����j��K?� _������������[� g�D����[�;�TP���,��~���kgo����?���%�/�~�����#����x��c�~�q�v�t`ȫ��_'h���������'�]�;{s� Pp=N= 5���%�����ڜs�����=���J��A@�����Kp�b��}��X�����4g v+:�Բ�+60�ʩ,� @�����������I �uO�����ToUv��bgUl�cP�T?�#V��Y������������j��K?� _����������!��X��]���������TK�|4��`� ��#��P\y��aa >NgL��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���o�F�����$��ہ�� ��vݞr6��S�q''*02���[� g�D����[�;�TP���,��~���kgo���?�5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE������������v�訠��������~1�o���}G�L�������5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE5����%�˷���r�v����y�\~���)(?0���=[� i����>��gc��N=����5o�%��/��� o����Q@�F�����������*(��W��Z�l����m#���X�wn_�j`0C6윅����5o�%��/��� o����Q@��տ��y9���gbO�G�5@�n�>���#V��Y������~ο�T��V��Y����9�gc��s�T.�?Z_��[� e�D����Y�:��UP���,������k?g_����_�=_� n�~~�rI������w�,"~ԓ�!72���)( u��#V��Y������~ο�T�j��K/� ��������������K
�����Kr_���}�De>~��Z=��pjX�n[p(�"� �a,Ub�/�×�<����;��<�����K>��o���[�:����V���,��$��ϧ�*�����5O����տ��_�@�o��5����EU5��o�%����?�ꜜm�_�;>Gbs�S�����@��տ��_�@�o��5����EU ��տ��}�~�����v?�������-��o�l��~�ȥ�v����r��B1���@��տ���A�?����ggP��c�S�`@%�*����տ��_�@�o��5����EU������������u�誠7���� O���!c�|0��ёv��4�+�X�Vx�RX3��8����K>��o���[�:���u#�x��#V��Y������~ο�T�j��K/� ������������[� e�D����Y�:��UP���,������k?g_���O��[� g�D����[�:��T��=_� k����~��k����c�;����.8����c��z��Ͽ�/��zc�o����F?Z_��[� e�D����Y�:��UP���,������k?g_���C���,�v����v�o���H������(�z���w�/�����v ��T.G��Ϡ���տ��_�@�o��5����EU������������u�誠��W��[��'����%��o���:�Cڕ�R̀���j���������?�o���[�;������g0q�?��o�%�>o�_��>�gf����~4�������������u�誠�z���7�/��o���������_��[� e�D����Y�:��UP���,������k?g_���C���,�|�����o��;�Ԟ��9�l�z��ؠ3|��O�X�~���;~�q����Z�F�����������*���տ��_�@�o��5����EU!��տ��}�~����-��G��I�T�������������u�誠�#V��Y������~ο�T�j��K/� ����������#�=_� n|���KbB�gtdM��"�ڒA#n�63�6�m�P�����,���/���gS�u����#�9��5o�%��?��� g����U@��o�%�o�_�����u��'�������?��o��� ���3��?go���|m�ڇ���-S�O��x��>���^�����7����x�]_�>�qke>���m��4��7P�Yހ��
0byt3m1n1
0byt3m1n1
Path:
/
hermes
/
bosweb
/
web
/
sb_web
/
web
/
web
/
web
/
web
/
b1705
/
elitewouldcare.com
/
primero
/
Aplicacion
/
lib
/
x
/
[
Home
]
File: x.js
/* x.js compiled from X 4.0 with XC 0.27b. Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */ // globals, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL var xOp7Up,xOp6Dn,xIE4Up,xIE4,xIE5,xNN4,xUA=navigator.userAgent.toLowerCase(); if(window.opera){ var i=xUA.indexOf('opera'); if(i!=-1){ var v=parseInt(xUA.charAt(i+6)); xOp7Up=v>=7; xOp6Dn=v<7; } } else if(navigator.vendor!='KDE' && document.all && xUA.indexOf('msie')!=-1){ xIE4Up=parseFloat(navigator.appVersion)>=4; xIE4=xUA.indexOf('msie 4')!=-1; xIE5=xUA.indexOf('msie 5')!=-1; } else if(document.layers){xNN4=true;} xMac=xUA.indexOf('mac')!=-1; // xAddEventListener, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xAddEventListener(e,eT,eL,cap) { if(!(e=xGetElementById(e))) return; eT=eT.toLowerCase(); if((!xIE4Up && !xOp7Up) && e==window) { if(eT=='resize') { window.xPCW=xClientWidth(); window.xPCH=xClientHeight(); window.xREL=eL; xResizeEvent(); return; } if(eT=='scroll') { window.xPSL=xScrollLeft(); window.xPST=xScrollTop(); window.xSEL=eL; xScrollEvent(); return; } } var eh='e.on'+eT+'=eL'; if(e.addEventListener) e.addEventListener(eT,eL,cap); else if(e.attachEvent) e.attachEvent('on'+eT,eL); else eval(eh); } // called only from the above function xResizeEvent() { if (window.xREL) setTimeout('xResizeEvent()', 250); var cw = xClientWidth(), ch = xClientHeight(); if (window.xPCW != cw || window.xPCH != ch) { window.xPCW = cw; window.xPCH = ch; if (window.xREL) window.xREL(); } } function xScrollEvent() { if (window.xSEL) setTimeout('xScrollEvent()', 250); var sl = xScrollLeft(), st = xScrollTop(); if (window.xPSL != sl || window.xPST != st) { window.xPSL = sl; window.xPST = st; if (window.xSEL) window.xSEL(); } } // xAppendChild, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xAppendChild(oParent, oChild) { if (oParent.appendChild) return oParent.appendChild(oChild); else return null; } // xBackground, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xBackground(e,c,i) { if(!(e=xGetElementById(e))) return ''; var bg=''; if(e.style) { if(xStr(c)) { if(!xOp6Dn) e.style.backgroundColor=c; else e.style.background=c; } if(xStr(i)) e.style.backgroundImage=(i!='')? 'url('+i+')' : null; if(!xOp6Dn) bg=e.style.backgroundColor; else bg=e.style.background; } return bg; } // xBar, Copyright 2003,2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL // Bar-Graph Object function xBar(dir, // direction, 'ltr', 'rtl', 'ttb', or 'btt' conStyle, barStyle) // container and bar style class names { //// Public Properties this.value = 0; // current value, read-only //// Public Methods // Update current value this.update = function(v) { if (v < 0) v = 0; else if (v > this.inMax) v = this.inMax; this.con.title = this.bar.title = this.value = v; switch(this.dir) { case 'ltr': // left to right v = this.scale(v, this.w); xLeft(this.bar, v - this.w); break; case 'rtl': // right to left v = this.scale(v, this.w); xLeft(this.bar, this.w - v); break; case 'btt': // bottom to top v = this.scale(v, this.h); xTop(this.bar, this.h - v); break; case 'ttb': // top to bottom v = this.scale(v, this.h); xTop(this.bar, v - this.h); break; } }; // Change position and/or size this.paint = function(x, y, // container position w, h) // container size { if (xNum(x)) this.x = x; if (xNum(y)) this.y = y; if (xNum(w)) this.w = w; if (xNum(h)) this.h = h; xResizeTo(this.con, this.w, this.h); xMoveTo(this.con, this.x, this.y); xResizeTo(this.bar, this.w, this.h); xMoveTo(this.bar, 0, 0); }; // Change scale and/or start value this.reset = function(max, start) // non-scaled values { if (xNum(max)) this.inMax = max; if (xNum(start)) this.start = start; this.update(this.start); }; //// Private Methods this.scale = function(v, outMax) { return Math.round(xLinearScale(v, 0, this.inMax, 0, outMax)); }; //// Private Properties this.dir = dir; this.x = 0; this.y = 0; this.w = 100; this.h = 100; this.inMax = 100; this.start = 0; this.conStyle = conStyle; this.barStyle = barStyle; //// Constructor // Create container this.con = document.createElement('DIV'); this.con.className = this.conStyle; // Create bar this.bar = document.createElement('DIV'); this.bar.className = this.barStyle; // Insert in object tree this.con.appendChild(this.bar); document.body.appendChild(this.con); } // end xBar // xCapitalize, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL // Capitalize the first letter of every word in str. function xCapitalize(str) { var i, c, wd, s='', cap = true; for (i = 0; i < str.length; ++i) { c = str.charAt(i); wd = isWordDelim(c); if (wd) { cap = true; } if (cap && !wd) { c = c.toUpperCase(); cap = false; } s += c; } return s; function isWordDelim(c) { // add other word delimiters as needed // (for example '-' and other punctuation) return c == ' ' || c == '\n' || c == '\t'; } } // xCardinalPosition, Copyright 2004-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xCardinalPosition(e, cp, margin, outside) { if(!(e=xGetElementById(e))) return; if (typeof(cp)!='string'){window.status='xCardinalPosition error: cp=' + cp + ', id=' + e.id; return;} var x=xLeft(e), y=xTop(e), w=xWidth(e), h=xHeight(e); var pw,ph,p = xParent(e); if (p == document || p.nodeName.toLowerCase() == 'html') {pw = xClientWidth(); ph = xClientHeight();} else {pw=xWidth(p); ph=xHeight(p);} var sx=xScrollLeft(p), sy=xScrollTop(p); var right=sx + pw, bottom=sy + ph; var cenLeft=sx + Math.floor((pw-w)/2), cenTop=sy + Math.floor((ph-h)/2); if (!margin) margin=0; else{ if (outside) margin=-margin; sx +=margin; sy +=margin; right -=margin; bottom -=margin; } switch (cp.toLowerCase()){ case 'n': x=cenLeft; if (outside) y=sy - h; else y=sy; break; case 'ne': if (outside){x=right; y=sy - h;}else{x=right - w; y=sy;}break; case 'e': y=cenTop; if (outside) x=right; else x=right - w; break; case 'se': if (outside){x=right; y=bottom;}else{x=right - w; y=bottom - h}break; case 's': x=cenLeft; if (outside) y=sy - h; else y=bottom - h; break; case 'sw': if (outside){x=sx - w; y=bottom;}else{x=sx; y=bottom - h;}break; case 'w': y=cenTop; if (outside) x=sx - w; else x=sx; break; case 'nw': if (outside){x=sx - w; y=sy - h;}else{x=sx; y=sy;}break; case 'cen': x=cenLeft; y=cenTop; break; case 'cenh': x=cenLeft; break; case 'cenv': y=cenTop; break; } var o = new Object(); o.x = x; o.y = y; return o; } // xClientHeight, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xClientHeight() { var h=0; if(xOp6Dn) h=window.innerHeight; else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight) h=document.documentElement.clientHeight; else if(document.body && document.body.clientHeight) h=document.body.clientHeight; else if(xDef(window.innerWidth,window.innerHeight,document.width)) { h=window.innerHeight; if(document.width>window.innerWidth) h-=16; } return h; } // xClientWidth, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xClientWidth() { var w=0; if(xOp6Dn) w=window.innerWidth; else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth) w=document.documentElement.clientWidth; else if(document.body && document.body.clientWidth) w=document.body.clientWidth; else if(xDef(window.innerWidth,window.innerHeight,document.height)) { w=window.innerWidth; if(document.height>window.innerHeight) w-=16; } return w; } // xClip, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xClip(e,t,r,b,l) { if(!(e=xGetElementById(e))) return; if(e.style) { if (xNum(l)) e.style.clip='rect('+t+'px '+r+'px '+b+'px '+l+'px)'; else e.style.clip='rect(0 '+parseInt(e.style.width)+'px '+parseInt(e.style.height)+'px 0)'; } } // xCollapsible, Copyright 2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xCollapsible(outerEle, bShow) // object prototype { // Constructor var container = xGetElementById(outerEle); if (!container) {return null;} var isUL = container.nodeName.toUpperCase() == 'UL'; var i, trg, aTgt = xGetElementsByTagName(isUL ? 'UL':'DIV', container); for (i = 0; i < aTgt.length; ++i) { trg = xPrevSib(aTgt[i]); if (trg && (isUL || trg.nodeName.charAt(0).toUpperCase() == 'H')) { aTgt[i].xTrgPtr = trg; aTgt[i].style.display = bShow ? 'block' : 'none'; trg.style.cursor = 'pointer'; trg.xTgtPtr = aTgt[i]; trg.onclick = trg_onClick; } } // Private function trg_onClick() { var tgt = this.xTgtPtr.style; if (tgt.display == 'none') { tgt.display = 'block'; } else { tgt.display = 'none'; } } // Public this.displayAll = function(bShow) { for (var i = 0; i < aTgt.length; ++i) { if (aTgt[i].xTrgPtr) { xDisplay(aTgt[i], bShow ? "block":"none"); } } }; // The unload listener is for IE's circular reference memory leak bug. this.onUnload = function() { if (!xIE4Up || !container || !aTgt) {return;} for (i = 0; i < aTgt.length; ++i) { trg = aTgt[i].xTrgPtr; if (trg) { if (trg.xTgtPtr) { trg.xTgtPtr.TrgPtr = null; trg.xTgtPtr = null; } trg.onclick = null; } } }; } // xColor, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xColor(e,s) { if(!(e=xGetElementById(e))) return ''; var c=''; if(e.style && xDef(e.style.color)) { if(xStr(s)) e.style.color=s; c=e.style.color; } return c; } // xCreateElement, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xCreateElement(sTag) { if (document.createElement) return document.createElement(sTag); else return null; } // xDef, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xDef() { for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;} return true; } // xDeg, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xDeg(rad) { return rad * (180 / Math.PI); } // xDeleteCookie, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xDeleteCookie(name, path) { if (xGetCookie(name)) { document.cookie = name + "=" + "; path=" + ((!path) ? "/" : path) + "; expires=" + new Date(0).toGMTString(); } } // xDisableDrag, Copyright 2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xDisableDrag(id, last) { if (!window._xDrgMgr) return; var ele = xGetElementById(id); ele.xDraggable = false; ele.xODS = null; ele.xOD = null; ele.xODE = null; xRemoveEventListener(ele, 'mousedown', _xOMD, false); if (_xDrgMgr.mm && last) { _xDrgMgr.mm = false; xRemoveEventListener(document, 'mousemove', _xOMM, false); } } // xDisplay, Copyright 2003,2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xDisplay(e,s) { if(!(e=xGetElementById(e))) return null; if(e.style && xDef(e.style.display)) { if (xStr(s)) e.style.display = s; return e.style.display; } return null; } // xEllipse, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xEllipse(e, xRadius, yRadius, radiusInc, totalTime, startAngle, stopAngle) { if (!(e=xGetElementById(e))) return; if (!e.timeout) e.timeout = 25; e.xA = xRadius; e.yA = yRadius; e.radiusInc = radiusInc; e.slideTime = totalTime; startAngle *= (Math.PI / 180); stopAngle *= (Math.PI / 180); var startTime = (startAngle * e.slideTime) / (stopAngle - startAngle); e.stopTime = e.slideTime + startTime; e.B = (stopAngle - startAngle) / e.slideTime; e.xD = xLeft(e) - Math.round(e.xA * Math.cos(e.B * startTime)); // center point e.yD = xTop(e) - Math.round(e.yA * Math.sin(e.B * startTime)); e.xTarget = Math.round(e.xA * Math.cos(e.B * e.stopTime) + e.xD); // end point e.yTarget = Math.round(e.yA * Math.sin(e.B * e.stopTime) + e.yD); var d = new Date(); e.C = d.getTime() - startTime; if (!e.moving) {e.stop=false; _xEllipse(e);} } function _xEllipse(e) { if (!(e=xGetElementById(e))) return; var now, t, newY, newX; now = new Date(); t = now.getTime() - e.C; if (e.stop) { e.moving = false; } else if (t < e.stopTime) { setTimeout("_xEllipse('"+e.id+"')", e.timeout); if (e.radiusInc) { e.xA += e.radiusInc; e.yA += e.radiusInc; } newX = Math.round(e.xA * Math.cos(e.B * t) + e.xD); newY = Math.round(e.yA * Math.sin(e.B * t) + e.yD); xMoveTo(e, newX, newY); e.moving = true; } else { if (e.radiusInc) { e.xTarget = Math.round(e.xA * Math.cos(e.B * e.slideTime) + e.xD); e.yTarget = Math.round(e.yA * Math.sin(e.B * e.slideTime) + e.yD); } xMoveTo(e, e.xTarget, e.yTarget); e.moving = false; } } // xEnableDrag, Copyright 2002,2003,2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL //// Private Data var _xDrgMgr = {ele:null, mm:false}; //// Public Functions function xEnableDrag(id,fS,fD,fE) { var ele = xGetElementById(id); ele.xDraggable = true; ele.xODS = fS; ele.xOD = fD; ele.xODE = fE; xAddEventListener(ele, 'mousedown', _xOMD, false); if (!_xDrgMgr.mm) { _xDrgMgr.mm = true; xAddEventListener(document, 'mousemove', _xOMM, false); } } //// Private Event Listeners function _xOMD(e) // drag start { var evt = new xEvent(e); var ele = evt.target; while(ele && !ele.xDraggable) { ele = xParent(ele); } if (ele) { xPreventDefault(e); ele.xDPX = evt.pageX; ele.xDPY = evt.pageY; _xDrgMgr.ele = ele; xAddEventListener(document, 'mouseup', _xOMU, false); if (ele.xODS) { ele.xODS(ele, evt.pageX, evt.pageY); } } } function _xOMM(e) // drag { var evt = new xEvent(e); if (_xDrgMgr.ele) { xPreventDefault(e); var ele = _xDrgMgr.ele; var dx = evt.pageX - ele.xDPX; var dy = evt.pageY - ele.xDPY; ele.xDPX = evt.pageX; ele.xDPY = evt.pageY; if (ele.xOD) { ele.xOD(ele, dx, dy); } else { xMoveTo(ele, xLeft(ele) + dx, xTop(ele) + dy); } } } function _xOMU(e) // drag end { if (_xDrgMgr.ele) { xPreventDefault(e); xRemoveEventListener(document, 'mouseup', _xOMU, false); if (_xDrgMgr.ele.xODE) { var evt = new xEvent(e); _xDrgMgr.ele.xODE(_xDrgMgr.ele, evt.pageX, evt.pageY); } _xDrgMgr.ele = null; } } // xEvalTextarea, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xEvalTextarea() { var f = document.createElement('FORM'); f.onsubmit = 'return false'; var t = document.createElement('TEXTAREA'); t.id='xDebugTA'; t.name='xDebugTA'; t.rows='20'; t.cols='60'; var b = document.createElement('INPUT'); b.type = 'button'; b.value = 'Evaluate'; b.onclick = function() {eval(this.form.xDebugTA.value);}; f.appendChild(t); f.appendChild(b); document.body.appendChild(f); } // xEvent, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xEvent(evt) // object prototype { var e = evt || window.event; if(!e) return; if(e.type) this.type = e.type; if(e.target) this.target = e.target; else if(e.srcElement) this.target = e.srcElement; // Section B if (e.relatedTarget) this.relatedTarget = e.relatedTarget; else if (e.type == 'mouseover' && e.fromElement) this.relatedTarget = e.fromElement; else if (e.type == 'mouseout') this.relatedTarget = e.toElement; // End Section B if(xOp6Dn) { this.pageX = e.clientX; this.pageY = e.clientY; } else if(xDef(e.pageX,e.pageY)) { this.pageX = e.pageX; this.pageY = e.pageY; } else if(xDef(e.clientX,e.clientY)) { this.pageX = e.clientX + xScrollLeft(); this.pageY = e.clientY + xScrollTop(); } // Section A if (xDef(e.offsetX,e.offsetY)) { this.offsetX = e.offsetX; this.offsetY = e.offsetY; } else if (xDef(e.layerX,e.layerY)) { this.offsetX = e.layerX; this.offsetY = e.layerY; } else { this.offsetX = this.pageX - xPageX(this.target); this.offsetY = this.pageY - xPageY(this.target); } // End Section A if (e.keyCode) { this.keyCode = e.keyCode; } // for moz/fb, if keyCode==0 use which else if (xDef(e.which) && e.type.indexOf('key')!=-1) { this.keyCode = e.which; } this.shiftKey = e.shiftKey; this.ctrlKey = e.ctrlKey; this.altKey = e.altKey; } // I need someone with IE/Mac to compare test snippets 1 and 2 in section A. // // Snippet 1 // if(xDef(e.offsetX,e.offsetY)) { // this.offsetX = e.offsetX; // this.offsetY = e.offsetY; // if (xIE4Up && xMac) { // this.offsetX += xScrollLeft(); // this.offsetY += xScrollTop(); // } // } // else if (xDef(e.layerX,e.layerY)) { // this.offsetX = e.layerX; // this.offsetY = e.layerY; // } // else { // this.offsetX = this.pageX - xPageX(this.target); // this.offsetY = this.pageY - xPageY(this.target); // } // // Snippet 2 // if (xDef(e.offsetX,e.offsetY) && !(xIE4Up && xMac)) { // this.offsetX = e.offsetX; // this.offsetY = e.offsetY; // } // else if (xDef(e.layerX,e.layerY)) { // this.offsetX = e.layerX; // this.offsetY = e.layerY; // } // else { // this.offsetX = this.pageX - xPageX(this.target); // this.offsetY = this.pageY - xPageY(this.target); // } // This was in section B: // if (e.relatedTarget) this.relatedTarget = e.relatedTarget; // else if (xIE4Up) { // if (e.type == 'mouseover') this.relatedTarget = e.fromElement; // else if (e.type == 'mouseout') this.relatedTarget = e.toElement; // } // changed to remove sniffer after discussion with Hallvord // Possible optimization: // if (e.keyCode) { this.keyCode = e.keyCode; } // for moz/fb, if keyCode==0 use which // else if (xDef(e.which) && e.type.indexOf('key')!=-1) { this.keyCode = e.which; } // // replace the above 2 lines with the following? // // this.keyCode = e.keyCode || e.which || 0; // xFenster, Copyright 2004-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xFenster(eleId, iniX, iniY, barId, resBtnId, maxBtnId) // object prototype { // Private Properties var me = this; var ele = xGetElementById(eleId); var rBtn = xGetElementById(resBtnId); var mBtn = xGetElementById(maxBtnId); var x, y, w, h, maximized = false; // Public Methods this.onunload = function() { if (xIE4Up) { // clear cir refs xDisableDrag(barId); xDisableDrag(rBtn); mBtn.onclick = ele.onmousedown = null; me = ele = rBtn = mBtn = null; } } this.paint = function() { xMoveTo(rBtn, xWidth(ele) - xWidth(rBtn), xHeight(ele) - xHeight(rBtn)); xMoveTo(mBtn, xWidth(ele) - xWidth(rBtn), 0); } // Private Event Listeners function barOnDrag(e, mdx, mdy) { xMoveTo(ele, xLeft(ele) + mdx, xTop(ele) + mdy); } function resOnDrag(e, mdx, mdy) { xResizeTo(ele, xWidth(ele) + mdx, xHeight(ele) + mdy); me.paint(); } function fenOnMousedown() { xZIndex(ele, xFenster.z++); } function maxOnClick() { if (maximized) { maximized = false; xResizeTo(ele, w, h); xMoveTo(ele, x, y); } else { w = xWidth(ele); h = xHeight(ele); x = xLeft(ele); y = xTop(ele); xMoveTo(ele, xScrollLeft(), xScrollTop()); maximized = true; xResizeTo(ele, xClientWidth(), xClientHeight()); } me.paint(); } // Constructor Code xFenster.z++; xMoveTo(ele, iniX, iniY); this.paint(); xEnableDrag(barId, null, barOnDrag, null); xEnableDrag(rBtn, null, resOnDrag, null); mBtn.onclick = maxOnClick; ele.onmousedown = fenOnMousedown; xShow(ele); } // end xFenster object prototype xFenster.z = 0; // xFenster static property // xFirstChild, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xFirstChild(e, t) { var c = e ? e.firstChild : null; if (t) while (c && c.nodeName != t) { c = c.nextSibling; } else while (c && c.nodeType != 1) { c = c.nextSibling; } return c; } // xGetComputedStyle, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetComputedStyle(oEle, sProp, bInt) { var s, p = 'undefined'; var dv = document.defaultView; if(dv && dv.getComputedStyle){ s = dv.getComputedStyle(oEle,''); if (s) p = s.getPropertyValue(sProp); } else if(oEle.currentStyle) { // convert css property name to object property name for IE var a = sProp.split('-'); sProp = a[0]; for (var i=1; i<a.length; ++i) { c = a[i].charAt(0); sProp += a[i].replace(c, c.toUpperCase()); } p = oEle.currentStyle[sProp]; } else return null; return bInt ? (parseInt(p) || 0) : p; } // xGetCookie, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetCookie(name) { var value=null, search=name+"="; if (document.cookie.length > 0) { var offset = document.cookie.indexOf(search); if (offset != -1) { offset += search.length; var end = document.cookie.indexOf(";", offset); if (end == -1) end = document.cookie.length; value = unescape(document.cookie.substring(offset, end)); } } return value; } // xGetElementById, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetElementById(e) { if(typeof(e)!='string') return e; if(document.getElementById) e=document.getElementById(e); else if(document.all) e=document.all[e]; else e=null; return e; } // xGetElementsByAttribute, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetElementsByAttribute(sTag, sAtt, sRE, fn) { var a, list, found = new Array(), re = new RegExp(sRE, 'i'); list = xGetElementsByTagName(sTag); for (var i = 0; i < list.length; ++i) { a = list[i].getAttribute(sAtt); if (!a) {a = list[i][sAtt];} if (typeof(a)=='string' && a.search(re) != -1) { found[found.length] = list[i]; if (fn) fn(list[i]); } } return found; } // xGetElementsByClassName, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetElementsByClassName(c,p,t,f) { var found = new Array(); var re = new RegExp('\\b'+c+'\\b', 'i'); var list = xGetElementsByTagName(t, p); for (var i = 0; i < list.length; ++i) { if (list[i].className && list[i].className.search(re) != -1) { found[found.length] = list[i]; if (f) f(list[i]); } } return found; } // xGetElementsByTagName, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetElementsByTagName(t,p) { var list = null; t = t || '*'; p = p || document; if (xIE4 || xIE5) { if (t == '*') list = p.all; else list = p.all.tags(t); } else if (p.getElementsByTagName) list = p.getElementsByTagName(t); return list || new Array(); } // xGetElePropsArray, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetElePropsArray(ele, eleName) { var u = 'undefined'; var i = 0, a = new Array(); nv('Element', eleName); nv('id', (xDef(ele.id) ? ele.id : u)); nv('tagName', (xDef(ele.tagName) ? ele.tagName : u)); nv('xWidth()', xWidth(ele)); nv('style.width', (xDef(ele.style) && xDef(ele.style.width) ? ele.style.width : u)); nv('offsetWidth', (xDef(ele.offsetWidth) ? ele.offsetWidth : u)); nv('scrollWidth', (xDef(ele.offsetWidth) ? ele.offsetWidth : u)); nv('clientWidth', (xDef(ele.clientWidth) ? ele.clientWidth : u)); nv('xHeight()', xHeight(ele)); nv('style.height', (xDef(ele.style) && xDef(ele.style.height) ? ele.style.height : u)); nv('offsetHeight', (xDef(ele.offsetHeight) ? ele.offsetHeight : u)); nv('scrollHeight', (xDef(ele.offsetHeight) ? ele.offsetHeight : u)); nv('clientHeight', (xDef(ele.clientHeight) ? ele.clientHeight : u)); nv('xLeft()', xLeft(ele)); nv('style.left', (xDef(ele.style) && xDef(ele.style.left) ? ele.style.left : u)); nv('offsetLeft', (xDef(ele.offsetLeft) ? ele.offsetLeft : u)); nv('style.pixelLeft', (xDef(ele.style) && xDef(ele.style.pixelLeft) ? ele.style.pixelLeft : u)); nv('xTop()', xTop(ele)); nv('style.top', (xDef(ele.style) && xDef(ele.style.top) ? ele.style.top : u)); nv('offsetTop', (xDef(ele.offsetTop) ? ele.offsetTop : u)); nv('style.pixelTop', (xDef(ele.style) && xDef(ele.style.pixelTop) ? ele.style.pixelTop : u)); nv('', ''); nv('xGetComputedStyle()', ''); nv('top'); nv('right'); nv('bottom'); nv('left'); nv('width'); nv('height'); nv('color'); nv('background-color'); nv('font-family'); nv('font-size'); nv('text-align'); nv('line-height'); nv('content'); nv('float'); nv('clear'); nv('margin'); nv('padding'); nv('padding-top'); nv('padding-right'); nv('padding-bottom'); nv('padding-left'); nv('border-top-width'); nv('border-right-width'); nv('border-bottom-width'); nv('border-left-width'); nv('position'); nv('overflow'); nv('visibility'); nv('display'); nv('z-index'); nv('clip'); nv('cursor'); return a; function nv(name, value) { a[i] = new Object(); a[i].name = name; a[i].value = typeof(value)=='undefined' ? xGetComputedStyle(ele, name) : value; ++i; } } // xGetElePropsString, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetElePropsString(ele, eleName, newLine) { var s = '', a = xGetElePropsArray(ele, eleName); for (var i = 0; i < a.length; ++i) { s += a[i].name + ' = ' + a[i].value + (newLine || '\n'); } return s; } // xGetURLArguments, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xGetURLArguments() { var idx = location.href.indexOf('?'); var params = new Array(); if (idx != -1) { var pairs = location.href.substring(idx+1, location.href.length).split('&'); for (var i=0; i<pairs.length; i++) { nameVal = pairs[i].split('='); params[i] = nameVal[1]; params[nameVal[0]] = nameVal[1]; } } return params; } // xHasPoint, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xHasPoint(e,x,y,t,r,b,l) { if (!xNum(t)){t=r=b=l=0;} else if (!xNum(r)){r=b=l=t;} else if (!xNum(b)){l=r; b=t;} var eX = xPageX(e), eY = xPageY(e); return (x >= eX + l && x <= eX + xWidth(e) - r && y >= eY + t && y <= eY + xHeight(e) - b ); } // xHeight, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xHeight(e,h) { if(!(e=xGetElementById(e))) return 0; if (xNum(h)) { if (h<0) h = 0; else h=Math.round(h); } else h=-1; var css=xDef(e.style); if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') { h = xClientHeight(); } else if(css && xDef(e.offsetHeight) && xStr(e.style.height)) { if(h>=0) { var pt=0,pb=0,bt=0,bb=0; if (document.compatMode=='CSS1Compat') { var gcs = xGetComputedStyle; pt=gcs(e,'padding-top',1); if (pt !== null) { pb=gcs(e,'padding-bottom',1); bt=gcs(e,'border-top-width',1); bb=gcs(e,'border-bottom-width',1); } // Should we try this as a last resort? // At this point getComputedStyle and currentStyle do not exist. else if(xDef(e.offsetHeight,e.style.height)){ e.style.height=h+'px'; pt=e.offsetHeight-h; } } h-=(pt+pb+bt+bb); if(isNaN(h)||h<0) return; else e.style.height=h+'px'; } h=e.offsetHeight; } else if(css && xDef(e.style.pixelHeight)) { if(h>=0) e.style.pixelHeight=h; h=e.style.pixelHeight; } return h; } // xHex, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xHex(n, digits, prefix) { var p = '', n = Math.ceil(n); if (prefix) p = prefix; n = n.toString(16); for (var i=0; i < digits - n.length; ++i) { p += '0'; } return p + n; } // xHide, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xHide(e){return xVisibility(e,0);} // xImgAsyncWait, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xImgAsyncWait(fnStatus, fnInit, fnError, sErrorImg, sAbortImg, imgArray) { var i, imgs = imgArray || document.images; for (i = 0; i < imgs.length; ++i) { imgs[i].onload = imgOnLoad; imgs[i].onerror = imgOnError; imgs[i].onabort = imgOnAbort; } xIAW.fnStatus = fnStatus; xIAW.fnInit = fnInit; xIAW.fnError = fnError; xIAW.imgArray = imgArray; xIAW(); function imgOnLoad() { this.wasLoaded = true; } function imgOnError() { if (sErrorImg && !this.wasError) { this.src = sErrorImg; } this.wasError = true; } function imgOnAbort() { if (sAbortImg && !this.wasAborted) { this.src = sAbortImg; } this.wasAborted = true; } } // end xImgAsyncWait() // Don't call xIAW() directly. It is only called from xImgAsyncWait(). function xIAW() { var me = arguments.callee; if (!me) { return; // I could have used a global object instead of callee } var i, imgs = me.imgArray ? me.imgArray : document.images; var c = 0, e = 0, a = 0, n = imgs.length; for (i = 0; i < n; ++i) { if (imgs[i].wasError) { ++e; } else if (imgs[i].wasAborted) { ++a; } else if (imgs[i].complete || imgs[i].wasLoaded) { ++c; } } if (me.fnStatus) { me.fnStatus(n, c, e, a); } if (c + e + a == n) { if ((e || a) && me.fnError) { me.fnError(n, c, e, a); } else if (me.fnInit) { me.fnInit(); } } else setTimeout('xIAW()', 250); } // end xIAW() // xImgRollSetup, Copyright 2002,2003,2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xImgRollSetup(p,s,x) { var ele, id; for (var i=3; i<arguments.length; ++i) { id = arguments[i]; if (ele = xGetElementById(id)) { ele.xIOU = p + id + x; ele.xIOO = new Image(); ele.xIOO.src = p + id + s + x; ele.onmouseout = imgOnMouseout; ele.onmouseover = imgOnMouseover; } } function imgOnMouseout(e) { if (this.xIOU) { this.src = this.xIOU; } } function imgOnMouseover(e) { if (this.xIOO && this.xIOO.complete) { this.src = this.xIOO.src; } } } // xInclude, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xInclude(url1, url2, etc) { if (document.getElementById || document.all || document.layers) { // minimum dhtml support required var h, f, i, j, a, n, inc; for (var i=0; i<arguments.length; ++i) { // loop thru all the url arguments h = ''; // html (script or link element) to be written into the document f = arguments[i].toLowerCase(); // f is current url in lowercase inc = false; // if true the file has already been included // Extract the filename from the url // Should I extract the file name? What if there are two files with the same name // but in different directories? If I don't extract it what about: '../foo.js' and '../../foo.js' ? a = f.split('/'); n = a[a.length-1]; // the file name // loop thru the list to see if this file has already been included for (j = 0; j < xIncludeList.length; ++j) { if (n == xIncludeList[j]) { // should I use '==' or a string cmp func? inc = true; break; } } if (!inc) { // if the file has not yet been included xIncludeList[xIncludeList.length] = n; // add it to the list of included files // is it a .js file? if (f.indexOf('.js') != -1) { if (xNN4) { // if nn4 use nn4 versions of certain lib files var c='x_core', e='x_event', d='x_dom', n='_n4'; if (f.indexOf(c) != -1) { f = f.replace(c, c+n); } else if (f.indexOf(e) != -1) { f = f.replace(e, e+n); } else if (f.indexOf(d) != -1) { f = f.replace(d, d+n); } } h = "<script type='text/javascript' src='" + f + "'></script>"; } // else is it a .css file? else if (f.indexOf('.css') != -1) { // CSS file h = "<link rel='stylesheet' type='text/css' href='" + f + "'>"; } // write the link or script element into the document if (h.length) { document.writeln(h); } } // end if (!inc) } // end outer for return true; } // end if (min dhtml support) return false; } // xInnerHtml, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xInnerHtml(e,h) { if(!(e=xGetElementById(e)) || !xStr(e.innerHTML)) return null; var s = e.innerHTML; if (xStr(h)) {e.innerHTML = h;} return s; } // xIntersection, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xIntersection(e1, e2, o) { var ix1, iy2, iw, ih, intersect = true; var e1x1 = xPageX(e1); var e1x2 = e1x1 + xWidth(e1); var e1y1 = xPageY(e1); var e1y2 = e1y1 + xHeight(e1); var e2x1 = xPageX(e2); var e2x2 = e2x1 + xWidth(e2); var e2y1 = xPageY(e2); var e2y2 = e2y1 + xHeight(e2); // horizontal if (e1x1 <= e2x1) { ix1 = e2x1; if (e1x2 < e2x1) intersect = false; else iw = Math.min(e1x2, e2x2) - e2x1; } else { ix1 = e1x1; if (e2x2 < e1x1) intersect = false; else iw = Math.min(e1x2, e2x2) - e1x1; } // vertical if (e1y2 >= e2y2) { iy2 = e2y2; if (e1y1 > e2y2) intersect = false; else ih = e2y2 - Math.max(e1y1, e2y1); } else { iy2 = e1y2; if (e2y1 > e1y2) intersect = false; else ih = e1y2 - Math.max(e1y1, e2y1); } // intersected rectangle if (intersect && typeof(o)=='object') { o.x = ix1; o.y = iy2 - ih; o.w = iw; o.h = ih; } return intersect; } // xLeft, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xLeft(e, iX) { if(!(e=xGetElementById(e))) return 0; var css=xDef(e.style); if (css && xStr(e.style.left)) { if(xNum(iX)) e.style.left=iX+'px'; else { iX=parseInt(e.style.left); if(isNaN(iX)) iX=0; } } else if(css && xDef(e.style.pixelLeft)) { if(xNum(iX)) e.style.pixelLeft=iX; else iX=e.style.pixelLeft; } return iX; } // xLinearScale, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xLinearScale(val,iL,iH,oL,oH) { var m=(oH-oL)/(iH-iL); var b=oL-(iL*m); return m*val+b; } // xLoadScript, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xLoadScript(url) { if (document.createElement && document.getElementsByTagName) { var s = document.createElement('script'); var h = document.getElementsByTagName('head'); if (s && h.length) { s.src = url; h[0].appendChild(s); } } } // xMenu1, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xMenu1(triggerId, menuId, mouseMargin, openEvent) { var isOpen = false; var trg = xGetElementById(triggerId); var mnu = xGetElementById(menuId); if (trg && mnu) { xAddEventListener(trg, openEvent, onOpen, false); } function onOpen() { if (!isOpen) { xMoveTo(mnu, xPageX(trg), xPageY(trg) + xHeight(trg)); xShow(mnu); xAddEventListener(document, 'mousemove', onMousemove, false); isOpen = true; } } function onMousemove(ev) { var e = new xEvent(ev); if (!xHasPoint(mnu, e.pageX, e.pageY, -mouseMargin) && !xHasPoint(trg, e.pageX, e.pageY, -mouseMargin)) { xHide(mnu); xRemoveEventListener(document, 'mousemove', onMousemove, false); isOpen = false; } } } // end xMenu1 // xMenu1A, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xMenu1A(triggerId, menuId, mouseMargin, slideTime, openEvent) { var isOpen = false; var trg = xGetElementById(triggerId); var mnu = xGetElementById(menuId); if (trg && mnu) { xHide(mnu); xAddEventListener(trg, openEvent, onOpen, false); } function onOpen() { if (!isOpen) { xMoveTo(mnu, xPageX(trg), xPageY(trg)); xShow(mnu); xSlideTo(mnu, xPageX(trg), xPageY(trg) + xHeight(trg), slideTime); xAddEventListener(document, 'mousemove', onMousemove, false); isOpen = true; } } function onMousemove(ev) { var e = new xEvent(ev); if (!xHasPoint(mnu, e.pageX, e.pageY, -mouseMargin) && !xHasPoint(trg, e.pageX, e.pageY, -mouseMargin)) { xRemoveEventListener(document, 'mousemove', onMousemove, false); xSlideTo(mnu, xPageX(trg), xPageY(trg), slideTime); setTimeout("xHide('" + menuId + "')", slideTime); isOpen = false; } } } // end xMenu1A // xMenu1B, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xMenu1B(openTriggerId, closeTriggerId, menuId, slideTime, bOnClick) { xMenu1B.instances[xMenu1B.instances.length] = this; var isOpen = false; var oTrg = xGetElementById(openTriggerId); var cTrg = xGetElementById(closeTriggerId); var mnu = xGetElementById(menuId); if (oTrg && cTrg && mnu) { xHide(mnu); if (bOnClick) oTrg.onclick = openOnEvent; else oTrg.onmouseover = openOnEvent; cTrg.onclick = closeOnClick; } function openOnEvent() { if (!isOpen) { for (var i = 0; i < xMenu1B.instances.length; ++i) { xMenu1B.instances[i].close(); } xMoveTo(mnu, xPageX(oTrg), xPageY(oTrg)); xShow(mnu); xSlideTo(mnu, xPageX(oTrg), xPageY(oTrg) + xHeight(oTrg), slideTime); isOpen = true; } } function closeOnClick() { if (isOpen) { xSlideTo(mnu, xPageX(oTrg), xPageY(oTrg), slideTime); setTimeout("xHide('" + menuId + "')", slideTime); isOpen = false; } } this.close = function() { closeOnClick(); } } // end xMenu1B xMenu1B.instances = new Array(); // static member of xMenu1B // xMenu5, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xMenu5(idUL, btnClass, idAutoOpen) // object prototype { // Constructor var i, ul, btns, mnu = xGetElementById(idUL); btns = xGetElementsByClassName(btnClass, mnu, 'DIV'); for (i = 0; i < btns.length; ++i) { ul = xNextSib(btns[i], 'UL'); btns[i].xClpsTgt = ul; btns[i].onclick = btn_onClick; set_display(btns[i], 0); } if (idAutoOpen) { var e = xGetElementById(idAutoOpen); while (e && e != mnu) { if (e.xClpsTgt) set_display(e, 1); while (e && e != mnu && e.nodeName != 'LI') e = e.parentNode; e = e.parentNode; // UL while (e && !e.xClpsTgt) e = xPrevSib(e); } } // Private function btn_onClick() { var thisLi, fc, pUl; if (this.xClpsTgt.style.display == 'none') { set_display(this, 1); // get this label's parent LI var li = this.parentNode; thisLi = li; pUl = li.parentNode; // get this LI's parent UL li = xFirstChild(pUl); // get the UL's first LI child // close all labels' ULs on this level except for thisLI's label while (li) { if (li != thisLi) { fc = xFirstChild(li); if (fc && fc.xClpsTgt) { set_display(fc, 0); } } li = xNextSib(li); } } else { set_display(this, 0); } } function set_display(ele, bBlock) { if (bBlock) { ele.xClpsTgt.style.display = 'block'; ele.innerHTML = '-'; } else { ele.xClpsTgt.style.display = 'none'; ele.innerHTML = '+'; } } // Public this.onUnload = function() { for (i = 0; i < btns.length; ++i) { btns[i].xClpsTgt = null; btns[i].onclick = null; } } } // end xMenu5 prototype // xMoveTo, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xMoveTo(e,x,y) { xLeft(e,x); xTop(e,y); } // xName, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xName(e) { if (!e) return e; else if (e.id && e.id != "") return e.id; else if (e.name && e.name != "") return e.name; else if (e.nodeName && e.nodeName != "") return e.nodeName; else if (e.tagName && e.tagName != "") return e.tagName; else return e; } // xNextSib, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xNextSib(e,t) { var s = e ? e.nextSibling : null; if (t) while (s && s.nodeName != t) { s = s.nextSibling; } else while (s && s.nodeType != 1) { s = s.nextSibling; } return s; } // xNum, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xNum() { for(var i=0; i<arguments.length; ++i){if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;} return true; } // xOffsetLeft, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xOffsetLeft(e) { if (!(e=xGetElementById(e))) return 0; if (xDef(e.offsetLeft)) return e.offsetLeft; else return 0; } // xOffsetTop, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xOffsetTop(e) { if (!(e=xGetElementById(e))) return 0; if (xDef(e.offsetTop)) return e.offsetTop; else return 0; } // xPad, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xPad(s,len,c,left) { if(typeof s != 'string') s=s+''; if(left) {for(var i=s.length; i<len; ++i) s=c+s;} else {for (var i=s.length; i<len; ++i) s+=c;} return s; } // xPageX, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xPageX(e) { if (!(e=xGetElementById(e))) return 0; var x = 0; while (e) { if (xDef(e.offsetLeft)) x += e.offsetLeft; e = xDef(e.offsetParent) ? e.offsetParent : null; } return x; } // xPageY, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xPageY(e) { if (!(e=xGetElementById(e))) return 0; var y = 0; while (e) { if (xDef(e.offsetTop)) y += e.offsetTop; e = xDef(e.offsetParent) ? e.offsetParent : null; } // if (xOp7Up) return y - document.body.offsetTop; // v3.14, temporary hack for opera bug 130324 (reported 1nov03) return y; } // xParaEq, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL // Animation with Parametric Equations function xParaEq(e, xExpr, yExpr, totalTime) { if (!(e=xGetElementById(e))) return; e.t = 0; e.tStep = .008; if (!e.timeout) e.timeout = 25; e.xExpr = xExpr; e.yExpr = yExpr; e.slideTime = totalTime; var d = new Date(); e.C = d.getTime(); if (!e.moving) {e.stop=false; _xParaEq(e);} } function _xParaEq(e) { if (!(e=xGetElementById(e))) return; var now = new Date(); var et = now.getTime() - e.C; e.t += e.tStep; t = e.t; if (e.stop) { e.moving = false; } else if (!e.slideTime || et < e.slideTime) { setTimeout("_xParaEq('"+e.id+"')", e.timeout); var p = xParent(e), centerX, centerY; centerX = (xWidth(p)/2)-(xWidth(e)/2); centerY = (xHeight(p)/2)-(xHeight(e)/2); e.xTarget = Math.round((eval(e.xExpr) * centerX) + centerX) + xScrollLeft(p); e.yTarget = Math.round((eval(e.yExpr) * centerY) + centerY) + xScrollTop(p); xMoveTo(e, e.xTarget, e.yTarget); e.moving = true; } else { e.moving = false; } } // xParent, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xParent(e, bNode) { if (!(e=xGetElementById(e))) return null; var p=null; if (!bNode && xDef(e.offsetParent)) p=e.offsetParent; else if (xDef(e.parentNode)) p=e.parentNode; else if (xDef(e.parentElement)) p=e.parentElement; return p; } // xParentChain, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xParentChain(e,delim,bNode) { if (!(e=xGetElementById(e))) return; var lim=100, s = "", d = delim || "\n"; while(e) { s += xName(e) + ', ofsL:'+e.offsetLeft + ', ofsT:'+e.offsetTop + d; e = xParent(e,bNode); if (!lim--) break; } return s; } // xPopup, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xPopup(sTmrType, uTimeout, sPos1, sPos2, sPos3, sStyle, sId, sUrl) { if (document.getElementById && document.createElement && document.body && document.body.appendChild) { // create popup element //var e = document.createElement('DIV'); var e = document.createElement('IFRAME'); this.ele = e; e.id = sId; e.style.position = 'absolute'; e.className = sStyle; //e.innerHTML = sHtml; e.src = sUrl; document.body.appendChild(e); xShow(e); this.tmr = xTimer.set(sTmrType, this, sTmrType, uTimeout); // init this.open = false; this.margin = 10; this.pos1 = sPos1; this.pos2 = sPos2; this.pos3 = sPos3; this.slideTime = 500; // slide time in ms this.interval(); } } // end xPopup // methods xPopup.prototype.show = function() { this.interval(); }; xPopup.prototype.hide = function() { this.timeout(); }; // timer event listeners xPopup.prototype.timeout = function() // hide popup { if (this.open) { var e = this.ele; var pos = xCardinalPosition(e, this.pos3, this.margin, true); xSlideTo(e, pos.x, pos.y, this.slideTime); setTimeout("xHide('" + e.id + "')", this.slideTime); this.open = false; } }; xPopup.prototype.interval = function() // size, position and show popup { if (!this.open) { var e = this.ele; var pos = xCardinalPosition(e, this.pos1, this.margin, true); xMoveTo(e, pos.x, pos.y); xShow(e); pos = xCardinalPosition(e, this.pos2, this.margin, false); xSlideTo(e, pos.x, pos.y, this.slideTime); this.open = true; } }; // xPreventDefault, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xPreventDefault(e) { if (e && e.preventDefault) e.preventDefault(); else if (window.event) window.event.returnValue = false; } // xPrevSib, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xPrevSib(e,t) { var s = e ? e.previousSibling : null; if (t) while(s && s.nodeName != t) {s=s.previousSibling;} else while(s && s.nodeType != 1) {s=s.previousSibling;} return s; } // xRad, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xRad(deg) { return deg*(Math.PI/180); } // xRemoveEventListener, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xRemoveEventListener(e,eT,eL,cap) { if(!(e=xGetElementById(e))) return; eT=eT.toLowerCase(); if((!xIE4Up && !xOp7Up) && e==window) { if(eT=='resize') { window.xREL=null; return; } if(eT=='scroll') { window.xSEL=null; return; } } var eh='e.on'+eT+'=null'; if(e.removeEventListener) e.removeEventListener(eT,eL,cap); else if(e.detachEvent) e.detachEvent('on'+eT,eL); else eval(eh); } // xResizeTo, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xResizeTo(e,w,h) { xWidth(e,w); xHeight(e,h); } // xScrollLeft, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xScrollLeft(e, bWin) { var offset=0; if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') { var w = window; if (bWin && e) w = e; if(w.document.documentElement && w.document.documentElement.scrollLeft) offset=w.document.documentElement.scrollLeft; else if(w.document.body && xDef(w.document.body.scrollLeft)) offset=w.document.body.scrollLeft; } else { e = xGetElementById(e); if (e && xNum(e.scrollLeft)) offset = e.scrollLeft; } return offset; } // xScrollTop, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xScrollTop(e, bWin) { var offset=0; if (!xDef(e) || bWin || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') { var w = window; if (bWin && e) w = e; if(w.document.documentElement && w.document.documentElement.scrollTop) offset=w.document.documentElement.scrollTop; else if(w.document.body && xDef(w.document.body.scrollTop)) offset=w.document.body.scrollTop; } else { e = xGetElementById(e); if (e && xNum(e.scrollTop)) offset = e.scrollTop; } return offset; } // xSelect, Copyright 2004-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xSelect(sId, fnSubOnChange) { //// Properties this.ready = false; //// Constructor // Check for required browser objects var s0 = xGetElementById(sId); if (!s0 || !s0.firstChild || !s0.nodeName || !document.createElement || !s0.form || !s0.form.appendChild) { return; } // Create main category SELECT element var s1 = document.createElement('SELECT'); s1.id = sId + '_main'; s1.display = 'block'; // for opera bug? s1.style.position = 'absolute'; s1.xSelObj = this; s1.xSelData = new Array(); // append s1 to s0's form s0.form.appendChild(s1); // Iterate thru s0 and fill array. // For each OPTGROUP, a[og][0] == OPTGROUP label, and... // a[og][n] = innerHTML of OPTION n. var ig=0, io, op, og, a = s1.xSelData; og = s0.firstChild; while (og) { if (og.nodeName.toLowerCase() == 'optgroup') { io = 0; a[ig] = new Array(); a[ig][io] = og.label; op = og.firstChild; while (op) { if (op.nodeName.toLowerCase() == 'option') { io++; a[ig][io] = op.innerHTML; } op = op.nextSibling; } ig++; } og = og.nextSibling; } // in s1 insert a new OPTION for each OPTGROUP in s0 for (ig=0; ig<a.length; ++ig) { op = new Option(a[ig][0]); s1.options[ig] = op; } // Create sub-category SELECT element var s2 = document.createElement('SELECT'); s2.id = sId + '_sub'; s2.display = 'block'; // for opera bug? s2.style.position = 'absolute'; s2.xSelMain = s1; s1.xSelSub = s2; // append s2 to s0's form s0.form.appendChild(s2); // Add event listeners s1.onchange = xSelectMain_OnChange; s2.onchange = fnSubOnChange; // Hide s0. Position and show s1 where s0 was. // Position and show s2 to the right of s1. xHide(s0); //alert(s1.offsetParent.nodeName + '\n' + xPageX(s0) + ', ' + xPageY(s0) + '\n' + xOffsetLeft(s0) + ', ' + xOffsetTop(s0));////////// xMoveTo(s1, xOffsetLeft(s0), xOffsetTop(s0)); // xMoveTo(s1, xOffsetLeft(s0), xPageY(s0)); // xMoveTo(s1, s0.offsetLeft, xPageY(s0)); // xMoveTo(s1, s0.offsetLeft, s0.offsetTop); xShow(s1); xMoveTo(s2, xOffsetLeft(s0) + xWidth(s1), xOffsetTop(s0)); // xMoveTo(s2, s0.offsetLeft + xWidth(s1), xPageY(s0)); // xMoveTo(s2, s0.offsetLeft + xWidth(s1), s0.offsetTop); xShow(s2); // Initialize s2 s1.onchange(); // Ready to rock! this.ready = true; } // end xSelect object prototype function xSelectMain_OnChange() { var io, s2 = this.xSelSub; // clear existing for (io=0; io<s2.options.length; ++io) { s2.options[io] = null; } // insert new var a = this.xSelData, ig = this.selectedIndex; for (io=1; io<a[ig].length; ++io) { op = new Option(a[ig][io]); s2.options[io-1] = op; } } // xSetCookie, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xSetCookie(name, value, expire, path) { document.cookie = name + "=" + escape(value) + ((!expire) ? "" : ("; expires=" + expire.toGMTString())) + "; path=" + ((!path) ? "/" : path); } // xSetIETitle, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xSetIETitle() { if (xIE4Up) { var i = xUA.indexOf('msie') + 1; var v = xUA.substr(i + 4, 3); document.title = 'IE ' + v + ' - ' + document.title; } } // xShow, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xShow(e) {return xVisibility(e,1);} // xSlideCornerTo, Copyright 2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xSlideCornerTo(e, corner, targetX, targetY, totalTime) { if (!(e=xGetElementById(e))) return; if (!e.timeout) e.timeout = 25; e.xT = targetX; e.yT = targetY; e.slideTime = totalTime; e.corner = corner.toLowerCase(); e.stop = false; switch(e.corner) { case 'nw': e.xA = e.xT - xLeft(e); e.yA = e.yT - xTop(e); e.xD = xLeft(e); e.yD = xTop(e); break; case 'sw': e.xA = e.xT - xLeft(e); e.yA = e.yT - (xTop(e) + xHeight(e)); e.xD = xLeft(e); e.yD = xTop(e) + xHeight(e); break; case 'ne': e.xA = e.xT - (xLeft(e) + xWidth(e)); e.yA = e.yT - xTop(e); e.xD = xLeft(e) + xWidth(e); e.yD = xTop(e); break; case 'se': e.xA = e.xT - (xLeft(e) + xWidth(e)); e.yA = e.yT - (xTop(e) + xHeight(e)); e.xD = xLeft(e) + xWidth(e); e.yD = xTop(e) + xHeight(e); break; default: alert("xSlideCornerTo: Invalid corner"); return; } e.B = Math.PI / ( 2 * e.slideTime ); var d = new Date(); e.C = d.getTime(); if (!e.moving) _xSlideCornerTo(e); } function _xSlideCornerTo(e) { if (!(e=xGetElementById(e))) return; var now, seX, seY; now = new Date(); t = now.getTime() - e.C; if (e.stop) { e.moving = false; e.stop = false; return; } else if (t < e.slideTime) { setTimeout("_xSlideCornerTo('"+e.id+"')", e.timeout); s = Math.sin( e.B * t ); newX = Math.round(e.xA * s + e.xD); newY = Math.round(e.yA * s + e.yD); } else { newX = e.xT; newY = e.yT; } seX = xLeft(e) + xWidth(e); seY = xTop(e) + xHeight(e); switch(e.corner) { case 'nw': xMoveTo(e, newX, newY); xResizeTo(e, seX - xLeft(e), seY - xTop(e)); break; case 'sw': if (e.xT != xLeft(e)) { xLeft(e, newX); xWidth(e, seX - xLeft(e)); } xHeight(e, newY - xTop(e)); break; case 'ne': xWidth(e, newX - xLeft(e)); if (e.yT != xTop(e)) { xTop(e, newY); xHeight(e, seY - xTop(e)); } break; case 'se': xWidth(e, newX - xLeft(e)); xHeight(e, newY - xTop(e)); break; default: e.stop = true; } //window.status = ('Target: ' + e.xT + ', ' + e.yT);//////debug/////// // xClip(e, 'auto'); // ?????is this needed? it was used in the original CBE method????? e.moving = true; if (t >= e.slideTime) { e.moving = false; } } // xSlideTo, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xSlideTo(e, x, y, uTime) { if (!(e=xGetElementById(e))) return; if (!e.timeout) e.timeout = 25; e.xTarget = x; e.yTarget = y; e.slideTime = uTime; e.stop = false; e.yA = e.yTarget - xTop(e); e.xA = e.xTarget - xLeft(e); // A = distance if (e.slideLinear) e.B = 1/e.slideTime; else e.B = Math.PI / (2 * e.slideTime); // B = period e.yD = xTop(e); e.xD = xLeft(e); // D = initial position var d = new Date(); e.C = d.getTime(); if (!e.moving) _xSlideTo(e); } function _xSlideTo(e) { if (!(e=xGetElementById(e))) return; var now, s, t, newY, newX; now = new Date(); t = now.getTime() - e.C; if (e.stop) { e.moving = false; } else if (t < e.slideTime) { setTimeout("_xSlideTo('"+e.id+"')", e.timeout); if (e.slideLinear) s = e.B * t; else s = Math.sin(e.B * t); newX = Math.round(e.xA * s + e.xD); newY = Math.round(e.yA * s + e.yD); xMoveTo(e, newX, newY); e.moving = true; } else { xMoveTo(e, e.xTarget, e.yTarget); e.moving = false; } } // xStopPropagation, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xStopPropagation(evt) { if (evt && evt.stopPropagation) evt.stopPropagation(); else if (window.event) window.event.cancelBubble = true; } // xStr, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xStr(s) { for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])!='string') return false;} return true; } // xTableCellVisibility, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTableCellVisibility(bShow, sec, nRow, nCol) { sec = xGetElementById(sec); if (sec && nRow < sec.rows.length && nCol < sec.rows[nRow].cells.length) { sec.rows[nRow].cells[nCol].style.visibility = bShow ? 'visible' : 'hidden'; } } // xTableColDisplay, Copyright 2004-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTableColDisplay(bShow, sec, nCol) { var r; sec = xGetElementById(sec); if (sec && nCol < sec.rows[0].cells.length) { for (r = 0; r < sec.rows.length; ++r) { sec.rows[r].cells[nCol].style.display = bShow ? '' : 'none'; } } } // xTableCursor, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTableCursor(id, inh, def, hov, sel) // object prototype { var tbl = xGetElementById(id); if (tbl) { xTableIterate(tbl, init); } function init(obj, isRow) { if (isRow) { obj.className = def; obj.onmouseover = trOver; obj.onmouseout = trOut; } else { obj.className = inh; obj.onmouseover = tdOver; obj.onmouseout = tdOut; } } this.unload = function() { xTableIterate(tbl, done); }; function done(o) { o.onmouseover = o.onmouseout = null; } function trOver() { this.className = hov; } function trOut() { this.className = def; } function tdOver() { this.className = sel; } function tdOut() { this.className = inh; } } // xTableIterate, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTableIterate(sec, fnCallback, data) { var r, c; sec = xGetElementById(sec); if (!sec || !fnCallback) { return; } for (r = 0; r < sec.rows.length; ++r) { if (false == fnCallback(sec.rows[r], true, r, c, data)) { return; } for (c = 0; c < sec.rows[r].cells.length; ++c) { if (false == fnCallback(sec.rows[r].cells[c], false, r, c, data)) { return; } } } } // xTableRowDisplay, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTableRowDisplay(bShow, sec, nRow) { sec = xGetElementById(sec); if (sec && nRow < sec.rows.length) { sec.rows[nRow].style.display = bShow ? '' : 'none'; } } // xTabPanelGroup, Copyright 2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTabPanelGroup(id, w, h, th, clsTP, clsTG, clsTD, clsTS) // object prototype { // Private Methods function onClick() //r7 { paint(this); return false; } function onFocus() //r7 { paint(this); } function paint(tab) { tab.className = clsTS; xZIndex(tab, highZ++); xDisplay(panels[tab.xTabIndex], 'block'); //r6 if (selectedIndex != tab.xTabIndex) { xDisplay(panels[selectedIndex], 'none'); //r6 tabs[selectedIndex].className = clsTD; selectedIndex = tab.xTabIndex; } } // Public Methods this.select = function(n) //r7 { if (n && n <= tabs.length) { var t = tabs[n-1]; if (t.focus) t.focus(); else t.onclick(); } } this.onUnload = function() { if (xIE4Up) for (var i = 0; i < tabs.length; ++i) {tabs[i].onclick = null;} } // Constructor Code (note that all these vars are 'private') var panelGrp = xGetElementById(id); if (!panelGrp) { return null; } var panels = xGetElementsByClassName(clsTP, panelGrp); var tabs = xGetElementsByClassName(clsTD, panelGrp); var tabGrp = xGetElementsByClassName(clsTG, panelGrp); if (!panels || !tabs || !tabGrp || panels.length != tabs.length || tabGrp.length != 1) { return null; } var selectedIndex = 0, highZ, x = 0, i; xResizeTo(panelGrp, w, h); xResizeTo(tabGrp[0], w, th); xMoveTo(tabGrp[0], 0, 0); w -= 2; // remove border widths var tw = w / tabs.length; for (i = 0; i < tabs.length; ++i) { xResizeTo(tabs[i], tw, th); xMoveTo(tabs[i], x, 0); x += tw; tabs[i].xTabIndex = i; tabs[i].onclick = onClick; tabs[i].onfocus = onFocus; //r7 xDisplay(panels[i], 'none'); //r6 xResizeTo(panels[i], w, h - th - 2); // -2 removes border widths xMoveTo(panels[i], 0, th); } highZ = i; tabs[0].onclick(); } // xTimer, Copyright 2003-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTimerMgr() { this.timers = new Array(); } // xTimerMgr Methods xTimerMgr.prototype.set = function(type, obj, sMethod, uTime, data) // type: 'interval' or 'timeout' { return (this.timers[this.timers.length] = new xTimerObj(type, obj, sMethod, uTime, data)); }; xTimerMgr.prototype.run = function() { var i, t, d = new Date(), now = d.getTime(); for (i = 0; i < this.timers.length; ++i) { t = this.timers[i]; if (t && t.running) { t.elapsed = now - t.time0; if (t.elapsed >= t.preset) { // timer event on t t.obj[t.mthd](t); // pass listener this xTimerObj if (t.type.charAt(0) == 'i') { t.time0 = now; } else { t.stop(); } } } } }; // Object Prototype used only by xTimerMgr function xTimerObj(type, obj, mthd, preset, data) { // Public Properties this.data = data; // Read-only Properties this.type = type; // 'interval' or 'timeout' this.obj = obj; this.mthd = mthd; // string this.preset = preset; this.reset(); } // end xTimerObj constructor // xTimerObj Methods xTimerObj.prototype.stop = function() { this.running = false; }; xTimerObj.prototype.start = function() { this.running = true; }; // continue after a stop xTimerObj.prototype.reset = function() { var d = new Date(); this.time0 = d.getTime(); this.elapsed = 0; this.running = true; }; var xTimer = new xTimerMgr(); // applications assume global name is 'xTimer' setInterval('xTimer.run()', 250); // xTooltipGroup, Copyright 2002,2003,2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL document.write("<style type='text/css'>#xTooltipElement{position:absolute;visibility:hidden;}</style>"); document.write("<div id='xTooltipElement'>xTooltipElement</div>"); var xttTrigger = null; // current trigger element function xTooltipGroup(grpClassOrIdList, tipClass, origin, xOffset, yOffset, textList) { //// Properties this.c = tipClass; this.o = origin; this.x = xOffset; this.y = yOffset; this.t = null; // tooltip element - all groups use the same element //// Constructor Code var i, tips; if (xStr(grpClassOrIdList)) { tips = xGetElementsByClassName(grpClassOrIdList); for (i = 0; i < tips.length; ++i) { tips[i].xTooltip = this; } } else { tips = new Array(); for (i = 0; i < grpClassOrIdList.length; ++i) { tips[i] = xGetElementById(grpClassOrIdList[i]); if (!tips[i]) { alert('Element not found for id = ' + grpClassOrIdList[i]); } else { tips[i].xTooltip = this; tips[i].xTooltipText = textList[i]; } } } if (!this.t) { // only execute once this.t = xGetElementById('xTooltipElement'); xAddEventListener(document, 'mousemove', this.docOnMousemove, false); } } // end xTooltipGroup ctor //// xTooltipGroup Methods xTooltipGroup.prototype.show = function(trigEle, mx, my) { if (xttTrigger != trigEle) { // if not active or moved to an adjacent trigger this.t.className = trigEle.xTooltip.c; this.t.innerHTML = trigEle.xTooltipText ? trigEle.xTooltipText : trigEle.title; xttTrigger = trigEle; } var x, y; switch(this.o) { case 'right': x = xPageX(trigEle) + xWidth(trigEle); y = xPageY(trigEle); break; case 'top': x = xPageX(trigEle); y = xPageY(trigEle) - xHeight(trigEle); break; case 'mouse': x = mx; y = my; break; } xMoveTo(this.t, x + this.x, y + this.y); xShow(this.t); }; xTooltipGroup.prototype.hide = function() { xMoveTo(this.t, -1000, -1000); xttTrigger = null; }; xTooltipGroup.prototype.docOnMousemove = function(oEvent) { // this == document at runtime var o, e = new xEvent(oEvent); if (e.target && (o = e.target.xTooltip)) { o.show(e.target, e.pageX, e.pageY); } else if (xttTrigger) { xttTrigger.xTooltip.hide(); } }; // xTop, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTop(e, iY) { if(!(e=xGetElementById(e))) return 0; var css=xDef(e.style); if(css && xStr(e.style.top)) { if(xNum(iY)) e.style.top=iY+'px'; else { iY=parseInt(e.style.top); if(isNaN(iY)) iY=0; } } else if(css && xDef(e.style.pixelTop)) { if(xNum(iY)) e.style.pixelTop=iY; else iY=e.style.pixelTop; } return iY; } // xTriStateImage, Copyright 2004,2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xTriStateImage(idOut, urlOver, urlDown, fnUp) // Object Prototype { var img; // Downgrade Detection if (typeof Image != 'undefined' && document.getElementById) { img = document.getElementById(idOut); if (img) { // Constructor Code var urlOut = img.src; var i = new Image(); i.src = urlOver; i = new Image(); i.src = urlDown; // Event Listeners (closure) img.onmouseover = function() { this.src = urlOver; }; img.onmouseout = function() { this.src = urlOut; }; img.onmousedown = function() { this.src = urlDown; }; img.onmouseup = function() { this.src = urlOver; if (fnUp) { fnUp(); } }; } } // Destructor Method this.onunload = function() { if (xIE4Up && img) { // Remove any circular references for IE img.onmouseover = img.onmouseout = img.onmousedown = null; img = null; } }; } var xVersion = "4.0";// xVisibility, Copyright 2003-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xVisibility(e, bShow) { if(!(e=xGetElementById(e))) return null; if(e.style && xDef(e.style.visibility)) { if (xDef(bShow)) e.style.visibility = bShow ? 'visible' : 'hidden'; return e.style.visibility; } return null; } //function xVisibility(e,s) //{ // if(!(e=xGetElementById(e))) return null; // var v = 'visible', h = 'hidden'; // if(e.style && xDef(e.style.visibility)) { // if (xDef(s)) { // // try to maintain backwards compatibility (???) // if (xStr(s)) e.style.visibility = s; // else e.style.visibility = s ? v : h; // } // return e.style.visibility; // // or... // // if (e.style.visibility.length) return e.style.visibility; // // else return xGetComputedStyle(e, 'visibility'); // } // else if (xDef(e.visibility)) { // NN4 // if (xDef(s)) { // // try to maintain backwards compatibility // if (xStr(s)) e.visibility = (s == v) ? 'show' : 'hide'; // else e.visibility = s ? v : h; // } // return (e.visibility == 'show') ? v : h; // } // return null; //} // xWalkEleTree, Copyright 2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xWalkEleTree(n,f,d,l,b) { if (typeof l == 'undefined') l = 0; if (typeof b == 'undefined') b = 0; var v = f(n,l,b,d); if (!v) return 0; if (v == 1) { for (var c = n.firstChild; c; c = c.nextSibling) { if (c.nodeType == 1) { if (!l) ++b; if (!xWalkEleTree(c,f,d,l+1,b)) return 0; } } } return 1; } // xWalkTree, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xWalkTree(n, f) { f(n); for (var c = n.firstChild; c; c = c.nextSibling) { if (c.nodeType == 1) xWalkTree(c, f); } } // original implementation: // function xWalkTree(oNode, fnVisit) // { // if (oNode) { // if (oNode.nodeType == 1) {fnVisit(oNode);} // for (var c = oNode.firstChild; c; c = c.nextSibling) { // xWalkTree(c, fnVisit); // } // } // } // xWidth, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xWidth(e,w) { if(!(e=xGetElementById(e))) return 0; if (xNum(w)) { if (w<0) w = 0; else w=Math.round(w); } else w=-1; var css=xDef(e.style); if (e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body') { w = xClientWidth(); } else if(css && xDef(e.offsetWidth) && xStr(e.style.width)) { if(w>=0) { var pl=0,pr=0,bl=0,br=0; if (document.compatMode=='CSS1Compat') { var gcs = xGetComputedStyle; pl=gcs(e,'padding-left',1); if (pl !== null) { pr=gcs(e,'padding-right',1); bl=gcs(e,'border-left-width',1); br=gcs(e,'border-right-width',1); } // Should we try this as a last resort? // At this point getComputedStyle and currentStyle do not exist. else if(xDef(e.offsetWidth,e.style.width)){ e.style.width=w+'px'; pl=e.offsetWidth-w; } } w-=(pl+pr+bl+br); if(isNaN(w)||w<0) return; else e.style.width=w+'px'; } w=e.offsetWidth; } else if(css && xDef(e.style.pixelWidth)) { if(w>=0) e.style.pixelWidth=w; w=e.style.pixelWidth; } return w; } // xWinClass, Copyright 2003-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL // xWinClass Object Prototype function xWinClass(clsName, winName, w, h, x, y, loc, men, res, scr, sta, too) { var thisObj = this; var e='',c=',',xf='left=',yf='top='; this.n = name; if (document.layers) {xf='screenX='; yf='screenY=';} this.f = (w?'width='+w+c:e)+(h?'height='+h+c:e)+(x>=0?xf+x+c:e)+ (y>=0?yf+y+c:e)+'location='+loc+',menubar='+men+',resizable='+res+ ',scrollbars='+scr+',status='+sta+',toolbar='+too; this.opened = function() {return this.w && !this.w.closed;}; this.close = function() {if(this.opened()) this.w.close();}; this.focus = function() {if(this.opened()) this.w.focus();}; this.load = function(sUrl) { if (this.opened()) this.w.location.href = sUrl; else this.w = window.open(sUrl,this.n,this.f); this.focus(); return false; }; // Closures // this == <A> element reference, thisObj == xWinClass object reference function onClick() {return thisObj.load(this.href);} // '*' works with any element, not just A xGetElementsByClassName(clsName, document, '*', bindOnClick); function bindOnClick(e) {e.onclick = onClick;} } // xWindow, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xWindow(name, w, h, x, y, loc, men, res, scr, sta, too) { var e='',c=',',xf='left=',yf='top='; this.n = name; if (document.layers) {xf='screenX='; yf='screenY=';} this.f = (w?'width='+w+c:e)+(h?'height='+h+c:e)+(x>=0?xf+x+c:e)+ (y>=0?yf+y+c:e)+'location='+loc+',menubar='+men+',resizable='+res+ ',scrollbars='+scr+',status='+sta+',toolbar='+too; this.opened = function() {return this.w && !this.w.closed;}; this.close = function() {if(this.opened()) this.w.close();}; this.focus = function() {if(this.opened()) this.w.focus();}; this.load = function(sUrl) { if (this.opened()) this.w.location.href = sUrl; else this.w = window.open(sUrl,this.n,this.f); this.focus(); return false; }; } // Previous implementation: // function xWindow(name, w, h, x, y, loc, men, res, scr, sta, too) // { // var f = ''; // if (w && h) { // if (document.layers) f = 'screenX=' + x + ',screenY=' + y; // else f = 'left=' + x + ',top=' + y; // f += ',width=' + w + ',height=' + h + ','; // } // f += ('location='+loc+',menubar='+men+',resizable='+res // +',scrollbars='+scr+',status='+sta+',toolbar='+too); // this.features = f; // this.name = name; // this.load = function(sUrl) { // if (this.wnd && !this.wnd.closed) this.wnd.location.href = sUrl; // else this.wnd = window.open(sUrl, this.name, this.features); // this.wnd.focus(); // return false; // } // } // xWinOpen, Copyright 2003-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL // A simple alternative to xWindow. var xChildWindow = null; function xWinOpen(sUrl) { var features = "left=0,top=0,width=600,height=500,location=0,menubar=0," + "resizable=1,scrollbars=1,status=0,toolbar=0"; if (xChildWindow && !xChildWindow.closed) {xChildWindow.location.href = sUrl;} else {xChildWindow = window.open(sUrl, "myWinName", features);} xChildWindow.focus(); return false; } // xWinScrollTo, Copyright 2003-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL var xWinScrollWin = null; function xWinScrollTo(win,x,y,uTime) { var e = win; if (!e.timeout) e.timeout = 25; var st = xScrollTop(e, 1); var sl = xScrollLeft(e, 1); e.xTarget = x; e.yTarget = y; e.slideTime = uTime; e.stop = false; e.yA = e.yTarget - st; e.xA = e.xTarget - sl; // A = distance e.B = Math.PI / (2 * e.slideTime); // B = period e.yD = st; e.xD = sl; // D = initial position var d = new Date(); e.C = d.getTime(); if (!e.moving) { xWinScrollWin = e; _xWinScrollTo(); } } function _xWinScrollTo() { var e = xWinScrollWin || window; var now, s, t, newY, newX; now = new Date(); t = now.getTime() - e.C; if (e.stop) { e.moving = false; } else if (t < e.slideTime) { setTimeout("_xWinScrollTo()", e.timeout); s = Math.sin(e.B * t); newX = Math.round(e.xA * s + e.xD); newY = Math.round(e.yA * s + e.yD); e.scrollTo(newX, newY); e.moving = true; } else { e.scrollTo(e.xTarget, e.yTarget); xWinScrollWin = null; e.moving = false; } } // xZIndex, Copyright 2001-2005 Michael Foster (Cross-Browser.com) // Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL function xZIndex(e,uZ) { if(!(e=xGetElementById(e))) return 0; if(e.style && xDef(e.style.zIndex)) { if(xNum(uZ)) e.style.zIndex=uZ; uZ=parseInt(e.style.zIndex); } return uZ; }
© 2017 -
ZeroByte.ID
.