Index: img/lbox/close.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/closelabel.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/loading.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/more_images.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/next.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/nextlabel.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/prev.gif =================================================================== diff -u -N Binary files differ Index: img/lbox/prevlabel.gif =================================================================== diff -u -N Binary files differ Index: img/adv_search.gif =================================================================== diff -u -N Binary files differ Index: img/calendar.gif =================================================================== diff -u -N Binary files differ Index: img/close.gif =================================================================== diff -u -N Binary files differ Index: img/closelabel.gif =================================================================== diff -u -N Binary files differ Index: img/loading.gif =================================================================== diff -u -N Binary files differ Index: img/logo.gif =================================================================== diff -u -N Binary files differ Index: img/message.gif =================================================================== diff -u -N Binary files differ Index: img/more_images.gif =================================================================== diff -u -N Binary files differ Index: img/next.gif =================================================================== diff -u -N Binary files differ Index: img/nextlabel.gif =================================================================== diff -u -N Binary files differ Index: img/prev.gif =================================================================== diff -u -N Binary files differ Index: img/prevlabel.gif =================================================================== diff -u -N Binary files differ Index: img/s.gif =================================================================== diff -u -N Binary files differ Index: img/star.gif =================================================================== diff -u -N Binary files differ Index: img/star_rate.gif =================================================================== diff -u -N Binary files differ Index: img/valid-xhtml10.gif =================================================================== diff -u -N Binary files differ Index: img/vcss.gif =================================================================== diff -u -N Binary files differ Index: img/zoom.gif =================================================================== diff -u -N Binary files differ Index: img/zoom_picture.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/blocks/categories/categories_home.tpl =================================================================== diff -u -N --- in-commerce/blocks/categories/categories_home.tpl (revision 0) +++ in-commerce/blocks/categories/categories_home.tpl (revision 12930) @@ -0,0 +1,37 @@ + +
  • ">...
  • +
    + + + +
  • + +
  • ">
  • +
    +
    + + + + + + + + +
    + + + + + +
    + + + + " class="subcat">
    +
    +
      + + +
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/categories/categories_home_alt.tpl =================================================================== diff -u -N --- in-commerce/blocks/categories/categories_home_alt.tpl (revision 0) +++ in-commerce/blocks/categories/categories_home_alt.tpl (revision 12930) @@ -0,0 +1,45 @@ + +
  • ">...
  • +
    + + + +
  • + +
  • ">
  • +
    + + +
      + +
    +
    +
    +
    + + + + + + + + +
    + + + + + +
    + + + + " class="subcat">
    +
    + +
      + +
    +
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/categories/current_path.tpl =================================================================== diff -u -N --- in-commerce/blocks/categories/current_path.tpl (revision 0) +++ in-commerce/blocks/categories/current_path.tpl (revision 12930) @@ -0,0 +1,33 @@ + + + + "> + + + + + "> + + + + + + "> + + "> + + + + + + "> + + + + + + + + \ No newline at end of file Index: in-commerce/blocks/categories/manufacturers.tpl =================================================================== diff -u -N --- in-commerce/blocks/categories/manufacturers.tpl (revision 0) +++ in-commerce/blocks/categories/manufacturers.tpl (revision 12930) @@ -0,0 +1,25 @@ + + + + + + + + + +
    + + ">...
    +
    \ No newline at end of file Index: in-commerce/blocks/categories/sub_categories.tpl =================================================================== diff -u -N --- in-commerce/blocks/categories/sub_categories.tpl (revision 0) +++ in-commerce/blocks/categories/sub_categories.tpl (revision 12930) @@ -0,0 +1,33 @@ + + + +
  • ">...
  • +
    + + +
  • ">
  • +
    + + + + + + + + +
    + + + + + + + +
    + " class="subcat">
    +
      + +
    +
    + +
    \ No newline at end of file Index: in-commerce/blocks/categories/title_path.tpl =================================================================== diff -u -N --- in-commerce/blocks/categories/title_path.tpl (revision 0) +++ in-commerce/blocks/categories/title_path.tpl (revision 12930) @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + Index: in-commerce/blocks/checkout/billing_address.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/billing_address.tpl (revision 0) +++ in-commerce/blocks/checkout/billing_address.tpl (revision 12930) @@ -0,0 +1,251 @@ + + + + + + + + + + + + +
    + +
    + + + + + +
    + +
    + + +
    +
    + + +
    + * .

    + + + + : + + + + + + +   + "/> + "> +
    + :
    + + +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    : + checked" /> +
    *: + " value="" style="width: 300px;" /> +
    : + " value="" style="width: 300px;" /> +
    + 1*: + " value="" style="width: 300px;" /> +
    + 2: + " value="" style="width: 300px;" /> +
    + *: + " value="" style="width: 200px;" /> +
    + *: + " value="" style="width: 200px;" /> +
    + *: + " value="" style="width: 100px;" /> +
    + *: + +
    *: + " value="" style="width: 150px;" /> +
    : + " value="" style="width: 150px;" /> +
    *: + + " value="" style="width: 300px;" /> +
    : + + " value="" style="width: 300px;" /> +
    + 1*: + + " value="" style="width: 300px;" /> +
    + 2: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 200px;" /> +
    + *: + + " value="" style="width: 200px;" /> +
    + *: + + " value="" style="width: 100px;" /> +
    + *: + + " value="" style="width: 100px;" /> +
    *: + + " value="" style="width: 150px;" /> +
    : + + " value="" style="width: 150px;" /> +
    +
    + + "/> +
    +
    \ No newline at end of file Index: in-commerce/blocks/checkout/billing_options.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/billing_options.tpl (revision 0) +++ in-commerce/blocks/checkout/billing_options.tpl (revision 12930) @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + + + +
    + +
    + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + : + + +
    + : + + " value="" style="width: 200px;"> +
    + : + + " value="" style="width: 260px;"> +
    + : + + + / + +
    + : + + " style="width: 50px;"> +    +
    +
    + +
    + + +
    + "> +
    +
    + + + + + + + + + +
    + +
    + + + + + +
    + +
    + +
    +
    +
    + +
    +
    +
    + +
    + "> +
    +
    + + + + + + + + +
    + + + + + +
    + Cost Summary +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    ():
    :
    :
    %:
    :
    + +
    + +
    + : + +  " name="events[ord][OnUpdate]" id="events[ord][OnUpdate]"> +

    + +
    \ No newline at end of file Index: in-commerce/blocks/checkout/cart_indicator.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/cart_indicator.tpl (revision 0) +++ in-commerce/blocks/checkout/cart_indicator.tpl (revision 12930) @@ -0,0 +1,22 @@ + + + + + + + + +
    +
    + :
    + + :
    +
    + + "> + in-commerce/checkout/shippingin-commerce/checkout/billing" /> + "> + + +
    +
    \ No newline at end of file Index: in-commerce/blocks/checkout/checkout_steps.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/checkout_steps.tpl (revision 0) +++ in-commerce/blocks/checkout/checkout_steps.tpl (revision 12930) @@ -0,0 +1,43 @@ + + + + + + + +
    + + . ">
    +
    + + + .
    +
    + + + .
    +
    + + + + + + + + + + +
    \ No newline at end of file Index: in-commerce/blocks/checkout/form_register.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/form_register.tpl (revision 0) +++ in-commerce/blocks/checkout/form_register.tpl (revision 12930) @@ -0,0 +1,214 @@ + + + + + +
    + + + + + + + + +
    + +
    + + + + + +
    + +
    + +
    +
    + +
    +
    + * .

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *:
    +
    + + " id="" value="" style="width: 100px;" datepickerIcon="img/calendar.gif"/> + + (, ex. ) +
    + : + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 300px;" /> +
    + 1: + + " value="" style="width: 300px;" /> +
    + 2: + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 100px;" /> +
    + : + + +
    + : + + " value="" style="width: 150px;" /> +
    + : + + " value="" style="width: 150px;" /> +
    + "> + + + + + + "/> +
    +
    + +
    +
    \ No newline at end of file Index: in-commerce/blocks/checkout/options.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/options.tpl (revision 0) +++ in-commerce/blocks/checkout/options.tpl (revision 12930) @@ -0,0 +1,28 @@ + + ( ) + , + + + + + : + + + : + ( ) +
    +
    + + + + , + + + + + : + + + : +
    +
    \ No newline at end of file Index: in-commerce/blocks/checkout/order_preview.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/order_preview.tpl (revision 0) +++ in-commerce/blocks/checkout/order_preview.tpl (revision 12930) @@ -0,0 +1,296 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + + + + + +
    + + + + + + + +
    +
    + +
    + :
    + : +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    : + +
    +
    + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    :
    : + +
    +
    + + +
    +
    + +
    :
    :
    :
    :
    :
    +
    + + + + + + +
    + +
    + + + + + +
    + +
    + + + + + + + + +
    + +   + +
    + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    .
    + + :
    +
      +
    54"> + : +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ():
    :
    :
    %:
    :
    + +
    +
    + + + + + + + +
    +
    + + + " class="button"> + + +
    \ No newline at end of file Index: in-commerce/blocks/checkout/register.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/register.tpl (revision 0) +++ in-commerce/blocks/checkout/register.tpl (revision 12930) @@ -0,0 +1,75 @@ + +
    + + + + + + + +
    + +
    + + + + + +
    + +
    + + +
    +
    + ...
    + :
    +
    + * .

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + "/> +
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/checkout/shipping_address.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/shipping_address.tpl (revision 0) +++ in-commerce/blocks/checkout/shipping_address.tpl (revision 12930) @@ -0,0 +1,235 @@ + + + + + + + + + + + + +
    + +
    + + + + + +
    + +
    + +
    +
    + +
    + * .

    + + + + : + + + + + + +   + "/> + "> +
    + :
    + + +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    *: + " value="" style="width: 300px;" /> +
    : + " value="" style="width: 300px;" /> +
    + 1*: + " value="" style="width: 300px;" /> +
    + 2: + " value="" style="width: 300px;" /> +
    + *: + " value="" style="width: 200px;" /> +
    + *: + " value="" style="width: 200px;" /> +
    + *: + " value="" style="width: 100px;" /> +
    + *: + +
    *: + " value="" style="width: 150px;" /> +
    : + " value="" style="width: 150px;" /> +
    *: + + " value="" style="width: 300px;" /> +
    : + + " value="" style="width: 300px;" /> +
    + 1*: + + " value="" style="width: 300px;" /> +
    + 2: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 200px;" /> +
    + *: + + " value="" style="width: 200px;" /> +
    + *: + + " value="" style="width: 100px;" /> +
    + *: + + " value="" style="width: 100px;" /> +
    *: + + " value="" style="width: 150px;" /> +
    : + + " value="" style="width: 150px;" /> +
    + + "/> +
    +
    \ No newline at end of file Index: in-commerce/blocks/checkout/shipping_options.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/shipping_options.tpl (revision 0) +++ in-commerce/blocks/checkout/shipping_options.tpl (revision 12930) @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + +
    + (">). +
    + + + . + + + + +
    + + +
    + + + + + + + + + + + + : + + +
    + + + name="" + id="_" value=""> +  
    +
    + +
    +
    + + + : + +
    + " id="" value="" /> + ').value = this.checked ? 1:0; document.getElementById('events[ord][OnUpdate]').click();" type="checkbox" + + name="cb_" + id="cb_" value="1" /> +  
    + +
    + " value="1" /> +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + "/>
    +
      + : + + +
       + : + + +
       + : + + +
       + : + + +
       + %: + + +
       + : + + +
    + + + + + +
    + + " class="button"> +
    +
    + + + + +
  • + +
    + + + + + + + + ">
    +
    +
    +
    +
  • +
    + + +

    + :
    +
      + +
    +
    + +
    \ No newline at end of file Index: in-commerce/blocks/checkout/shop_cart.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/shop_cart.tpl (revision 0) +++ in-commerce/blocks/checkout/shop_cart.tpl (revision 12930) @@ -0,0 +1,199 @@ + + + + + + + +
    +
    + + + + + + +
    + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + " title="" alt="" border="0" />
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + in-commerce/checkout/shippingin-commerce/checkout/billing" /> + + + + + + + + + + + + + + + + + + + + + + +
    . 
    + + + "> + +
    + + + + + + + + "> + + +
    + +
    + +
    + +
    + :
    + : + ')">[?] +
    +
    + + " size="5" name="" /> + + + 1 + + Delete
    43"> + + :
    +
    + + : + + "> + + : + + +
    + : +
    43"> + " /> +   + ')" value="" /> + + " /> +
    + +
    + +
    + + "> + +
    + + + + +
    "> + + + + + &w=180&h=46&style=white&variant=text&loc=en_US" height="46" width="180"> + + + &w=180&h=46&style=white&variant=text&loc=en_US" height="46" width="180"> + + +
    + + +
    +
    + +
    + + + + + + \ No newline at end of file Index: in-commerce/blocks/checkout/thank_you.tpl =================================================================== diff -u -N --- in-commerce/blocks/checkout/thank_you.tpl (revision 0) +++ in-commerce/blocks/checkout/thank_you.tpl (revision 12930) @@ -0,0 +1,14 @@ + + + + + + + +
    + +
    + !
    +
    + +
    \ No newline at end of file Index: in-commerce/blocks/manufacturers/manuf_pagination.tpl =================================================================== diff -u -N --- in-commerce/blocks/manufacturers/manuf_pagination.tpl (revision 0) +++ in-commerce/blocks/manufacturers/manuf_pagination.tpl (revision 12930) @@ -0,0 +1,40 @@ + + <<  + + + + + + + + + + + + + + + | + + + + + + + + >> + + + + + + + +
    + + + +  
    \ No newline at end of file Index: in-commerce/blocks/manufacturers/manufacturer_products.tpl =================================================================== diff -u -N --- in-commerce/blocks/manufacturers/manufacturer_products.tpl (revision 0) +++ in-commerce/blocks/manufacturers/manufacturer_products.tpl (revision 12930) @@ -0,0 +1,62 @@ + + + + + + + +
    + + + + + " title="" alt="" border="0" />
    +
    + + + + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/manufacturers/manufacturers.tpl =================================================================== diff -u -N --- in-commerce/blocks/manufacturers/manufacturers.tpl (revision 0) +++ in-commerce/blocks/manufacturers/manufacturers.tpl (revision 12930) @@ -0,0 +1,81 @@ + + + + + + + +
    + + + + + " title="" alt="" border="0" />
    +
    + + + " title="" alt="" style="margin-top: 10px" border="0" />
    +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + +
    + " class="link-product2">
    + ">
    + :
    + :
    + :
    + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + +
    + + + + +
    + " class="link-product1">
    +
    + + +
    + + ">... + + +
    + +
    \ No newline at end of file Index: in-commerce/blocks/manufacturers/manufacturers_dropdown.tpl =================================================================== diff -u -N --- in-commerce/blocks/manufacturers/manufacturers_dropdown.tpl (revision 0) +++ in-commerce/blocks/manufacturers/manufacturers_dropdown.tpl (revision 12930) @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
    + +
    + +
    + +
    + + + + Index: in-commerce/blocks/misc/register_as_affiliate.tpl =================================================================== diff -u -N --- in-commerce/blocks/misc/register_as_affiliate.tpl (revision 0) +++ in-commerce/blocks/misc/register_as_affiliate.tpl (revision 12930) @@ -0,0 +1,14 @@ + + + + + + + + + +
    + "> +
    +
    +
    Index: in-commerce/blocks/my_account/address_edit.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/address_edit.tpl (revision 0) +++ in-commerce/blocks/my_account/address_edit.tpl (revision 12930) @@ -0,0 +1,182 @@ + + + + +
    + + + + + + + + + +
    + + +
    + + + + + +
    + +
    + + +
    +
    + + + + + + * .

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + *: + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + 1 *: + + " value="" style="width: 300px;" /> +
    + 2: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 100px;" /> +
    + *: + " value="" style="width: 200px;" /> +
    + *: + + " value="" style="width: 60px;" /> +
    + *: + +
    + *: + + " value="" style="width: 150px;" /> +
    + : + + " value="" style="width: 150px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="1" checked /> +
    + : + + " value="1" checked /> +
    + "/> + " value="" /> + +
    + +
    + +
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/address_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/address_list.tpl (revision 0) +++ in-commerce/blocks/my_account/address_list.tpl (revision 12930) @@ -0,0 +1,87 @@ + + + + + + +
    + +
    + + + + + +
    + +
    +
    + + + +
    + +
    +
    + +
    +
    + + +
    +
    +
    + + + +
    +
    + + + :
    +
    + + + :
    +
    + + +
    + +
    + + + + + "> + + "> + ?')) window.location.href = '';"> + + +

    + + +
    + + + + + + + + +
    + ">

    +
    +
    + + + + + + + + + +
     
    \ No newline at end of file Index: in-commerce/blocks/my_account/address_pagination.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/address_pagination.tpl (revision 0) +++ in-commerce/blocks/my_account/address_pagination.tpl (revision 12930) @@ -0,0 +1,40 @@ + + <<  + + + + + + + + + + + + + + + | + + + + + + + + >> + + + + + + + +
    + + + +  
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate.tpl (revision 12930) @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + +
    + +
    +
    + ">
    + + +
    + ">
    + + +
    + ">
    + + +
    + ">
    + + +
    +
    + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + *: + + " /> + + + +   +
    + " value="" checked /> + + +
      
    + : + + + + +
     
    +
     
    + : + + +  
    + + + + + + + + +   +
    + + " /> +  
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_date_filter.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_date_filter.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_date_filter.tpl (revision 12930) @@ -0,0 +1,45 @@ +
    + + "> + + + + + + + + + + + + + + + + + +
    + + + + " id="" value="" size="" datepickerIcon="img/calendar.gif"/> + () + + +  
    + + + " id="" value="" size="" datepickerIcon="img/calendar.gif"/> + () + + +  
    + ][OnSearch]" value=""> + ][OnSearchReset]" value=""> +
    +" /> +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_materials.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_materials.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_materials.tpl (revision 12930) @@ -0,0 +1,27 @@ + + + + + + + + + + + +
    + : +

    + "> +
    + : +
    + + <a href=""> + + </a> + +
    + +
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_navigation.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_navigation.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_navigation.tpl (revision 12930) @@ -0,0 +1,45 @@ + + + + + + + + +
    +
      + + +
    • ">
    • + +
    • ">
    • +
      + + +
    • + +
    • ">
    • +
      + + +
    • + +
    • ">
    • +
      + + +
    • + +
    • ">
    • +
      + +
    • +
    + +
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_payment_type.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_payment_type.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_payment_type.tpl (revision 12930) @@ -0,0 +1,71 @@ +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + : + + +
    + +
    + " value="" checked /> + + +
      
    + : + + + + +
     
    +
     
    + : + + +  
    + + " /> +  
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_payment_type_changed.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_payment_type_changed.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_payment_type_changed.tpl (revision 12930) @@ -0,0 +1,8 @@ + + + + + + + +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_payments_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_payments_list.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_payments_list.tpl (revision 12930) @@ -0,0 +1,49 @@ + + + + + + +
    + () +
    + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_stat.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_stat.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_stat.tpl (revision 12930) @@ -0,0 +1,67 @@ + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + "> +
    + + + + + "> +
    + + + + + "> +
    + + + + + "> +
    +
    + + +
    + + + Index: in-commerce/blocks/my_account/affiliate_stat_orders_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_stat_orders_list.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_stat_orders_list.tpl (revision 12930) @@ -0,0 +1,81 @@ + + + + + + +
    + +
    + + +
    + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + +
       + : + + + : + +
    Index: in-commerce/blocks/my_account/affiliate_stat_visits_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_stat_visits_list.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_stat_visits_list.tpl (revision 12930) @@ -0,0 +1,85 @@ + + + + + + +
    + +
    + + +
    + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + : + + + : + +
    + + + + + + + + + +
    + +
    Index: in-commerce/blocks/my_account/affiliate_thankyou.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_thankyou.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_thankyou.tpl (revision 12930) @@ -0,0 +1,8 @@ + + + + + + + +
    \ No newline at end of file Index: in-commerce/blocks/my_account/affiliate_visitors_pagination.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/affiliate_visitors_pagination.tpl (revision 0) +++ in-commerce/blocks/my_account/affiliate_visitors_pagination.tpl (revision 12930) @@ -0,0 +1,40 @@ + + <<  + + + + + + + + + + + + + + + | + + + + + + + + >> + + + + + + + +
    + + + +  
    \ No newline at end of file Index: in-commerce/blocks/my_account/all_downloads.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/all_downloads.tpl (revision 0) +++ in-commerce/blocks/my_account/all_downloads.tpl (revision 12930) @@ -0,0 +1,70 @@ + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    -
    + + + + + +
    + " target="_blank">
    +
    + " class="link-product1">
    + + + : ( "> )
    +
    +
    + + :

    + + + : + +
    +
    +
    + + :

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    : 
    :"> 
    : 
    : 
    : 
    :">

    + +
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/my_account.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/my_account.tpl (revision 0) +++ in-commerce/blocks/my_account/my_account.tpl (revision 12930) @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + ">
    + + +
    + ">
    + + +
    + ">
    + + +
    + ">
    + + +
    + ">
    + + +
    + ">
    + + +
    +
    + + +
    \ No newline at end of file Index: in-commerce/blocks/my_account/my_downloads.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/my_downloads.tpl (revision 0) +++ in-commerce/blocks/my_account/my_downloads.tpl (revision 12930) @@ -0,0 +1,74 @@ + + " title="" alt="" border="0" />
    +
    + + + + + + + + + + + + + + +
    ()
    + + + + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + + " class="link-product2">
    + +
    +
    + :

    + + " class="link-product2">
    + " class="link-product2">...
    + + +
    +
    + +
    +
    + . +

    + +
    \ No newline at end of file Index: in-commerce/blocks/my_account/my_payments_pagination.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/my_payments_pagination.tpl (revision 0) +++ in-commerce/blocks/my_account/my_payments_pagination.tpl (revision 12930) @@ -0,0 +1,40 @@ + + <<  + + + + + + + + + + + + + + + | + + + + + + + + >> + + + + + + + +
    + + + +  
    \ No newline at end of file Index: in-commerce/blocks/my_account/my_profile.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/my_profile.tpl (revision 0) +++ in-commerce/blocks/my_account/my_profile.tpl (revision 12930) @@ -0,0 +1,194 @@ + + + + +
    + + + + + + + + + +
    + + +
    + + + + + +
    + +
    + + +
    +
    + * .

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + : + + " value="" style="width: 100px;" /> +
    + : + + " value="" style="width: 100px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 150px;" /> +
    + : + + " value="" style="width: 150px;" /> +
    + *:
    +
    + + " id="" value="" style="width: 100px;" datepickerIcon="img/calendar.gif"/> + + (, ex. ) +
    + *: + + " value="" style="width: 200px;" /> +
    + 1: + + " value="" style="width: 300px;" /> +
    + 2: + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 100px;" /> +
    + : + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 60px;" /> +
    + : + +
    + "/> + +
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/my_account/myaccount_navigation.tpl =================================================================== diff -u -N --- in-commerce/blocks/my_account/myaccount_navigation.tpl (revision 0) +++ in-commerce/blocks/my_account/myaccount_navigation.tpl (revision 12930) @@ -0,0 +1,52 @@ + + + + + + + +
    +
      + +
    • + +
    • ">
    • +
      + + +
    • + +
    • ">
    • +
      + + +
    • + +
    • ">
    • +
      + + +
    • ">
    • + +
    • ">
    • +
      + + +
    • ">
    • + +
    • ">
    • +
      + + + +
    • ">
    • + +
    • ">
    • +
      +
      + + +
    • +
      +
    +
    \ No newline at end of file Index: in-commerce/blocks/orders/order_details.tpl =================================================================== diff -u -N --- in-commerce/blocks/orders/order_details.tpl (revision 0) +++ in-commerce/blocks/orders/order_details.tpl (revision 12930) @@ -0,0 +1,334 @@ + + ( ) + , + + + + + : + + + : + ( ) +
    +
    + + + + , + + + + + : + + + : +
    +
    + + + " title="" alt="" border="0" />
    +
    + + + + + + + + + + + + "> + + + + +
    + + + + + + + +
    +
    + +
    + :
    + : - +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    : + +
    +
    + + +
    +
    + +
    :
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    :
    :
    :
    : + +
    +
    + + +
    +
    + +
    :
    :
    :
    :
    :
    +
    + +
    + + + + + +
    + +
    + + + + + +
    + +
    + + + + + +
    +
    + "> +
    +
    + + + + + + + + + +
    + +   + +
    + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    .
    + + :
    +
      +
    54"> + : + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ():
    :
    :
    %:
    :
    :
    + +
    +
    + + + \ No newline at end of file Index: in-commerce/blocks/orders/orders_all.tpl =================================================================== diff -u -N --- in-commerce/blocks/orders/orders_all.tpl (revision 0) +++ in-commerce/blocks/orders/orders_all.tpl (revision 12930) @@ -0,0 +1,50 @@ + + + + + + +
    + +
    + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    "> () + +
    + +
    Index: in-commerce/blocks/orders/orders_pagination.tpl =================================================================== diff -u -N --- in-commerce/blocks/orders/orders_pagination.tpl (revision 0) +++ in-commerce/blocks/orders/orders_pagination.tpl (revision 12930) @@ -0,0 +1,40 @@ + + <<  + + + + + + + + + + + + + + + | + + + + + + + + >> + + + + + + + +
    + + + +  
    \ No newline at end of file Index: in-commerce/blocks/orders/orders_recent.tpl =================================================================== diff -u -N --- in-commerce/blocks/orders/orders_recent.tpl (revision 0) +++ in-commerce/blocks/orders/orders_recent.tpl (revision 12930) @@ -0,0 +1,58 @@ + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    "> () + +
    + +
    + + +
    +
    + ">... +
    +
    +
    + + + + + + Index: in-commerce/blocks/products/confirm_recommend.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/confirm_recommend.tpl (revision 0) +++ in-commerce/blocks/products/confirm_recommend.tpl (revision 12930) @@ -0,0 +1,20 @@ + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    + + +
    Index: in-commerce/blocks/products/form_advanced_search.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/form_advanced_search.tpl (revision 0) +++ in-commerce/blocks/products/form_advanced_search.tpl (revision 12930) @@ -0,0 +1,107 @@ + + + + + + + +
    +
    "> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]_1" name="andor[]" value="1" checked> + +   + ]_0" name="andor[]" value="0"> + + + + + + + +
    + + + + +    + ]"> + + +    +
    + + + ]" id="value[]_true" value="1"> + +   + ]" id="value[]_false" value="0"> + +   + ]" id="value[]_any" value="-1" checked> + + +    +
    + + + : _from]" style="width:60px">   + : _to]" style="width:60px"> + +    +
    + + + + +    +
    + !" class="button">
    +
    +
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/products/form_options.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/form_options.tpl (revision 0) +++ in-commerce/blocks/products/form_options.tpl (revision 12930) @@ -0,0 +1,148 @@ + + + + + +
    "> + + + "> + "> + + + + + + + +
    + +
    + +
    +
    + + + + + + + : + , + + + + + + ][]" name="qty[][]" value="0"> + + + + + + + )"> + + + + + + + + + + + +
     
    +
    + + + + :
    + + + + + + + + name="options[][][]" + id="options[][]_" + value="" /> + + + + + + name="options[][]" + id="options[][]_" + value="" /> + + + + + + + * : + + + + + + + + ][]" value=""/> + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    +
    \ No newline at end of file Index: in-commerce/blocks/products/form_rate_product.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/form_rate_product.tpl (revision 0) +++ in-commerce/blocks/products/form_rate_product.tpl (revision 12930) @@ -0,0 +1,77 @@ + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + "> + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + + + " class="link-product2"> + + "> + +
    + :
    + :
    + :
    +
    + + + + + + +
    + +
    + +
    +
    + + +
    + + + + + + + + + + + + + +
      + "> + +
    +
    + + + "> + "> +
    + +
    +
    \ No newline at end of file Index: in-commerce/blocks/products/form_recommend_product.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/form_recommend_product.tpl (revision 0) +++ in-commerce/blocks/products/form_recommend_product.tpl (revision 12930) @@ -0,0 +1,93 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + "> + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + + + " class="link-product2"> + + "> + +
    + :
    + :
    + :
    +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    : 
    *: + +
    + +
    +
    : "/> 
    :"/> 
    : 
     " name="events[p][OnRecommendProduct]" class="button" /> "> 
    + +
    + + + + +
    + +
    + +
    + Index: in-commerce/blocks/products/form_review_product.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/form_review_product.tpl (revision 0) +++ in-commerce/blocks/products/form_review_product.tpl (revision 12930) @@ -0,0 +1,90 @@ + + + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + "> + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + + + " class="link-product2"> + + "> + +
    + :
    + :
    + :
    +
    + + + + + + +
    + +
    + . +
    + + + + + +
    + ,
    +
    +
    +
    +
    + + + + + + + +
    + +
    + +
    +
    +
    + :
    +
    +
    + + + "> + "> +
    +
    +
    + +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/product_actions.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/product_actions.tpl (revision 0) +++ in-commerce/blocks/products/product_actions.tpl (revision 12930) @@ -0,0 +1,29 @@ + + + + + + + +
    + + + ">
    +
    + +
    +
    + + ">
    +
    + + ">
    +
    + +
    + #reviews">
    + #related">
    + ">
    + ">
    + ">
    +
    \ No newline at end of file Index: in-commerce/blocks/products/product_details.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/product_details.tpl (revision 0) +++ in-commerce/blocks/products/product_details.tpl (revision 12930) @@ -0,0 +1,237 @@ + + <inp2:m_Phrase label="> + + + + <inp2:m_Phrase label="> + + + + <inp2:m_Phrase label="> + + + + <inp2:m_Phrase label="> + + + + + + + + + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + + + +
    + + + + + +
    + + " rel="lightbox" target="_blank">

    + " rel="lightbox" target="_blank"> + " rel="lightbox" target="_blank"> + + +
    +
    + +     + #images"> + #images"> + +

    + + + + " class="price2"> + "><inp2:m_Phrase label=" width="23" height="23" border="0" vspace="4" /> + + + + +
    + " class="link-product1">
    + +   +   +   +   +
    + + + : ( "> )
    +
    +
    + :
    + : ( votes) ">
    + : | ">

    + + + :
    +
    + + :
    + + + + : (%) +
    +
    +
    + + + : + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    + - + + + "> + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +   +
    + +
    + +
    + + + "><inp2:m_Phrase label=" width="15" height="17" border="0" /> +
    +
    +
    + +
    +
    + + + + :
    +
    + + : + +
    +
    +
    + + + + :
    +
    + + + + + + + + +
    + " target="_blank"> + +
     

    +
    + + + :
    + ">
    +
    + + + + + + + +
    + ,
    +
    +
    +
    +
    + + + + +
    +
    Index: in-commerce/blocks/products/product_fullsize_image.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/product_fullsize_image.tpl (revision 0) +++ in-commerce/blocks/products/product_fullsize_image.tpl (revision 12930) @@ -0,0 +1,6 @@ + + " title="" alt="" border="0" />
    +

    +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_current_cat.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_current_cat.tpl (revision 0) +++ in-commerce/blocks/products/products_current_cat.tpl (revision 12930) @@ -0,0 +1,62 @@ + + " title="" alt="" border="0" />
    +
    + + + + + + + + + + +
    + + + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_editor_picks.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_editor_picks.tpl (revision 0) +++ in-commerce/blocks/products/products_editor_picks.tpl (revision 12930) @@ -0,0 +1,62 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_featured.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_featured.tpl (revision 0) +++ in-commerce/blocks/products/products_featured.tpl (revision 12930) @@ -0,0 +1,60 @@ + + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + + \ No newline at end of file Index: in-commerce/blocks/products/products_featured_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_featured_list.tpl (revision 0) +++ in-commerce/blocks/products/products_featured_list.tpl (revision 12930) @@ -0,0 +1,61 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + ">
    +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_new.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_new.tpl (revision 0) +++ in-commerce/blocks/products/products_new.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + + " title="" alt="" style="margin-top: 10px" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + " class="link-product2">
    + ">
    + + :
    + :
    + :
    + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + +
    + + ">... + + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_new_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_new_list.tpl (revision 0) +++ in-commerce/blocks/products/products_new_list.tpl (revision 12930) @@ -0,0 +1,62 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_pagination.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_pagination.tpl (revision 0) +++ in-commerce/blocks/products/products_pagination.tpl (revision 12930) @@ -0,0 +1,40 @@ + + <<  + + + + + + + + + + + + + + + | + + + + + + + + >> + + + + + + + +
    + + + +  
    \ No newline at end of file Index: in-commerce/blocks/products/products_picks.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_picks.tpl (revision 0) +++ in-commerce/blocks/products/products_picks.tpl (revision 12930) @@ -0,0 +1,57 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + ">
    + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + +
    + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + + ">... + + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_recent.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_recent.tpl (revision 0) +++ in-commerce/blocks/products/products_recent.tpl (revision 12930) @@ -0,0 +1,32 @@ + + + + + + + + + +
    + + + + + + +
    + ">
    +
    +
    +
    +
    + + + ">...
    +
    + +
    +
    + "/> +
    +
    \ No newline at end of file Index: in-commerce/blocks/products/products_recent_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_recent_list.tpl (revision 0) +++ in-commerce/blocks/products/products_recent_list.tpl (revision 12930) @@ -0,0 +1,62 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_related.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_related.tpl (revision 0) +++ in-commerce/blocks/products/products_related.tpl (revision 12930) @@ -0,0 +1,53 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + ">
    + + " class="link-product2"> + "><inp2:m_Phrase label=" width="15" height="17" border="0" vspace="4" style="vertical-align:middle" /> + + + +
    + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    +
    \ No newline at end of file Index: in-commerce/blocks/products/products_search_results.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_search_results.tpl (revision 0) +++ in-commerce/blocks/products/products_search_results.tpl (revision 12930) @@ -0,0 +1,143 @@ + + " title="" alt="" border="0" style="margin: 2px;"/>
    +
    + + + + + + + + + + + + + + + + + + + + + +
    ()
    + +
    "> +   + + " /> +
    +
    +
    + + + + +
    + + + + + +
    + + + +
    +
    + + + + + + + + :
    +
    + + + + +
    %" bgcolor="">%" bgcolor="">
    + + + + Relevance:
    + + + + +
    ">
    +
    + + + + + + +
    +
    + "> +
    + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + + + + + + + +
    + +
    + !!! +
    +
    + + + + + + +
    + +
    + ! + +
    +
    + + + + + + +
    + +
    + + +
    +
    + + +
    + . +

    + + + + + + + \ No newline at end of file Index: in-commerce/blocks/products/products_sorting.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_sorting.tpl (revision 0) +++ in-commerce/blocks/products/products_sorting.tpl (revision 12930) @@ -0,0 +1,16 @@ +
    + + + + + " value="" /> + \ No newline at end of file Index: in-commerce/blocks/products/products_top_sellers.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_top_sellers.tpl (revision 0) +++ in-commerce/blocks/products/products_top_sellers.tpl (revision 12930) @@ -0,0 +1,33 @@ + + ">... + + + + + + + + + + + + +
    + + + + ">
    +
    +
    +
    +
    + +
    + + + ">... + + + + + \ No newline at end of file Index: in-commerce/blocks/products/products_topsellers_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_topsellers_list.tpl (revision 0) +++ in-commerce/blocks/products/products_topsellers_list.tpl (revision 12930) @@ -0,0 +1,62 @@ + + + + " title="" alt="" border="0" />
    +
    + + + + + + + + +
    + + + + + + +
    + + + +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + + " class="link-product2"> + + "> + +
    + :
    + :
    + : +
    + +
    \ No newline at end of file Index: in-commerce/blocks/products/products_wish_list.tpl =================================================================== diff -u -N --- in-commerce/blocks/products/products_wish_list.tpl (revision 0) +++ in-commerce/blocks/products/products_wish_list.tpl (revision 12930) @@ -0,0 +1,75 @@ + + " title="" alt="" border="0" />
    +
    + + + + + + + + + + + + + + +
    ()
    + + + + + + +
    + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    + "> + " class="link-product2"> + + ">
    +
    + :
    + :
    + + ">
    +
    + + ">
    +
    +
    + : +
    + +
    +
    + . +

    + +
    \ No newline at end of file Index: in-commerce/checkout/billing.tpl =================================================================== diff -u -N --- in-commerce/checkout/billing.tpl (revision 0) +++ in-commerce/checkout/billing.tpl (revision 12930) @@ -0,0 +1,57 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_cart_Checkout"/> :: <inp2:m_Phrase label="lu_comm_BillingInfo"/> + + + + + + + + + + + + + +
    + + +
    + + + + +
    + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/checkout/checkout_success.tpl =================================================================== diff -u -N --- in-commerce/checkout/checkout_success.tpl (revision 0) +++ in-commerce/checkout/checkout_success.tpl (revision 12930) @@ -0,0 +1,36 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_cart_Checkout"/> :: <inp2:m_Phrase label="lu_comm_OrderCompleted"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/checkout/cvv2help.tpl =================================================================== diff -u -N --- in-commerce/checkout/cvv2help.tpl (revision 0) +++ in-commerce/checkout/cvv2help.tpl (revision 12930) @@ -0,0 +1,16 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> + + + + +
    +

    + +

    +
    + + + \ No newline at end of file Index: in-commerce/checkout/discount_info.tpl =================================================================== diff -u -N --- in-commerce/checkout/discount_info.tpl (revision 0) +++ in-commerce/checkout/discount_info.tpl (revision 12930) @@ -0,0 +1,22 @@ + + + +<inp2:m_Phrase label="lu_comm_DiscountInfo" /> + + + + +
    +

    + + : + + : + +
    + +

    +
    + + + \ No newline at end of file Index: in-commerce/checkout/login_register.tpl =================================================================== diff -u -N --- in-commerce/checkout/login_register.tpl (revision 0) +++ in-commerce/checkout/login_register.tpl (revision 12930) @@ -0,0 +1,38 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="LU_COMM_REGISTRATION"/> + + + + + + + + + + + + + +
    +
    + + + + + + +
    + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/checkout/preview.tpl =================================================================== diff -u -N --- in-commerce/checkout/preview.tpl (revision 0) +++ in-commerce/checkout/preview.tpl (revision 12930) @@ -0,0 +1,36 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_cart_Checkout"/> :: <inp2:m_Phrase label="lu_comm_OrderPreview"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/checkout/shipping.tpl =================================================================== diff -u -N --- in-commerce/checkout/shipping.tpl (revision 0) +++ in-commerce/checkout/shipping.tpl (revision 12930) @@ -0,0 +1,56 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_cart_Checkout"/> :: <inp2:m_Phrase label="lu_comm_ShippingInfo"/> + + + + + + + + + + + + + +
    + +
    + + + + +
    + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/checkout/shop_cart.tpl =================================================================== diff -u -N --- in-commerce/checkout/shop_cart.tpl (revision 0) +++ in-commerce/checkout/shop_cart.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_YourCart"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/img/american_express.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/buy.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/buy2.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/delete.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/edpick.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/master_card.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/new.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/no_picture.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/no_picture_list.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/novus.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/toprated.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/topseller.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/img/visa.gif =================================================================== diff -u -N Binary files differ Index: in-commerce/my_account/account.tpl =================================================================== diff -u -N --- in-commerce/my_account/account.tpl (revision 0) +++ in-commerce/my_account/account.tpl (revision 12930) @@ -0,0 +1,40 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/address.tpl =================================================================== diff -u -N --- in-commerce/my_account/address.tpl (revision 0) +++ in-commerce/my_account/address.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAddresses"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/address_edit.tpl =================================================================== diff -u -N --- in-commerce/my_account/address_edit.tpl (revision 0) +++ in-commerce/my_account/address_edit.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAddresses"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate.tpl (revision 0) +++ in-commerce/my_account/affiliate.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_agreement.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_agreement.tpl (revision 0) +++ in-commerce/my_account/affiliate_agreement.tpl (revision 12930) @@ -0,0 +1,16 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> + + + + +
    +

    +Place your affiliate terms & conditions here +

    +
    + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_materials.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_materials.tpl (revision 0) +++ in-commerce/my_account/affiliate_materials.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_payment_type.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_payment_type.tpl (revision 0) +++ in-commerce/my_account/affiliate_payment_type.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_payment_type_changed.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_payment_type_changed.tpl (revision 0) +++ in-commerce/my_account/affiliate_payment_type_changed.tpl (revision 12930) @@ -0,0 +1,36 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_payments.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_payments.tpl (revision 0) +++ in-commerce/my_account/affiliate_payments.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_stat.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_stat.tpl (revision 0) +++ in-commerce/my_account/affiliate_stat.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_stat_orders_list.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_stat_orders_list.tpl (revision 0) +++ in-commerce/my_account/affiliate_stat_orders_list.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_stat_visits_list.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_stat_visits_list.tpl (revision 0) +++ in-commerce/my_account/affiliate_stat_visits_list.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/affiliate_thankyou.tpl =================================================================== diff -u -N --- in-commerce/my_account/affiliate_thankyou.tpl (revision 0) +++ in-commerce/my_account/affiliate_thankyou.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/cancel_recurring.tpl =================================================================== diff -u -N --- in-commerce/my_account/cancel_recurring.tpl (revision 0) +++ in-commerce/my_account/cancel_recurring.tpl (revision 12930) @@ -0,0 +1,53 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + +
    + +
    + +
    +
    + + + +
    +
    +
    + " />  + " onClick="window.location.href=''" />  + + +
    +
    + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/cancel_recurring_ok.tpl =================================================================== diff -u -N --- in-commerce/my_account/cancel_recurring_ok.tpl (revision 0) +++ in-commerce/my_account/cancel_recurring_ok.tpl (revision 12930) @@ -0,0 +1,46 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyAccount"/> + + + + + + + + + + + + + +
    + + + + + + + + +
    + +
    + +
    +
    + + + +
    +
    + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/download.tpl =================================================================== diff -u -N --- in-commerce/my_account/download.tpl (revision 0) +++ in-commerce/my_account/download.tpl (revision 12930) @@ -0,0 +1 @@ + \ No newline at end of file Index: in-commerce/my_account/downloads.tpl =================================================================== diff -u -N --- in-commerce/my_account/downloads.tpl (revision 0) +++ in-commerce/my_account/downloads.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_YourDownloads"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/downloads_more.tpl =================================================================== diff -u -N --- in-commerce/my_account/downloads_more.tpl (revision 0) +++ in-commerce/my_account/downloads_more.tpl (revision 12930) @@ -0,0 +1,43 @@ + + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:p_Field name="Name"/> <inp2:m_Phrase label="lu_comm_downloads" /> + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/orders.tpl =================================================================== diff -u -N --- in-commerce/my_account/orders.tpl (revision 0) +++ in-commerce/my_account/orders.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_MyOrders"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/orders_detail.tpl =================================================================== diff -u -N --- in-commerce/my_account/orders_detail.tpl (revision 0) +++ in-commerce/my_account/orders_detail.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_OrderPreview"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/profile.tpl =================================================================== diff -u -N --- in-commerce/my_account/profile.tpl (revision 0) +++ in-commerce/my_account/profile.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_PersonalInfo"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/my_account/wishlist.tpl =================================================================== diff -u -N --- in-commerce/my_account/wishlist.tpl (revision 0) +++ in-commerce/my_account/wishlist.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_YourWishList"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/product/confirm_recommend.tpl =================================================================== diff -u -N --- in-commerce/product/confirm_recommend.tpl (revision 0) +++ in-commerce/product/confirm_recommend.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_recommend_confirm"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/product/details.tpl =================================================================== diff -u -N --- in-commerce/product/details.tpl (revision 0) +++ in-commerce/product/details.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> <inp2:p_Field name="Name"/> + + + + + + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/product/picture_fullsize.tpl =================================================================== diff -u -N --- in-commerce/product/picture_fullsize.tpl (revision 0) +++ in-commerce/product/picture_fullsize.tpl (revision 12930) @@ -0,0 +1,15 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> <inp2:p_Field name="Name"/> + + + + + + + + + + + \ No newline at end of file Index: in-commerce/product/rate_product.tpl =================================================================== diff -u -N --- in-commerce/product/rate_product.tpl (revision 0) +++ in-commerce/product/rate_product.tpl (revision 12930) @@ -0,0 +1,40 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> <inp2:p_Field name="Name"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/product/recommend_product.tpl =================================================================== diff -u -N --- in-commerce/product/recommend_product.tpl (revision 0) +++ in-commerce/product/recommend_product.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> <inp2:p_Field name="Name"/> :: <inp2:m_Phrase label="lu_comm_RecommendThisProduct"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/product/review_product.tpl =================================================================== diff -u -N --- in-commerce/product/review_product.tpl (revision 0) +++ in-commerce/product/review_product.tpl (revision 12930) @@ -0,0 +1,40 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> <inp2:p_Field name="Name"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/advanced_search.tpl =================================================================== diff -u -N --- in-commerce/store/advanced_search.tpl (revision 0) +++ in-commerce/store/advanced_search.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_AdvancedSearch"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/category.tpl =================================================================== diff -u -N --- in-commerce/store/category.tpl (revision 0) +++ in-commerce/store/category.tpl (revision 12930) @@ -0,0 +1,62 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/contact_info.tpl =================================================================== diff -u -N --- in-commerce/store/contact_info.tpl (revision 0) +++ in-commerce/store/contact_info.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_ContactInformation"/> + + + + + + + + + + + + + +
    +
    + + + + +
    + + + + +
    + + + + + + + Index: in-commerce/store/editor_pick_products.tpl =================================================================== diff -u -N --- in-commerce/store/editor_pick_products.tpl (revision 0) +++ in-commerce/store/editor_pick_products.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_EditorsPicks"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/featured_products.tpl =================================================================== diff -u -N --- in-commerce/store/featured_products.tpl (revision 0) +++ in-commerce/store/featured_products.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_FeaturedProducts"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/manufacturer_products.tpl =================================================================== diff -u -N --- in-commerce/store/manufacturer_products.tpl (revision 0) +++ in-commerce/store/manufacturer_products.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_ProductsBy"/> <inp2:manuf_Field name="Name" /> + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/manufacturers.tpl =================================================================== diff -u -N --- in-commerce/store/manufacturers.tpl (revision 0) +++ in-commerce/store/manufacturers.tpl (revision 12930) @@ -0,0 +1,42 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_Manufacturers"/> + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/new_products.tpl =================================================================== diff -u -N --- in-commerce/store/new_products.tpl (revision 0) +++ in-commerce/store/new_products.tpl (revision 12930) @@ -0,0 +1,41 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_NewProducts"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/recent.tpl =================================================================== diff -u -N --- in-commerce/store/recent.tpl (revision 0) +++ in-commerce/store/recent.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_RecentlyViewed"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/store/search_results.tpl =================================================================== diff -u -N --- in-commerce/store/search_results.tpl (revision 0) +++ in-commerce/store/search_results.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_SearchResults"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + Index: in-commerce/store/top_seller_products.tpl =================================================================== diff -u -N --- in-commerce/store/top_seller_products.tpl (revision 0) +++ in-commerce/store/top_seller_products.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_include template="in-commerce/blocks/categories/title_path"/> :: <inp2:m_Phrase label="lu_comm_TopSellers"/> + + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: in-commerce/index.tpl =================================================================== diff -u -N --- in-commerce/index.tpl (revision 0) +++ in-commerce/index.tpl (revision 12930) @@ -0,0 +1,53 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + Index: inc/lbox/effects.js =================================================================== diff -u -N --- inc/lbox/effects.js (revision 0) +++ inc/lbox/effects.js (revision 12930) @@ -0,0 +1,903 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// Contributors: +// Justin Palmer (http://encytemedia.com/) +// Mark Pilgrim (http://diveintomark.org/) +// Martin Bialasinki +// +// See scriptaculous.js for full license. + +/* ------------- element ext -------------- */ + +// converts rgb() and #xxx to #xxxxxx format, +// returns self (or first argument) if not convertable +String.prototype.parseColor = function() { + var color = '#'; + if(this.slice(0,4) == 'rgb(') { + var cols = this.slice(4,this.length-1).split(','); + var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); + } else { + if(this.slice(0,1) == '#') { + if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); + if(this.length==7) color = this.toLowerCase(); + } + } + return(color.length==7 ? color : (arguments[0] || this)); +} + +Element.collectTextNodes = function(element) { + return $A($(element).childNodes).collect( function(node) { + return (node.nodeType==3 ? node.nodeValue : + (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); + }).flatten().join(''); +} + +Element.collectTextNodesIgnoreClass = function(element, className) { + return $A($(element).childNodes).collect( function(node) { + return (node.nodeType==3 ? node.nodeValue : + ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? + Element.collectTextNodes(node) : '')); + }).flatten().join(''); +} + +Element.setStyle = function(element, style) { + element = $(element); + for(k in style) element.style[k.camelize()] = style[k]; +} + +Element.setContentZoom = function(element, percent) { + Element.setStyle(element, {fontSize: (percent/100) + 'em'}); + if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); +} + +Element.getOpacity = function(element){ + var opacity; + if (opacity = Element.getStyle(element, 'opacity')) + return parseFloat(opacity); + if (opacity = (Element.getStyle(element, 'filter') || '').match(/alpha\(opacity=(.*)\)/)) + if(opacity[1]) return parseFloat(opacity[1]) / 100; + return 1.0; +} + +Element.setOpacity = function(element, value){ + element= $(element); + if (value == 1){ + Element.setStyle(element, { opacity: + (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? + 0.999999 : null }); + if(/MSIE/.test(navigator.userAgent)) + Element.setStyle(element, {filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')}); + } else { + if(value < 0.00001) value = 0; + Element.setStyle(element, {opacity: value}); + if(/MSIE/.test(navigator.userAgent)) + Element.setStyle(element, + { filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'') + + 'alpha(opacity='+value*100+')' }); + } +} + +Element.getInlineOpacity = function(element){ + return $(element).style.opacity || ''; +} + +Element.childrenWithClassName = function(element, className) { + return $A($(element).getElementsByTagName('*')).select( + function(c) { return Element.hasClassName(c, className) }); +} + +Array.prototype.call = function() { + var args = arguments; + this.each(function(f){ f.apply(this, args) }); +} + +/*--------------------------------------------------------------------------*/ + +var Effect = { + tagifyText: function(element) { + var tagifyStyle = 'position:relative'; + if(/MSIE/.test(navigator.userAgent)) tagifyStyle += ';zoom:1'; + element = $(element); + $A(element.childNodes).each( function(child) { + if(child.nodeType==3) { + child.nodeValue.toArray().each( function(character) { + element.insertBefore( + Builder.node('span',{style: tagifyStyle}, + character == ' ' ? String.fromCharCode(160) : character), + child); + }); + Element.remove(child); + } + }); + }, + multiple: function(element, effect) { + var elements; + if(((typeof element == 'object') || + (typeof element == 'function')) && + (element.length)) + elements = element; + else + elements = $(element).childNodes; + + var options = Object.extend({ + speed: 0.1, + delay: 0.0 + }, arguments[2] || {}); + var masterDelay = options.delay; + + $A(elements).each( function(element, index) { + new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); + }); + }, + PAIRS: { + 'slide': ['SlideDown','SlideUp'], + 'blind': ['BlindDown','BlindUp'], + 'appear': ['Appear','Fade'] + }, + toggle: function(element, effect) { + element = $(element); + effect = (effect || 'appear').toLowerCase(); + var options = Object.extend({ + queue: { position:'end', scope:(element.id || 'global') } + }, arguments[2] || {}); + Effect[Element.visible(element) ? + Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); + } +}; + +var Effect2 = Effect; // deprecated + +/* ------------- transitions ------------- */ + +Effect.Transitions = {} + +Effect.Transitions.linear = function(pos) { + return pos; +} +Effect.Transitions.sinoidal = function(pos) { + return (-Math.cos(pos*Math.PI)/2) + 0.5; +} +Effect.Transitions.reverse = function(pos) { + return 1-pos; +} +Effect.Transitions.flicker = function(pos) { + return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; +} +Effect.Transitions.wobble = function(pos) { + return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; +} +Effect.Transitions.pulse = function(pos) { + return (Math.floor(pos*10) % 2 == 0 ? + (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10))); +} +Effect.Transitions.none = function(pos) { + return 0; +} +Effect.Transitions.full = function(pos) { + return 1; +} + +/* ------------- core effects ------------- */ + +Effect.ScopedQueue = Class.create(); +Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { + initialize: function() { + this.effects = []; + this.interval = null; + }, + _each: function(iterator) { + this.effects._each(iterator); + }, + add: function(effect) { + var timestamp = new Date().getTime(); + + var position = (typeof effect.options.queue == 'string') ? + effect.options.queue : effect.options.queue.position; + + switch(position) { + case 'front': + // move unstarted effects after this effect + this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { + e.startOn += effect.finishOn; + e.finishOn += effect.finishOn; + }); + break; + case 'end': + // start effect after last queued effect has finished + timestamp = this.effects.pluck('finishOn').max() || timestamp; + break; + } + + effect.startOn += timestamp; + effect.finishOn += timestamp; + this.effects.push(effect); + if(!this.interval) + this.interval = setInterval(this.loop.bind(this), 40); + }, + remove: function(effect) { + this.effects = this.effects.reject(function(e) { return e==effect }); + if(this.effects.length == 0) { + clearInterval(this.interval); + this.interval = null; + } + }, + loop: function() { + var timePos = new Date().getTime(); + this.effects.invoke('loop', timePos); + } +}); + +Effect.Queues = { + instances: $H(), + get: function(queueName) { + if(typeof queueName != 'string') return queueName; + + if(!this.instances[queueName]) + this.instances[queueName] = new Effect.ScopedQueue(); + + return this.instances[queueName]; + } +} +Effect.Queue = Effect.Queues.get('global'); + +Effect.DefaultOptions = { + transition: Effect.Transitions.sinoidal, + duration: 1.0, // seconds + fps: 25.0, // max. 25fps due to Effect.Queue implementation + sync: false, // true for combining + from: 0.0, + to: 1.0, + delay: 0.0, + queue: 'parallel' +} + +Effect.Base = function() {}; +Effect.Base.prototype = { + position: null, + start: function(options) { + this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {}); + this.currentFrame = 0; + this.state = 'idle'; + this.startOn = this.options.delay*1000; + this.finishOn = this.startOn + (this.options.duration*1000); + this.event('beforeStart'); + if(!this.options.sync) + Effect.Queues.get(typeof this.options.queue == 'string' ? + 'global' : this.options.queue.scope).add(this); + }, + loop: function(timePos) { + if(timePos >= this.startOn) { + if(timePos >= this.finishOn) { + this.render(1.0); + this.cancel(); + this.event('beforeFinish'); + if(this.finish) this.finish(); + this.event('afterFinish'); + return; + } + var pos = (timePos - this.startOn) / (this.finishOn - this.startOn); + var frame = Math.round(pos * this.options.fps * this.options.duration); + if(frame > this.currentFrame) { + this.render(pos); + this.currentFrame = frame; + } + } + }, + render: function(pos) { + if(this.state == 'idle') { + this.state = 'running'; + this.event('beforeSetup'); + if(this.setup) this.setup(); + this.event('afterSetup'); + } + if(this.state == 'running') { + if(this.options.transition) pos = this.options.transition(pos); + pos *= (this.options.to-this.options.from); + pos += this.options.from; + this.position = pos; + this.event('beforeUpdate'); + if(this.update) this.update(pos); + this.event('afterUpdate'); + } + }, + cancel: function() { + if(!this.options.sync) + Effect.Queues.get(typeof this.options.queue == 'string' ? + 'global' : this.options.queue.scope).remove(this); + this.state = 'finished'; + }, + event: function(eventName) { + if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); + if(this.options[eventName]) this.options[eventName](this); + }, + inspect: function() { + return '#'; + } +} + +Effect.Parallel = Class.create(); +Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { + initialize: function(effects) { + this.effects = effects || []; + this.start(arguments[1]); + }, + update: function(position) { + this.effects.invoke('render', position); + }, + finish: function(position) { + this.effects.each( function(effect) { + effect.render(1.0); + effect.cancel(); + effect.event('beforeFinish'); + if(effect.finish) effect.finish(position); + effect.event('afterFinish'); + }); + } +}); + +Effect.Opacity = Class.create(); +Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + // make this work on IE on elements without 'layout' + if(/MSIE/.test(navigator.userAgent) && (!this.element.hasLayout)) + Element.setStyle(this.element, {zoom: 1}); + var options = Object.extend({ + from: Element.getOpacity(this.element) || 0.0, + to: 1.0 + }, arguments[1] || {}); + this.start(options); + }, + update: function(position) { + Element.setOpacity(this.element, position); + } +}); + +Effect.Move = Class.create(); +Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + var options = Object.extend({ + x: 0, + y: 0, + mode: 'relative' + }, arguments[1] || {}); + this.start(options); + }, + setup: function() { + // Bug in Opera: Opera returns the "real" position of a static element or + // relative element that does not have top/left explicitly set. + // ==> Always set top and left for position relative elements in your stylesheets + // (to 0 if you do not need them) + Element.makePositioned(this.element); + this.originalLeft = parseFloat(Element.getStyle(this.element,'left') || '0'); + this.originalTop = parseFloat(Element.getStyle(this.element,'top') || '0'); + if(this.options.mode == 'absolute') { + // absolute movement, so we need to calc deltaX and deltaY + this.options.x = this.options.x - this.originalLeft; + this.options.y = this.options.y - this.originalTop; + } + }, + update: function(position) { + Element.setStyle(this.element, { + left: this.options.x * position + this.originalLeft + 'px', + top: this.options.y * position + this.originalTop + 'px' + }); + } +}); + +// for backwards compatibility +Effect.MoveBy = function(element, toTop, toLeft) { + return new Effect.Move(element, + Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); +}; + +Effect.Scale = Class.create(); +Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { + initialize: function(element, percent) { + this.element = $(element) + var options = Object.extend({ + scaleX: true, + scaleY: true, + scaleContent: true, + scaleFromCenter: false, + scaleMode: 'box', // 'box' or 'contents' or {} with provided values + scaleFrom: 100.0, + scaleTo: percent + }, arguments[2] || {}); + this.start(options); + }, + setup: function() { + this.restoreAfterFinish = this.options.restoreAfterFinish || false; + this.elementPositioning = Element.getStyle(this.element,'position'); + + this.originalStyle = {}; + ['top','left','width','height','fontSize'].each( function(k) { + this.originalStyle[k] = this.element.style[k]; + }.bind(this)); + + this.originalTop = this.element.offsetTop; + this.originalLeft = this.element.offsetLeft; + + var fontSize = Element.getStyle(this.element,'font-size') || '100%'; + ['em','px','%'].each( function(fontSizeType) { + if(fontSize.indexOf(fontSizeType)>0) { + this.fontSize = parseFloat(fontSize); + this.fontSizeType = fontSizeType; + } + }.bind(this)); + + this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; + + this.dims = null; + if(this.options.scaleMode=='box') + this.dims = [this.element.offsetHeight, this.element.offsetWidth]; + if(/^content/.test(this.options.scaleMode)) + this.dims = [this.element.scrollHeight, this.element.scrollWidth]; + if(!this.dims) + this.dims = [this.options.scaleMode.originalHeight, + this.options.scaleMode.originalWidth]; + }, + update: function(position) { + var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); + if(this.options.scaleContent && this.fontSize) + Element.setStyle(this.element, {fontSize: this.fontSize * currentScale + this.fontSizeType }); + this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); + }, + finish: function(position) { + if (this.restoreAfterFinish) Element.setStyle(this.element, this.originalStyle); + }, + setDimensions: function(height, width) { + var d = {}; + if(this.options.scaleX) d.width = width + 'px'; + if(this.options.scaleY) d.height = height + 'px'; + if(this.options.scaleFromCenter) { + var topd = (height - this.dims[0])/2; + var leftd = (width - this.dims[1])/2; + if(this.elementPositioning == 'absolute') { + if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; + if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; + } else { + if(this.options.scaleY) d.top = -topd + 'px'; + if(this.options.scaleX) d.left = -leftd + 'px'; + } + } + Element.setStyle(this.element, d); + } +}); + +Effect.Highlight = Class.create(); +Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); + this.start(options); + }, + setup: function() { + // Prevent executing on elements not in the layout flow + if(Element.getStyle(this.element, 'display')=='none') { this.cancel(); return; } + // Disable background image during the effect + this.oldStyle = { + backgroundImage: Element.getStyle(this.element, 'background-image') }; + Element.setStyle(this.element, {backgroundImage: 'none'}); + if(!this.options.endcolor) + this.options.endcolor = Element.getStyle(this.element, 'background-color').parseColor('#ffffff'); + if(!this.options.restorecolor) + this.options.restorecolor = Element.getStyle(this.element, 'background-color'); + // init color calculations + this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); + this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); + }, + update: function(position) { + Element.setStyle(this.element,{backgroundColor: $R(0,2).inject('#',function(m,v,i){ + return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); + }, + finish: function() { + Element.setStyle(this.element, Object.extend(this.oldStyle, { + backgroundColor: this.options.restorecolor + })); + } +}); + +Effect.ScrollTo = Class.create(); +Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { + initialize: function(element) { + this.element = $(element); + this.start(arguments[1] || {}); + }, + setup: function() { + Position.prepare(); + var offsets = Position.cumulativeOffset(this.element); + if(this.options.offset) offsets[1] += this.options.offset; + var max = window.innerHeight ? + window.height - window.innerHeight : + document.body.scrollHeight - + (document.documentElement.clientHeight ? + document.documentElement.clientHeight : document.body.clientHeight); + this.scrollStart = Position.deltaY; + this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; + }, + update: function(position) { + Position.prepare(); + window.scrollTo(Position.deltaX, + this.scrollStart + (position*this.delta)); + } +}); + +/* ------------- combination effects ------------- */ + +Effect.Fade = function(element) { + var oldOpacity = Element.getInlineOpacity(element); + var options = Object.extend({ + from: Element.getOpacity(element) || 1.0, + to: 0.0, + afterFinishInternal: function(effect) { with(Element) { + if(effect.options.to!=0) return; + hide(effect.element); + setStyle(effect.element, {opacity: oldOpacity}); }} + }, arguments[1] || {}); + return new Effect.Opacity(element,options); +} + +Effect.Appear = function(element) { + var options = Object.extend({ + from: (Element.getStyle(element, 'display') == 'none' ? 0.0 : Element.getOpacity(element) || 0.0), + to: 1.0, + beforeSetup: function(effect) { with(Element) { + setOpacity(effect.element, effect.options.from); + show(effect.element); }} + }, arguments[1] || {}); + return new Effect.Opacity(element,options); +} + +Effect.Puff = function(element) { + element = $(element); + var oldStyle = { opacity: Element.getInlineOpacity(element), position: Element.getStyle(element, 'position') }; + return new Effect.Parallel( + [ new Effect.Scale(element, 200, + { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], + Object.extend({ duration: 1.0, + beforeSetupInternal: function(effect) { with(Element) { + setStyle(effect.effects[0].element, {position: 'absolute'}); }}, + afterFinishInternal: function(effect) { with(Element) { + hide(effect.effects[0].element); + setStyle(effect.effects[0].element, oldStyle); }} + }, arguments[1] || {}) + ); +} + +Effect.BlindUp = function(element) { + element = $(element); + Element.makeClipping(element); + return new Effect.Scale(element, 0, + Object.extend({ scaleContent: false, + scaleX: false, + restoreAfterFinish: true, + afterFinishInternal: function(effect) { with(Element) { + [hide, undoClipping].call(effect.element); }} + }, arguments[1] || {}) + ); +} + +Effect.BlindDown = function(element) { + element = $(element); + var oldHeight = Element.getStyle(element, 'height'); + var elementDimensions = Element.getDimensions(element); + return new Effect.Scale(element, 100, + Object.extend({ scaleContent: false, + scaleX: false, + scaleFrom: 0, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { with(Element) { + makeClipping(effect.element); + setStyle(effect.element, {height: '0px'}); + show(effect.element); + }}, + afterFinishInternal: function(effect) { with(Element) { + undoClipping(effect.element); + setStyle(effect.element, {height: oldHeight}); + }} + }, arguments[1] || {}) + ); +} + +Effect.SwitchOff = function(element) { + element = $(element); + var oldOpacity = Element.getInlineOpacity(element); + return new Effect.Appear(element, { + duration: 0.4, + from: 0, + transition: Effect.Transitions.flicker, + afterFinishInternal: function(effect) { + new Effect.Scale(effect.element, 1, { + duration: 0.3, scaleFromCenter: true, + scaleX: false, scaleContent: false, restoreAfterFinish: true, + beforeSetup: function(effect) { with(Element) { + [makePositioned,makeClipping].call(effect.element); + }}, + afterFinishInternal: function(effect) { with(Element) { + [hide,undoClipping,undoPositioned].call(effect.element); + setStyle(effect.element, {opacity: oldOpacity}); + }} + }) + } + }); +} + +Effect.DropOut = function(element) { + element = $(element); + var oldStyle = { + top: Element.getStyle(element, 'top'), + left: Element.getStyle(element, 'left'), + opacity: Element.getInlineOpacity(element) }; + return new Effect.Parallel( + [ new Effect.Move(element, {x: 0, y: 100, sync: true }), + new Effect.Opacity(element, { sync: true, to: 0.0 }) ], + Object.extend( + { duration: 0.5, + beforeSetup: function(effect) { with(Element) { + makePositioned(effect.effects[0].element); }}, + afterFinishInternal: function(effect) { with(Element) { + [hide, undoPositioned].call(effect.effects[0].element); + setStyle(effect.effects[0].element, oldStyle); }} + }, arguments[1] || {})); +} + +Effect.Shake = function(element) { + element = $(element); + var oldStyle = { + top: Element.getStyle(element, 'top'), + left: Element.getStyle(element, 'left') }; + return new Effect.Move(element, + { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { + new Effect.Move(effect.element, + { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { with(Element) { + undoPositioned(effect.element); + setStyle(effect.element, oldStyle); + }}}) }}) }}) }}) }}) }}); +} + +Effect.SlideDown = function(element) { + element = $(element); + Element.cleanWhitespace(element); + // SlideDown need to have the content of the element wrapped in a container element with fixed height! + var oldInnerBottom = Element.getStyle(element.firstChild, 'bottom'); + var elementDimensions = Element.getDimensions(element); + return new Effect.Scale(element, 100, Object.extend({ + scaleContent: false, + scaleX: false, + scaleFrom: 0, + scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, + restoreAfterFinish: true, + afterSetup: function(effect) { with(Element) { + makePositioned(effect.element); + makePositioned(effect.element.firstChild); + if(window.opera) setStyle(effect.element, {top: ''}); + makeClipping(effect.element); + setStyle(effect.element, {height: '0px'}); + show(element); }}, + afterUpdateInternal: function(effect) { with(Element) { + setStyle(effect.element.firstChild, {bottom: + (effect.dims[0] - effect.element.clientHeight) + 'px' }); }}, + afterFinishInternal: function(effect) { with(Element) { + undoClipping(effect.element); + undoPositioned(effect.element.firstChild); + undoPositioned(effect.element); + setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }} + }, arguments[1] || {}) + ); +} + +Effect.SlideUp = function(element) { + element = $(element); + Element.cleanWhitespace(element); + var oldInnerBottom = Element.getStyle(element.firstChild, 'bottom'); + return new Effect.Scale(element, 0, + Object.extend({ scaleContent: false, + scaleX: false, + scaleMode: 'box', + scaleFrom: 100, + restoreAfterFinish: true, + beforeStartInternal: function(effect) { with(Element) { + makePositioned(effect.element); + makePositioned(effect.element.firstChild); + if(window.opera) setStyle(effect.element, {top: ''}); + makeClipping(effect.element); + show(element); }}, + afterUpdateInternal: function(effect) { with(Element) { + setStyle(effect.element.firstChild, {bottom: + (effect.dims[0] - effect.element.clientHeight) + 'px' }); }}, + afterFinishInternal: function(effect) { with(Element) { + [hide, undoClipping].call(effect.element); + undoPositioned(effect.element.firstChild); + undoPositioned(effect.element); + setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }} + }, arguments[1] || {}) + ); +} + +// Bug in opera makes the TD containing this element expand for a instance after finish +Effect.Squish = function(element) { + return new Effect.Scale(element, window.opera ? 1 : 0, + { restoreAfterFinish: true, + beforeSetup: function(effect) { with(Element) { + makeClipping(effect.element); }}, + afterFinishInternal: function(effect) { with(Element) { + hide(effect.element); + undoClipping(effect.element); }} + }); +} + +Effect.Grow = function(element) { + element = $(element); + var options = Object.extend({ + direction: 'center', + moveTransistion: Effect.Transitions.sinoidal, + scaleTransition: Effect.Transitions.sinoidal, + opacityTransition: Effect.Transitions.full + }, arguments[1] || {}); + var oldStyle = { + top: element.style.top, + left: element.style.left, + height: element.style.height, + width: element.style.width, + opacity: Element.getInlineOpacity(element) }; + + var dims = Element.getDimensions(element); + var initialMoveX, initialMoveY; + var moveX, moveY; + + switch (options.direction) { + case 'top-left': + initialMoveX = initialMoveY = moveX = moveY = 0; + break; + case 'top-right': + initialMoveX = dims.width; + initialMoveY = moveY = 0; + moveX = -dims.width; + break; + case 'bottom-left': + initialMoveX = moveX = 0; + initialMoveY = dims.height; + moveY = -dims.height; + break; + case 'bottom-right': + initialMoveX = dims.width; + initialMoveY = dims.height; + moveX = -dims.width; + moveY = -dims.height; + break; + case 'center': + initialMoveX = dims.width / 2; + initialMoveY = dims.height / 2; + moveX = -dims.width / 2; + moveY = -dims.height / 2; + break; + } + + return new Effect.Move(element, { + x: initialMoveX, + y: initialMoveY, + duration: 0.01, + beforeSetup: function(effect) { with(Element) { + hide(effect.element); + makeClipping(effect.element); + makePositioned(effect.element); + }}, + afterFinishInternal: function(effect) { + new Effect.Parallel( + [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), + new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), + new Effect.Scale(effect.element, 100, { + scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, + sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) + ], Object.extend({ + beforeSetup: function(effect) { with(Element) { + setStyle(effect.effects[0].element, {height: '0px'}); + show(effect.effects[0].element); }}, + afterFinishInternal: function(effect) { with(Element) { + [undoClipping, undoPositioned].call(effect.effects[0].element); + setStyle(effect.effects[0].element, oldStyle); }} + }, options) + ) + } + }); +} + +Effect.Shrink = function(element) { + element = $(element); + var options = Object.extend({ + direction: 'center', + moveTransistion: Effect.Transitions.sinoidal, + scaleTransition: Effect.Transitions.sinoidal, + opacityTransition: Effect.Transitions.none + }, arguments[1] || {}); + var oldStyle = { + top: element.style.top, + left: element.style.left, + height: element.style.height, + width: element.style.width, + opacity: Element.getInlineOpacity(element) }; + + var dims = Element.getDimensions(element); + var moveX, moveY; + + switch (options.direction) { + case 'top-left': + moveX = moveY = 0; + break; + case 'top-right': + moveX = dims.width; + moveY = 0; + break; + case 'bottom-left': + moveX = 0; + moveY = dims.height; + break; + case 'bottom-right': + moveX = dims.width; + moveY = dims.height; + break; + case 'center': + moveX = dims.width / 2; + moveY = dims.height / 2; + break; + } + + return new Effect.Parallel( + [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), + new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), + new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) + ], Object.extend({ + beforeStartInternal: function(effect) { with(Element) { + [makePositioned, makeClipping].call(effect.effects[0].element) }}, + afterFinishInternal: function(effect) { with(Element) { + [hide, undoClipping, undoPositioned].call(effect.effects[0].element); + setStyle(effect.effects[0].element, oldStyle); }} + }, options) + ); +} + +Effect.Pulsate = function(element) { + element = $(element); + var options = arguments[1] || {}; + var oldOpacity = Element.getInlineOpacity(element); + var transition = options.transition || Effect.Transitions.sinoidal; + var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) }; + reverser.bind(transition); + return new Effect.Opacity(element, + Object.extend(Object.extend({ duration: 3.0, from: 0, + afterFinishInternal: function(effect) { Element.setStyle(effect.element, {opacity: oldOpacity}); } + }, options), {transition: reverser})); +} + +Effect.Fold = function(element) { + element = $(element); + var oldStyle = { + top: element.style.top, + left: element.style.left, + width: element.style.width, + height: element.style.height }; + Element.makeClipping(element); + return new Effect.Scale(element, 5, Object.extend({ + scaleContent: false, + scaleX: false, + afterFinishInternal: function(effect) { + new Effect.Scale(element, 1, { + scaleContent: false, + scaleY: false, + afterFinishInternal: function(effect) { with(Element) { + [hide, undoClipping].call(effect.element); + setStyle(effect.element, oldStyle); + }} }); + }}, arguments[1] || {})); +} Index: inc/lbox/lightbox.css =================================================================== diff -u -N --- inc/lbox/lightbox.css (revision 0) +++ inc/lbox/lightbox.css (revision 12930) @@ -0,0 +1,79 @@ +#lightbox{ + position: absolute; + left: 0; + width: 100%; + z-index: 100; + text-align: center; + line-height: 0; + } + +#lightbox a img{ border: none; } + +#outerImageContainer{ + position: relative; + background-color: #fff; + width: 250px; + height: 250px; + margin: 0 auto; + } + +#imageContainer{ + padding: 10px; + } + +#loading{ + position: absolute; + top: 40%; + left: 0%; + height: 25%; + width: 100%; + text-align: center; + line-height: 0; + } +#hoverNav{ + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 10; + } +#imageContainer>#hoverNav{ left: 0;} +#hoverNav a{ outline: none;} + +#prevLink, #nextLink{ + width: 49%; + height: 100%; + background: transparent url(../../img/s.gif) no-repeat; /* Trick IE into showing hover */ + display: block; + } +#prevLink { left: 0; float: left;} +#nextLink { right: 0; float: right;} +#prevLink:hover, #prevLink:visited:hover { background: url(../../img/lbox/prevlabel.gif) left 15% no-repeat; } +#nextLink:hover, #nextLink:visited:hover { background: url(../../img/lbox/nextlabel.gif) right 15% no-repeat; } + + +#imageDataContainer{ + font: 10px Verdana, Helvetica, sans-serif; + background-color: #fff; + margin: 0 auto; + line-height: 1.4em; + overflow: auto; + width: 100% + } + +#imageData{ padding:0 10px; color: #666; } +#imageData #imageDetails{ width: 70%; float: left; text-align: left; } +#imageData #caption{ font-weight: bold; } +#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; } +#imageData #bottomNavClose{ width: 66px; float: right; padding-bottom: 0.7em; } + +#overlay{ + position: absolute; + top: 0; + left: 0; + z-index: 90; + width: 100%; + height: 500px; + background-color: #000; + } \ No newline at end of file Index: inc/lbox/lightbox.js =================================================================== diff -u -N --- inc/lbox/lightbox.js (revision 0) +++ inc/lbox/lightbox.js (revision 12930) @@ -0,0 +1,817 @@ +// ----------------------------------------------------------------------------------- +// +// Lightbox v2.03.3 +// by Lokesh Dhakar - http://www.huddletogether.com +// 5/21/06 +// +// For more information on this script, visit: +// http://huddletogether.com/projects/lightbox2/ +// +// Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/ +// +// Credit also due to those who have helped, inspired, and made their code available to the public. +// Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), Thomas Fuchs(mir.aculo.us), and others. +// +// +// ----------------------------------------------------------------------------------- +/* + + Table of Contents + ----------------- + Configuration + Global Variables + + Extending Built-in Objects + - Object.extend(Element) + - Array.prototype.removeDuplicates() + - Array.prototype.empty() + + Lightbox Class Declaration + - initialize() + - updateImageList() + - start() + - changeImage() + - resizeImageContainer() + - showImage() + - updateDetails() + - updateNav() + - enableKeyboardNav() + - disableKeyboardNav() + - keyboardAction() + - preloadNeighborImages() + - end() + + Miscellaneous Functions + - getPageScroll() + - getPageSize() + - getKey() + - listenKey() + - showSelectBoxes() + - hideSelectBoxes() + - showFlash() + - hideFlash() + - pause() + - initLightbox() + + Function Calls + - addLoadEvent(initLightbox) + +*/ +// ----------------------------------------------------------------------------------- + +// +// Configuration +// +var fileLoadingImage = inportalBase+'img/lbox/loading.gif'; +var fileBottomNavCloseImage = inportalBase+'img/lbox/closelabel.gif'; + +var overlayOpacity = 0.2; // controls transparency of shadow overlay + +var animate = true; // toggles resizing animations +var resizeSpeed = 7; // controls the speed of the image resizing animations (1=slowest and 10=fastest) + +var borderSize = 10; //if you adjust the padding in the CSS, you will need to update this variable + +// ----------------------------------------------------------------------------------- + +// +// Global Variables +// +var imageArray = new Array; +var activeImage; + +if(animate == true){ + overlayDuration = 0.2; // shadow fade in/out duration + if(resizeSpeed > 10){ resizeSpeed = 10;} + if(resizeSpeed < 1){ resizeSpeed = 1;} + resizeDuration = (11 - resizeSpeed) * 0.15; +} else { + overlayDuration = 0; + resizeDuration = 0; +} + +// ----------------------------------------------------------------------------------- + +// +// Additional methods for Element added by SU, Couloir +// - further additions by Lokesh Dhakar (huddletogether.com) +// +Object.extend(Element, { + getWidth: function(element) { + element = $(element); + return element.offsetWidth; + }, + setWidth: function(element,w) { + element = $(element); + element.style.width = w +"px"; + }, + setHeight: function(element,h) { + element = $(element); + element.style.height = h +"px"; + }, + setTop: function(element,t) { + element = $(element); + element.style.top = t +"px"; + }, + setLeft: function(element,l) { + element = $(element); + element.style.left = l +"px"; + }, + setSrc: function(element,src) { + element = $(element); + element.src = src; + }, + setHref: function(element,href) { + element = $(element); + element.href = href; + }, + setInnerHTML: function(element,content) { + element = $(element); + element.innerHTML = content; + } +}); + +// ----------------------------------------------------------------------------------- + +// +// Extending built-in Array object +// - array.removeDuplicates() +// - array.empty() +// +Array.prototype.removeDuplicates = function () { + for(i = 0; i < this.length; i++){ + for(j = this.length-1; j>i; j--){ + if(this[i][0] == this[j][0]){ + this.splice(j,1); + } + } + } +} + +// ----------------------------------------------------------------------------------- + +Array.prototype.empty = function () { + for(i = 0; i <= this.length; i++){ + this.shift(); + } +} + +// ----------------------------------------------------------------------------------- + +// +// Lightbox Class Declaration +// - initialize() +// - start() +// - changeImage() +// - resizeImageContainer() +// - showImage() +// - updateDetails() +// - updateNav() +// - enableKeyboardNav() +// - disableKeyboardNav() +// - keyboardNavAction() +// - preloadNeighborImages() +// - end() +// +// Structuring of code inspired by Scott Upton (http://www.uptonic.com/) +// +var Lightbox = Class.create(); + +Lightbox.prototype = { + + // initialize() + // Constructor runs on completion of the DOM loading. Calls updateImageList and then + // the function inserts html at the bottom of the page which is used to display the shadow + // overlay and the image container. + // + initialize: function() { + + this.updateImageList(); + + // Code inserts html at the bottom of the page that looks similar to this: + // + //
    + // + + + var objBody = document.getElementsByTagName("body").item(0); + + var objOverlay = document.createElement("div"); + objOverlay.setAttribute('id','overlay'); + objOverlay.style.display = 'none'; + objOverlay.onclick = function() { myLightbox.end(); } + objBody.appendChild(objOverlay); + + var objLightbox = document.createElement("div"); + objLightbox.setAttribute('id','lightbox'); + objLightbox.style.display = 'none'; + objLightbox.onclick = function(e) { // close Lightbox is user clicks shadow overlay + if (!e) var e = window.event; + var clickObj = Event.element(e).id; + if ( clickObj == 'lightbox') { + myLightbox.end(); + } + }; + objBody.appendChild(objLightbox); + + var objOuterImageContainer = document.createElement("div"); + objOuterImageContainer.setAttribute('id','outerImageContainer'); + objLightbox.appendChild(objOuterImageContainer); + + // When Lightbox starts it will resize itself from 250 by 250 to the current image dimension. + // If animations are turned off, it will be hidden as to prevent a flicker of a + // white 250 by 250 box. + if(animate){ + Element.setWidth('outerImageContainer', 250); + Element.setHeight('outerImageContainer', 250); + } else { + Element.setWidth('outerImageContainer', 1); + Element.setHeight('outerImageContainer', 1); + } + + var objImageContainer = document.createElement("div"); + objImageContainer.setAttribute('id','imageContainer'); + objOuterImageContainer.appendChild(objImageContainer); + + var objLightboxImage = document.createElement("img"); + objLightboxImage.setAttribute('id','lightboxImage'); + objImageContainer.appendChild(objLightboxImage); + + var objHoverNav = document.createElement("div"); + objHoverNav.setAttribute('id','hoverNav'); + objImageContainer.appendChild(objHoverNav); + + var objPrevLink = document.createElement("a"); + objPrevLink.setAttribute('id','prevLink'); + objPrevLink.setAttribute('href','#'); + objHoverNav.appendChild(objPrevLink); + + var objNextLink = document.createElement("a"); + objNextLink.setAttribute('id','nextLink'); + objNextLink.setAttribute('href','#'); + objHoverNav.appendChild(objNextLink); + + var objLoading = document.createElement("div"); + objLoading.setAttribute('id','loading'); + objImageContainer.appendChild(objLoading); + + var objLoadingLink = document.createElement("a"); + objLoadingLink.setAttribute('id','loadingLink'); + objLoadingLink.setAttribute('href','#'); + objLoadingLink.onclick = function() { myLightbox.end(); return false; } + objLoading.appendChild(objLoadingLink); + + var objLoadingImage = document.createElement("img"); + objLoadingImage.setAttribute('src', fileLoadingImage); + objLoadingLink.appendChild(objLoadingImage); + + var objImageDataContainer = document.createElement("div"); + objImageDataContainer.setAttribute('id','imageDataContainer'); + objLightbox.appendChild(objImageDataContainer); + + var objImageData = document.createElement("div"); + objImageData.setAttribute('id','imageData'); + objImageDataContainer.appendChild(objImageData); + + var objImageDetails = document.createElement("div"); + objImageDetails.setAttribute('id','imageDetails'); + objImageData.appendChild(objImageDetails); + + var objCaption = document.createElement("span"); + objCaption.setAttribute('id','caption'); + objImageDetails.appendChild(objCaption); + + var objNumberDisplay = document.createElement("span"); + objNumberDisplay.setAttribute('id','numberDisplay'); + objImageDetails.appendChild(objNumberDisplay); + + var objBottomNav = document.createElement("div"); + objBottomNav.setAttribute('id','bottomNav'); + objImageData.appendChild(objBottomNav); + + var objBottomNavCloseLink = document.createElement("a"); + objBottomNavCloseLink.setAttribute('id','bottomNavClose'); + objBottomNavCloseLink.setAttribute('href','#'); + objBottomNavCloseLink.onclick = function() { myLightbox.end(); return false; } + objBottomNav.appendChild(objBottomNavCloseLink); + + var objBottomNavCloseImage = document.createElement("img"); + objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage); + objBottomNavCloseLink.appendChild(objBottomNavCloseImage); + }, + + + // + // updateImageList() + // Loops through anchor tags looking for 'lightbox' references and applies onclick + // events to appropriate links. You can rerun after dynamically adding images w/ajax. + // + updateImageList: function() { + if (!document.getElementsByTagName){ return; } + var anchors = document.getElementsByTagName('a'); + var areas = document.getElementsByTagName('area'); + + // loop through all anchor tags + for (var i=0; i 1){ + Element.show('numberDisplay'); + Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + 1) + " of " + imageArray.length); + } + + new Effect.Parallel( + [ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: resizeDuration, from: 0.0, to: 1.0 }), + new Effect.Appear('imageDataContainer', { sync: true, duration: resizeDuration }) ], + { duration: resizeDuration, afterFinish: function() { + // update overlay size and update nav + var arrayPageSize = getPageSize(); + Element.setHeight('overlay', arrayPageSize[1]); + myLightbox.updateNav(); + } + } + ); + }, + + // + // updateNav() + // Display appropriate previous and next hover navigation. + // + updateNav: function() { + + Element.show('hoverNav'); + + // if not first image in set, display prev image button + if(activeImage != 0){ + Element.show('prevLink'); + document.getElementById('prevLink').onclick = function() { + myLightbox.changeImage(activeImage - 1); return false; + } + } + + // if not last image in set, display next image button + if(activeImage != (imageArray.length - 1)){ + Element.show('nextLink'); + document.getElementById('nextLink').onclick = function() { + myLightbox.changeImage(activeImage + 1); return false; + } + } + + this.enableKeyboardNav(); + }, + + // + // enableKeyboardNav() + // + enableKeyboardNav: function() { + document.onkeydown = this.keyboardAction; + }, + + // + // disableKeyboardNav() + // + disableKeyboardNav: function() { + document.onkeydown = ''; + }, + + // + // keyboardAction() + // + keyboardAction: function(e) { + if (e == null) { // ie + keycode = event.keyCode; + escapeKey = 27; + } else { // mozilla + keycode = e.keyCode; + escapeKey = e.DOM_VK_ESCAPE; + } + + key = String.fromCharCode(keycode).toLowerCase(); + + if((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)){ // close lightbox + myLightbox.end(); + } else if((key == 'p') || (keycode == 37)){ // display previous image + if(activeImage != 0){ + myLightbox.disableKeyboardNav(); + myLightbox.changeImage(activeImage - 1); + } + } else if((key == 'n') || (keycode == 39)){ // display next image + if(activeImage != (imageArray.length - 1)){ + myLightbox.disableKeyboardNav(); + myLightbox.changeImage(activeImage + 1); + } + } + + }, + + // + // preloadNeighborImages() + // Preload previous and next images. + // + preloadNeighborImages: function(){ + + if((imageArray.length - 1) > activeImage){ + preloadNextImage = new Image(); + preloadNextImage.src = imageArray[activeImage + 1][0]; + } + if(activeImage > 0){ + preloadPrevImage = new Image(); + preloadPrevImage.src = imageArray[activeImage - 1][0]; + } + + }, + + // + // end() + // + end: function() { + this.disableKeyboardNav(); + Element.hide('lightbox'); + new Effect.Fade('overlay', { duration: overlayDuration}); + showSelectBoxes(); + showFlash(); + } +} + +// ----------------------------------------------------------------------------------- + +// +// getPageScroll() +// Returns array with x,y page scroll values. +// Core code from - quirksmode.com +// +function getPageScroll(){ + + var xScroll, yScroll; + + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + + arrayPageScroll = new Array(xScroll,yScroll) + return arrayPageScroll; +} + +// ----------------------------------------------------------------------------------- + +// +// getPageSize() +// Returns array with page width, height and window width, height +// Core code from - quirksmode.com +// Edit for Firefox by pHaez +// +function getPageSize(){ + + var xScroll, yScroll; + + if (window.innerHeight && window.scrollMaxY) { + xScroll = window.innerWidth + window.scrollMaxX; + yScroll = window.innerHeight + window.scrollMaxY; + } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac + xScroll = document.body.scrollWidth; + yScroll = document.body.scrollHeight; + } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari + xScroll = document.body.offsetWidth; + yScroll = document.body.offsetHeight; + } + + var windowWidth, windowHeight; + +// console.log(self.innerWidth); +// console.log(document.documentElement.clientWidth); + + if (self.innerHeight) { // all except Explorer + if(document.documentElement.clientWidth){ + windowWidth = document.documentElement.clientWidth; + } else { + windowWidth = self.innerWidth; + } + windowHeight = self.innerHeight; + } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode + windowWidth = document.documentElement.clientWidth; + windowHeight = document.documentElement.clientHeight; + } else if (document.body) { // other Explorers + windowWidth = document.body.clientWidth; + windowHeight = document.body.clientHeight; + } + + // for small pages with total height less then height of the viewport + if(yScroll < windowHeight){ + pageHeight = windowHeight; + } else { + pageHeight = yScroll; + } + +// console.log("xScroll " + xScroll) +// console.log("windowWidth " + windowWidth) + + // for small pages with total width less then width of the viewport + if(xScroll < windowWidth){ + pageWidth = xScroll; + } else { + pageWidth = windowWidth; + } +// console.log("pageWidth " + pageWidth) + + arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) + return arrayPageSize; +} + +// ----------------------------------------------------------------------------------- + +// +// getKey(key) +// Gets keycode. If 'x' is pressed then it hides the lightbox. +// +function getKey(e){ + if (e == null) { // ie + keycode = event.keyCode; + } else { // mozilla + keycode = e.which; + } + key = String.fromCharCode(keycode).toLowerCase(); + + if(key == 'x'){ + } +} + +// ----------------------------------------------------------------------------------- + +// +// listenKey() +// +function listenKey () { document.onkeypress = getKey; } + +// --------------------------------------------------- + +function showSelectBoxes(){ + var selects = document.getElementsByTagName("select"); + for (i = 0; i != selects.length; i++) { + selects[i].style.visibility = "visible"; + } +} + +// --------------------------------------------------- + +function hideSelectBoxes(){ + var selects = document.getElementsByTagName("select"); + for (i = 0; i != selects.length; i++) { + selects[i].style.visibility = "hidden"; + } +} + +// --------------------------------------------------- + +function showFlash(){ + var flashObjects = document.getElementsByTagName("object"); + for (i = 0; i < flashObjects.length; i++) { + flashObjects[i].style.visibility = "visible"; + } + + var flashEmbeds = document.getElementsByTagName("embed"); + for (i = 0; i < flashEmbeds.length; i++) { + flashEmbeds[i].style.visibility = "visible"; + } +} + +// --------------------------------------------------- + +function hideFlash(){ + var flashObjects = document.getElementsByTagName("object"); + for (i = 0; i < flashObjects.length; i++) { + flashObjects[i].style.visibility = "hidden"; + } + + var flashEmbeds = document.getElementsByTagName("embed"); + for (i = 0; i < flashEmbeds.length; i++) { + flashEmbeds[i].style.visibility = "hidden"; + } + +} + + +// --------------------------------------------------- + +// +// pause(numberMillis) +// Pauses code execution for specified time. Uses busy code, not good. +// Help from Ran Bar-On [ran2103@gmail.com] +// + +function pause(ms){ + var date = new Date(); + curDate = null; + do{var curDate = new Date();} + while( curDate - date < ms); +} +/* +function pause(numberMillis) { + var curently = new Date().getTime() + sender; + while (new Date().getTime(); +} +*/ +// --------------------------------------------------- + + + +function initLightbox() { myLightbox = new Lightbox(); } +Event.observe(window, 'load', initLightbox, false); \ No newline at end of file Index: inc/lbox/prototype.js =================================================================== diff -u -N --- inc/lbox/prototype.js (revision 0) +++ inc/lbox/prototype.js (revision 12930) @@ -0,0 +1,1785 @@ +/* Prototype JavaScript framework, version 1.4.0 + * (c) 2005 Sam Stephenson + * + * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff + * against the source tree, available from the Prototype darcs repository. + * + * Prototype is freely distributable under the terms of an MIT-style license. + * + * For details, see the Prototype web site: http://prototype.conio.net/ + * +/*--------------------------------------------------------------------------*/ + +var Prototype = { + Version: '1.4.0', + ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)', + + emptyFunction: function() {}, + K: function(x) {return x} +} + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +} + +var Abstract = new Object(); + +Object.extend = function(destination, source) { + for (property in source) { + destination[property] = source[property]; + } + return destination; +} + +Object.inspect = function(object) { + try { + if (object == undefined) return 'undefined'; + if (object == null) return 'null'; + return object.inspect ? object.inspect() : object.toString(); + } catch (e) { + if (e instanceof RangeError) return '...'; + throw e; + } +} + +Function.prototype.bind = function() { + var __method = this, args = $A(arguments), object = args.shift(); + return function() { + return __method.apply(object, args.concat($A(arguments))); + } +} + +Function.prototype.bindAsEventListener = function(object) { + var __method = this; + return function(event) { + return __method.call(object, event || window.event); + } +} + +Object.extend(Number.prototype, { + toColorPart: function() { + var digits = this.toString(16); + if (this < 16) return '0' + digits; + return digits; + }, + + succ: function() { + return this + 1; + }, + + times: function(iterator) { + $R(0, this, true).each(iterator); + return this; + } +}); + +var Try = { + these: function() { + var returnValue; + + for (var i = 0; i < arguments.length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) {} + } + + return returnValue; + } +} + +/*--------------------------------------------------------------------------*/ + +var PeriodicalExecuter = Class.create(); +PeriodicalExecuter.prototype = { + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.callback(); + } finally { + this.currentlyExecuting = false; + } + } + } +} + +/*--------------------------------------------------------------------------*/ + +function $() { + var elements = new Array(); + + for (var i = 0; i < arguments.length; i++) { + var element = arguments[i]; + if (typeof element == 'string') + element = document.getElementById(element); + + if (arguments.length == 1) + return element; + + elements.push(element); + } + + return elements; +} +Object.extend(String.prototype, { + stripTags: function() { + return this.replace(/<\/?[^>]+>/gi, ''); + }, + + stripScripts: function() { + return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); + }, + + extractScripts: function() { + var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); + var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); + return (this.match(matchAll) || []).map(function(scriptTag) { + return (scriptTag.match(matchOne) || ['', ''])[1]; + }); + }, + + evalScripts: function() { + return this.extractScripts().map(eval); + }, + + escapeHTML: function() { + var div = document.createElement('div'); + var text = document.createTextNode(this); + div.appendChild(text); + return div.innerHTML; + }, + + unescapeHTML: function() { + var div = document.createElement('div'); + div.innerHTML = this.stripTags(); + return div.childNodes[0] ? div.childNodes[0].nodeValue : ''; + }, + + toQueryParams: function() { + var pairs = this.match(/^\??(.*)$/)[1].split('&'); + return pairs.inject({}, function(params, pairString) { + var pair = pairString.split('='); + params[pair[0]] = pair[1]; + return params; + }); + }, + + toArray: function() { + return this.split(''); + }, + + camelize: function() { + var oStringList = this.split('-'); + if (oStringList.length == 1) return oStringList[0]; + + var camelizedString = this.indexOf('-') == 0 + ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1) + : oStringList[0]; + + for (var i = 1, len = oStringList.length; i < len; i++) { + var s = oStringList[i]; + camelizedString += s.charAt(0).toUpperCase() + s.substring(1); + } + + return camelizedString; + }, + + inspect: function() { + return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'"; + } +}); + +String.prototype.parseQuery = String.prototype.toQueryParams; + +var $break = new Object(); +var $continue = new Object(); + +var Enumerable = { + each: function(iterator) { + var index = 0; + try { + this._each(function(value) { + try { + iterator(value, index++); + } catch (e) { + if (e != $continue) throw e; + } + }); + } catch (e) { + if (e != $break) throw e; + } + }, + + all: function(iterator) { + var result = true; + this.each(function(value, index) { + result = result && !!(iterator || Prototype.K)(value, index); + if (!result) throw $break; + }); + return result; + }, + + any: function(iterator) { + var result = true; + this.each(function(value, index) { + if (result = !!(iterator || Prototype.K)(value, index)) + throw $break; + }); + return result; + }, + + collect: function(iterator) { + var results = []; + this.each(function(value, index) { + results.push(iterator(value, index)); + }); + return results; + }, + + detect: function (iterator) { + var result; + this.each(function(value, index) { + if (iterator(value, index)) { + result = value; + throw $break; + } + }); + return result; + }, + + findAll: function(iterator) { + var results = []; + this.each(function(value, index) { + if (iterator(value, index)) + results.push(value); + }); + return results; + }, + + grep: function(pattern, iterator) { + var results = []; + this.each(function(value, index) { + var stringValue = value.toString(); + if (stringValue.match(pattern)) + results.push((iterator || Prototype.K)(value, index)); + }) + return results; + }, + + include: function(object) { + var found = false; + this.each(function(value) { + if (value == object) { + found = true; + throw $break; + } + }); + return found; + }, + + inject: function(memo, iterator) { + this.each(function(value, index) { + memo = iterator(memo, value, index); + }); + return memo; + }, + + invoke: function(method) { + var args = $A(arguments).slice(1); + return this.collect(function(value) { + return value[method].apply(value, args); + }); + }, + + max: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (value >= (result || value)) + result = value; + }); + return result; + }, + + min: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (value <= (result || value)) + result = value; + }); + return result; + }, + + partition: function(iterator) { + var trues = [], falses = []; + this.each(function(value, index) { + ((iterator || Prototype.K)(value, index) ? + trues : falses).push(value); + }); + return [trues, falses]; + }, + + pluck: function(property) { + var results = []; + this.each(function(value, index) { + results.push(value[property]); + }); + return results; + }, + + reject: function(iterator) { + var results = []; + this.each(function(value, index) { + if (!iterator(value, index)) + results.push(value); + }); + return results; + }, + + sortBy: function(iterator) { + return this.collect(function(value, index) { + return {value: value, criteria: iterator(value, index)}; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }).pluck('value'); + }, + + toArray: function() { + return this.collect(Prototype.K); + }, + + zip: function() { + var iterator = Prototype.K, args = $A(arguments); + if (typeof args.last() == 'function') + iterator = args.pop(); + + var collections = [this].concat(args).map($A); + return this.map(function(value, index) { + iterator(value = collections.pluck(index)); + return value; + }); + }, + + inspect: function() { + return '#'; + } +} + +Object.extend(Enumerable, { + map: Enumerable.collect, + find: Enumerable.detect, + select: Enumerable.findAll, + member: Enumerable.include, + entries: Enumerable.toArray +}); +var $A = Array.from = function(iterable) { + if (!iterable) return []; + if (iterable.toArray) { + return iterable.toArray(); + } else { + var results = []; + for (var i = 0; i < iterable.length; i++) + results.push(iterable[i]); + return results; + } +} + +Object.extend(Array.prototype, Enumerable); + +Array.prototype._reverse = Array.prototype.reverse; + +Object.extend(Array.prototype, { + _each: function(iterator) { + for (var i = 0; i < this.length; i++) + iterator(this[i]); + }, + + clear: function() { + this.length = 0; + return this; + }, + + first: function() { + return this[0]; + }, + + last: function() { + return this[this.length - 1]; + }, + + compact: function() { + return this.select(function(value) { + return value != undefined || value != null; + }); + }, + + flatten: function() { + return this.inject([], function(array, value) { + return array.concat(value.constructor == Array ? + value.flatten() : [value]); + }); + }, + + without: function() { + var values = $A(arguments); + return this.select(function(value) { + return !values.include(value); + }); + }, + + indexOf: function(object) { + for (var i = 0; i < this.length; i++) + if (this[i] == object) return i; + return -1; + }, + + reverse: function(inline) { + return (inline !== false ? this : this.toArray())._reverse(); + }, + + shift: function() { + var result = this[0]; + for (var i = 0; i < this.length - 1; i++) + this[i] = this[i + 1]; + this.length--; + return result; + }, + + inspect: function() { + return '[' + this.map(Object.inspect).join(', ') + ']'; + } +}); +var Hash = { + _each: function(iterator) { + for (key in this) { + var value = this[key]; + if (typeof value == 'function') continue; + + var pair = [key, value]; + pair.key = key; + pair.value = value; + iterator(pair); + } + }, + + keys: function() { + return this.pluck('key'); + }, + + values: function() { + return this.pluck('value'); + }, + + merge: function(hash) { + return $H(hash).inject($H(this), function(mergedHash, pair) { + mergedHash[pair.key] = pair.value; + return mergedHash; + }); + }, + + toQueryString: function() { + return this.map(function(pair) { + return pair.map(encodeURIComponent).join('='); + }).join('&'); + }, + + inspect: function() { + return '#'; + } +} + +function $H(object) { + var hash = Object.extend({}, object || {}); + Object.extend(hash, Enumerable); + Object.extend(hash, Hash); + return hash; +} +ObjectRange = Class.create(); +Object.extend(ObjectRange.prototype, Enumerable); +Object.extend(ObjectRange.prototype, { + initialize: function(start, end, exclusive) { + this.start = start; + this.end = end; + this.exclusive = exclusive; + }, + + _each: function(iterator) { + var value = this.start; + do { + iterator(value); + value = value.succ(); + } while (this.include(value)); + }, + + include: function(value) { + if (value < this.start) + return false; + if (this.exclusive) + return value < this.end; + return value <= this.end; + } +}); + +var $R = function(start, end, exclusive) { + return new ObjectRange(start, end, exclusive); +} + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')}, + function() {return new XMLHttpRequest()} + ) || false; + }, + + activeRequestCount: 0 +} + +Ajax.Responders = { + responders: [], + + _each: function(iterator) { + this.responders._each(iterator); + }, + + register: function(responderToAdd) { + if (!this.include(responderToAdd)) + this.responders.push(responderToAdd); + }, + + unregister: function(responderToRemove) { + this.responders = this.responders.without(responderToRemove); + }, + + dispatch: function(callback, request, transport, json) { + this.each(function(responder) { + if (responder[callback] && typeof responder[callback] == 'function') { + try { + responder[callback].apply(responder, [request, transport, json]); + } catch (e) {} + } + }); + } +}; + +Object.extend(Ajax.Responders, Enumerable); + +Ajax.Responders.register({ + onCreate: function() { + Ajax.activeRequestCount++; + }, + + onComplete: function() { + Ajax.activeRequestCount--; + } +}); + +Ajax.Base = function() {}; +Ajax.Base.prototype = { + setOptions: function(options) { + this.options = { + method: 'post', + asynchronous: true, + parameters: '' + } + Object.extend(this.options, options || {}); + }, + + responseIsSuccess: function() { + return this.transport.status == undefined + || this.transport.status == 0 + || (this.transport.status >= 200 && this.transport.status < 300); + }, + + responseIsFailure: function() { + return !this.responseIsSuccess(); + } +} + +Ajax.Request = Class.create(); +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Request.prototype = Object.extend(new Ajax.Base(), { + initialize: function(url, options) { + this.transport = Ajax.getTransport(); + this.setOptions(options); + this.request(url); + }, + + request: function(url) { + var parameters = this.options.parameters || ''; + if (parameters.length > 0) parameters += '&_='; + + try { + this.url = url; + if (this.options.method == 'get' && parameters.length > 0) + this.url += (this.url.match(/\?/) ? '&' : '?') + parameters; + + Ajax.Responders.dispatch('onCreate', this, this.transport); + + this.transport.open(this.options.method, this.url, + this.options.asynchronous); + + if (this.options.asynchronous) { + this.transport.onreadystatechange = this.onStateChange.bind(this); + setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); + } + + this.setRequestHeaders(); + + var body = this.options.postBody ? this.options.postBody : parameters; + this.transport.send(this.options.method == 'post' ? body : null); + + } catch (e) { + this.dispatchException(e); + } + }, + + setRequestHeaders: function() { + var requestHeaders = + ['X-Requested-With', 'XMLHttpRequest', + 'X-Prototype-Version', Prototype.Version]; + + if (this.options.method == 'post') { + requestHeaders.push('Content-type', + 'application/x-www-form-urlencoded'); + + /* Force "Connection: close" for Mozilla browsers to work around + * a bug where XMLHttpReqeuest sends an incorrect Content-length + * header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType) + requestHeaders.push('Connection', 'close'); + } + + if (this.options.requestHeaders) + requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); + + for (var i = 0; i < requestHeaders.length; i += 2) + this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState != 1) + this.respondToReadyState(this.transport.readyState); + }, + + header: function(name) { + try { + return this.transport.getResponseHeader(name); + } catch (e) {} + }, + + evalJSON: function() { + try { + return eval(this.header('X-JSON')); + } catch (e) {} + }, + + evalResponse: function() { + try { + return eval(this.transport.responseText); + } catch (e) { + this.dispatchException(e); + } + }, + + respondToReadyState: function(readyState) { + var event = Ajax.Request.Events[readyState]; + var transport = this.transport, json = this.evalJSON(); + + if (event == 'Complete') { + try { + (this.options['on' + this.transport.status] + || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] + || Prototype.emptyFunction)(transport, json); + } catch (e) { + this.dispatchException(e); + } + + if ((this.header('Content-type') || '').match(/^text\/javascript/i)) + this.evalResponse(); + } + + try { + (this.options['on' + event] || Prototype.emptyFunction)(transport, json); + Ajax.Responders.dispatch('on' + event, this, transport, json); + } catch (e) { + this.dispatchException(e); + } + + /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ + if (event == 'Complete') + this.transport.onreadystatechange = Prototype.emptyFunction; + }, + + dispatchException: function(exception) { + (this.options.onException || Prototype.emptyFunction)(this, exception); + Ajax.Responders.dispatch('onException', this, exception); + } +}); + +Ajax.Updater = Class.create(); + +Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { + initialize: function(container, url, options) { + this.containers = { + success: container.success ? $(container.success) : $(container), + failure: container.failure ? $(container.failure) : + (container.success ? null : $(container)) + } + + this.transport = Ajax.getTransport(); + this.setOptions(options); + + var onComplete = this.options.onComplete || Prototype.emptyFunction; + this.options.onComplete = (function(transport, object) { + this.updateContent(); + onComplete(transport, object); + }).bind(this); + + this.request(url); + }, + + updateContent: function() { + var receiver = this.responseIsSuccess() ? + this.containers.success : this.containers.failure; + var response = this.transport.responseText; + + if (!this.options.evalScripts) + response = response.stripScripts(); + + if (receiver) { + if (this.options.insertion) { + new this.options.insertion(receiver, response); + } else { + Element.update(receiver, response); + } + } + + if (this.responseIsSuccess()) { + if (this.onComplete) + setTimeout(this.onComplete.bind(this), 10); + } + } +}); + +Ajax.PeriodicalUpdater = Class.create(); +Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { + initialize: function(container, url, options) { + this.setOptions(options); + this.onComplete = this.options.onComplete; + + this.frequency = (this.options.frequency || 2); + this.decay = (this.options.decay || 1); + + this.updater = {}; + this.container = container; + this.url = url; + + this.start(); + }, + + start: function() { + this.options.onComplete = this.updateComplete.bind(this); + this.onTimerEvent(); + }, + + stop: function() { + this.updater.onComplete = undefined; + clearTimeout(this.timer); + (this.onComplete || Prototype.emptyFunction).apply(this, arguments); + }, + + updateComplete: function(request) { + if (this.options.decay) { + this.decay = (request.responseText == this.lastText ? + this.decay * this.options.decay : 1); + + this.lastText = request.responseText; + } + this.timer = setTimeout(this.onTimerEvent.bind(this), + this.decay * this.frequency * 1000); + }, + + onTimerEvent: function() { + this.updater = new Ajax.Updater(this.container, this.url, this.options); + } +}); +document.getElementsByClassName = function(className, parentElement) { + var children = ($(parentElement) || document.body).getElementsByTagName('*'); + return $A(children).inject([], function(elements, child) { + if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) + elements.push(child); + return elements; + }); +} + +/*--------------------------------------------------------------------------*/ + +if (!window.Element) { + var Element = new Object(); +} + +Object.extend(Element, { + visible: function(element) { + return $(element).style.display != 'none'; + }, + + toggle: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + Element[Element.visible(element) ? 'hide' : 'show'](element); + } + }, + + hide: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = 'none'; + } + }, + + show: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = ''; + } + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + }, + + update: function(element, html) { + $(element).innerHTML = html.stripScripts(); + setTimeout(function() {html.evalScripts()}, 10); + }, + + getHeight: function(element) { + element = $(element); + return element.offsetHeight; + }, + + classNames: function(element) { + return new Element.ClassNames(element); + }, + + hasClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).include(className); + }, + + addClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).add(className); + }, + + removeClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).remove(className); + }, + + // removes whitespace-only text node children + cleanWhitespace: function(element) { + element = $(element); + for (var i = 0; i < element.childNodes.length; i++) { + var node = element.childNodes[i]; + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) + Element.remove(node); + } + }, + + empty: function(element) { + return $(element).innerHTML.match(/^\s*$/); + }, + + scrollTo: function(element) { + element = $(element); + var x = element.x ? element.x : element.offsetLeft, + y = element.y ? element.y : element.offsetTop; + window.scrollTo(x, y); + }, + + getStyle: function(element, style) { + element = $(element); + var value = element.style[style.camelize()]; + if (!value) { + if (document.defaultView && document.defaultView.getComputedStyle) { + var css = document.defaultView.getComputedStyle(element, null); + value = css ? css.getPropertyValue(style) : null; + } else if (element.currentStyle) { + value = element.currentStyle[style.camelize()]; + } + } + + if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) + if (Element.getStyle(element, 'position') == 'static') value = 'auto'; + + return value == 'auto' ? null : value; + }, + + setStyle: function(element, style) { + element = $(element); + for (name in style) + element.style[name.camelize()] = style[name]; + }, + + getDimensions: function(element) { + element = $(element); + if (Element.getStyle(element, 'display') != 'none') + return {width: element.offsetWidth, height: element.offsetHeight}; + + // All *Width and *Height properties give 0 on elements with display none, + // so enable the element temporarily + var els = element.style; + var originalVisibility = els.visibility; + var originalPosition = els.position; + els.visibility = 'hidden'; + els.position = 'absolute'; + els.display = ''; + var originalWidth = element.clientWidth; + var originalHeight = element.clientHeight; + els.display = 'none'; + els.position = originalPosition; + els.visibility = originalVisibility; + return {width: originalWidth, height: originalHeight}; + }, + + makePositioned: function(element) { + element = $(element); + var pos = Element.getStyle(element, 'position'); + if (pos == 'static' || !pos) { + element._madePositioned = true; + element.style.position = 'relative'; + // Opera returns the offset relative to the positioning context, when an + // element is position relative but top and left have not been defined + if (window.opera) { + element.style.top = 0; + element.style.left = 0; + } + } + }, + + undoPositioned: function(element) { + element = $(element); + if (element._madePositioned) { + element._madePositioned = undefined; + element.style.position = + element.style.top = + element.style.left = + element.style.bottom = + element.style.right = ''; + } + }, + + makeClipping: function(element) { + element = $(element); + if (element._overflow) return; + element._overflow = element.style.overflow; + if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') + element.style.overflow = 'hidden'; + }, + + undoClipping: function(element) { + element = $(element); + if (element._overflow) return; + element.style.overflow = element._overflow; + element._overflow = undefined; + } +}); + +var Toggle = new Object(); +Toggle.display = Element.toggle; + +/*--------------------------------------------------------------------------*/ + +Abstract.Insertion = function(adjacency) { + this.adjacency = adjacency; +} + +Abstract.Insertion.prototype = { + initialize: function(element, content) { + this.element = $(element); + this.content = content.stripScripts(); + + if (this.adjacency && this.element.insertAdjacentHTML) { + try { + this.element.insertAdjacentHTML(this.adjacency, this.content); + } catch (e) { + if (this.element.tagName.toLowerCase() == 'tbody') { + this.insertContent(this.contentFromAnonymousTable()); + } else { + throw e; + } + } + } else { + this.range = this.element.ownerDocument.createRange(); + if (this.initializeRange) this.initializeRange(); + this.insertContent([this.range.createContextualFragment(this.content)]); + } + + setTimeout(function() {content.evalScripts()}, 10); + }, + + contentFromAnonymousTable: function() { + var div = document.createElement('div'); + div.innerHTML = '' + this.content + '
    '; + return $A(div.childNodes[0].childNodes[0].childNodes); + } +} + +var Insertion = new Object(); + +Insertion.Before = Class.create(); +Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { + initializeRange: function() { + this.range.setStartBefore(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, this.element); + }).bind(this)); + } +}); + +Insertion.Top = Class.create(); +Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(true); + }, + + insertContent: function(fragments) { + fragments.reverse(false).each((function(fragment) { + this.element.insertBefore(fragment, this.element.firstChild); + }).bind(this)); + } +}); + +Insertion.Bottom = Class.create(); +Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.appendChild(fragment); + }).bind(this)); + } +}); + +Insertion.After = Class.create(); +Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { + initializeRange: function() { + this.range.setStartAfter(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, + this.element.nextSibling); + }).bind(this)); + } +}); + +/*--------------------------------------------------------------------------*/ + +Element.ClassNames = Class.create(); +Element.ClassNames.prototype = { + initialize: function(element) { + this.element = $(element); + }, + + _each: function(iterator) { + this.element.className.split(/\s+/).select(function(name) { + return name.length > 0; + })._each(iterator); + }, + + set: function(className) { + this.element.className = className; + }, + + add: function(classNameToAdd) { + if (this.include(classNameToAdd)) return; + this.set(this.toArray().concat(classNameToAdd).join(' ')); + }, + + remove: function(classNameToRemove) { + if (!this.include(classNameToRemove)) return; + this.set(this.select(function(className) { + return className != classNameToRemove; + }).join(' ')); + }, + + toString: function() { + return this.toArray().join(' '); + } +} + +Object.extend(Element.ClassNames.prototype, Enumerable); +var Field = { + clear: function() { + for (var i = 0; i < arguments.length; i++) + $(arguments[i]).value = ''; + }, + + focus: function(element) { + $(element).focus(); + }, + + present: function() { + for (var i = 0; i < arguments.length; i++) + if ($(arguments[i]).value == '') return false; + return true; + }, + + select: function(element) { + $(element).select(); + }, + + activate: function(element) { + element = $(element); + element.focus(); + if (element.select) + element.select(); + } +} + +/*--------------------------------------------------------------------------*/ + +var Form = { + serialize: function(form) { + var elements = Form.getElements($(form)); + var queryComponents = new Array(); + + for (var i = 0; i < elements.length; i++) { + var queryComponent = Form.Element.serialize(elements[i]); + if (queryComponent) + queryComponents.push(queryComponent); + } + + return queryComponents.join('&'); + }, + + getElements: function(form) { + form = $(form); + var elements = new Array(); + + for (tagName in Form.Element.Serializers) { + var tagElements = form.getElementsByTagName(tagName); + for (var j = 0; j < tagElements.length; j++) + elements.push(tagElements[j]); + } + return elements; + }, + + getInputs: function(form, typeName, name) { + form = $(form); + var inputs = form.getElementsByTagName('input'); + + if (!typeName && !name) + return inputs; + + var matchingInputs = new Array(); + for (var i = 0; i < inputs.length; i++) { + var input = inputs[i]; + if ((typeName && input.type != typeName) || + (name && input.name != name)) + continue; + matchingInputs.push(input); + } + + return matchingInputs; + }, + + disable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.blur(); + element.disabled = 'true'; + } + }, + + enable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.disabled = ''; + } + }, + + findFirstElement: function(form) { + return Form.getElements(form).find(function(element) { + return element.type != 'hidden' && !element.disabled && + ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); + }); + }, + + focusFirstElement: function(form) { + Field.activate(Form.findFirstElement(form)); + }, + + reset: function(form) { + $(form).reset(); + } +} + +Form.Element = { + serialize: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) { + var key = encodeURIComponent(parameter[0]); + if (key.length == 0) return; + + if (parameter[1].constructor != Array) + parameter[1] = [parameter[1]]; + + return parameter[1].map(function(value) { + return key + '=' + encodeURIComponent(value); + }).join('&'); + } + }, + + getValue: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return parameter[1]; + } +} + +Form.Element.Serializers = { + input: function(element) { + switch (element.type.toLowerCase()) { + case 'submit': + case 'hidden': + case 'password': + case 'text': + return Form.Element.Serializers.textarea(element); + case 'checkbox': + case 'radio': + return Form.Element.Serializers.inputSelector(element); + } + return false; + }, + + inputSelector: function(element) { + if (element.checked) + return [element.name, element.value]; + }, + + textarea: function(element) { + return [element.name, element.value]; + }, + + select: function(element) { + return Form.Element.Serializers[element.type == 'select-one' ? + 'selectOne' : 'selectMany'](element); + }, + + selectOne: function(element) { + var value = '', opt, index = element.selectedIndex; + if (index >= 0) { + opt = element.options[index]; + value = opt.value; + if (!value && !('value' in opt)) + value = opt.text; + } + return [element.name, value]; + }, + + selectMany: function(element) { + var value = new Array(); + for (var i = 0; i < element.length; i++) { + var opt = element.options[i]; + if (opt.selected) { + var optValue = opt.value; + if (!optValue && !('value' in opt)) + optValue = opt.text; + value.push(optValue); + } + } + return [element.name, value]; + } +} + +/*--------------------------------------------------------------------------*/ + +var $F = Form.Element.getValue; + +/*--------------------------------------------------------------------------*/ + +Abstract.TimedObserver = function() {} +Abstract.TimedObserver.prototype = { + initialize: function(element, frequency, callback) { + this.frequency = frequency; + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + } +} + +Form.Element.Observer = Class.create(); +Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(); +Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); + +/*--------------------------------------------------------------------------*/ + +Abstract.EventObserver = function() {} +Abstract.EventObserver.prototype = { + initialize: function(element, callback) { + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + if (this.element.tagName.toLowerCase() == 'form') + this.registerFormCallbacks(); + else + this.registerCallback(this.element); + }, + + onElementEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + }, + + registerFormCallbacks: function() { + var elements = Form.getElements(this.element); + for (var i = 0; i < elements.length; i++) + this.registerCallback(elements[i]); + }, + + registerCallback: function(element) { + if (element.type) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + Event.observe(element, 'click', this.onElementEvent.bind(this)); + break; + case 'password': + case 'text': + case 'textarea': + case 'select-one': + case 'select-multiple': + Event.observe(element, 'change', this.onElementEvent.bind(this)); + break; + } + } + } +} + +Form.Element.EventObserver = Class.create(); +Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.EventObserver = Class.create(); +Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); +if (!window.Event) { + var Event = new Object(); +} + +Object.extend(Event, { + KEY_BACKSPACE: 8, + KEY_TAB: 9, + KEY_RETURN: 13, + KEY_ESC: 27, + KEY_LEFT: 37, + KEY_UP: 38, + KEY_RIGHT: 39, + KEY_DOWN: 40, + KEY_DELETE: 46, + + element: function(event) { + return event.target || event.srcElement; + }, + + isLeftClick: function(event) { + return (((event.which) && (event.which == 1)) || + ((event.button) && (event.button == 1))); + }, + + pointerX: function(event) { + return event.pageX || (event.clientX + + (document.documentElement.scrollLeft || document.body.scrollLeft)); + }, + + pointerY: function(event) { + return event.pageY || (event.clientY + + (document.documentElement.scrollTop || document.body.scrollTop)); + }, + + stop: function(event) { + if (event.preventDefault) { + event.preventDefault(); + event.stopPropagation(); + } else { + event.returnValue = false; + event.cancelBubble = true; + } + }, + + // find the first node with the given tagName, starting from the + // node the event was triggered on; traverses the DOM upwards + findElement: function(event, tagName) { + var element = Event.element(event); + while (element.parentNode && (!element.tagName || + (element.tagName.toUpperCase() != tagName.toUpperCase()))) + element = element.parentNode; + return element; + }, + + observers: false, + + _observeAndCache: function(element, name, observer, useCapture) { + if (!this.observers) this.observers = []; + if (element.addEventListener) { + this.observers.push([element, name, observer, useCapture]); + element.addEventListener(name, observer, useCapture); + } else if (element.attachEvent) { + this.observers.push([element, name, observer, useCapture]); + element.attachEvent('on' + name, observer); + } + }, + + unloadCache: function() { + if (!Event.observers) return; + for (var i = 0; i < Event.observers.length; i++) { + Event.stopObserving.apply(this, Event.observers[i]); + Event.observers[i][0] = null; + } + Event.observers = false; + }, + + observe: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.attachEvent)) + name = 'keydown'; + + this._observeAndCache(element, name, observer, useCapture); + }, + + stopObserving: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.detachEvent)) + name = 'keydown'; + + if (element.removeEventListener) { + element.removeEventListener(name, observer, useCapture); + } else if (element.detachEvent) { + element.detachEvent('on' + name, observer); + } + } +}); + +/* prevent memory leaks in IE */ +Event.observe(window, 'unload', Event.unloadCache, false); +var Position = { + // set to true if needed, warning: firefox performance problems + // NOT neeeded for page scrolling, only if draggable contained in + // scrollable elements + includeScrollOffsets: false, + + // must be called before calling withinIncludingScrolloffset, every time the + // page is scrolled + prepare: function() { + this.deltaX = window.pageXOffset + || document.documentElement.scrollLeft + || document.body.scrollLeft + || 0; + this.deltaY = window.pageYOffset + || document.documentElement.scrollTop + || document.body.scrollTop + || 0; + }, + + realOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } while (element); + return [valueL, valueT]; + }, + + cumulativeOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return [valueL, valueT]; + }, + + positionedOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + if (element) { + p = Element.getStyle(element, 'position'); + if (p == 'relative' || p == 'absolute') break; + } + } while (element); + return [valueL, valueT]; + }, + + offsetParent: function(element) { + if (element.offsetParent) return element.offsetParent; + if (element == document.body) return element; + + while ((element = element.parentNode) && element != document.body) + if (Element.getStyle(element, 'position') != 'static') + return element; + + return document.body; + }, + + // caches x/y coordinate pair to use with overlap + within: function(element, x, y) { + if (this.includeScrollOffsets) + return this.withinIncludingScrolloffsets(element, x, y); + this.xcomp = x; + this.ycomp = y; + this.offset = this.cumulativeOffset(element); + + return (y >= this.offset[1] && + y < this.offset[1] + element.offsetHeight && + x >= this.offset[0] && + x < this.offset[0] + element.offsetWidth); + }, + + withinIncludingScrolloffsets: function(element, x, y) { + var offsetcache = this.realOffset(element); + + this.xcomp = x + offsetcache[0] - this.deltaX; + this.ycomp = y + offsetcache[1] - this.deltaY; + this.offset = this.cumulativeOffset(element); + + return (this.ycomp >= this.offset[1] && + this.ycomp < this.offset[1] + element.offsetHeight && + this.xcomp >= this.offset[0] && + this.xcomp < this.offset[0] + element.offsetWidth); + }, + + // within must be called directly before + overlap: function(mode, element) { + if (!mode) return 0; + if (mode == 'vertical') + return ((this.offset[1] + element.offsetHeight) - this.ycomp) / + element.offsetHeight; + if (mode == 'horizontal') + return ((this.offset[0] + element.offsetWidth) - this.xcomp) / + element.offsetWidth; + }, + + clone: function(source, target) { + source = $(source); + target = $(target); + target.style.position = 'absolute'; + var offsets = this.cumulativeOffset(source); + target.style.top = offsets[1] + 'px'; + target.style.left = offsets[0] + 'px'; + target.style.width = source.offsetWidth + 'px'; + target.style.height = source.offsetHeight + 'px'; + }, + + page: function(forElement) { + var valueT = 0, valueL = 0; + + var element = forElement; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + + // Safari fix + if (element.offsetParent==document.body) + if (Element.getStyle(element,'position')=='absolute') break; + + } while (element = element.offsetParent); + + element = forElement; + do { + valueT -= element.scrollTop || 0; + valueL -= element.scrollLeft || 0; + } while (element = element.parentNode); + + return [valueL, valueT]; + }, + + clone: function(source, target) { + var options = Object.extend({ + setLeft: true, + setTop: true, + setWidth: true, + setHeight: true, + offsetTop: 0, + offsetLeft: 0 + }, arguments[2] || {}) + + // find page position of source + source = $(source); + var p = Position.page(source); + + // find coordinate system to use + target = $(target); + var delta = [0, 0]; + var parent = null; + // delta [0,0] will do fine with position: fixed elements, + // position:absolute needs offsetParent deltas + if (Element.getStyle(target,'position') == 'absolute') { + parent = Position.offsetParent(target); + delta = Position.page(parent); + } + + // correct by body offsets (fixes Safari) + if (parent == document.body) { + delta[0] -= document.body.offsetLeft; + delta[1] -= document.body.offsetTop; + } + + // set position + if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; + if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; + if(options.setWidth) target.style.width = source.offsetWidth + 'px'; + if(options.setHeight) target.style.height = source.offsetHeight + 'px'; + }, + + absolutize: function(element) { + element = $(element); + if (element.style.position == 'absolute') return; + Position.prepare(); + + var offsets = Position.positionedOffset(element); + var top = offsets[1]; + var left = offsets[0]; + var width = element.clientWidth; + var height = element.clientHeight; + + element._originalLeft = left - parseFloat(element.style.left || 0); + element._originalTop = top - parseFloat(element.style.top || 0); + element._originalWidth = element.style.width; + element._originalHeight = element.style.height; + + element.style.position = 'absolute'; + element.style.top = top + 'px';; + element.style.left = left + 'px';; + element.style.width = width + 'px';; + element.style.height = height + 'px';; + }, + + relativize: function(element) { + element = $(element); + if (element.style.position == 'relative') return; + Position.prepare(); + + element.style.position = 'relative'; + var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); + var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); + + element.style.top = top + 'px'; + element.style.left = left + 'px'; + element.style.height = element._originalHeight; + element.style.width = element._originalWidth; + } +} + +// Safari returns margins on body which is incorrect if the child is absolutely +// positioned. For performance reasons, redefine Position.cumulativeOffset for +// KHTML/WebKit only. +if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { + Position.cumulativeOffset = function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + if (element.offsetParent == document.body) + if (Element.getStyle(element, 'position') == 'absolute') break; + + element = element.offsetParent; + } while (element); + + return [valueL, valueT]; + } +} \ No newline at end of file Index: inc/lbox/scriptaculous.js =================================================================== diff -u -N --- inc/lbox/scriptaculous.js (revision 0) +++ inc/lbox/scriptaculous.js (revision 12930) @@ -0,0 +1,45 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +var Scriptaculous = { + Version: '1.5.1', + require: function(libraryName) { + // inserting via DOM fails in Safari 2.0, so brute force approach + document.write(''); + }, + load: function() { + if((typeof Prototype=='undefined') || + parseFloat(Prototype.Version.split(".")[0] + "." + + Prototype.Version.split(".")[1]) < 1.4) + throw("script.aculo.us requires the Prototype JavaScript framework >= 1.4.0"); + + $A(document.getElementsByTagName("script")).findAll( function(s) { + return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/)) + }).each( function(s) { + var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,''); + var includes = s.src.match(/\?.*load=([a-z,]*)/); + (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each( + function(include) { Scriptaculous.require(path+include+'.js') }); + }); + } +} + +Scriptaculous.load(); \ No newline at end of file Index: inc/ajax.js =================================================================== diff -u -N --- inc/ajax.js (revision 0) +++ inc/ajax.js (revision 12930) @@ -0,0 +1,240 @@ +function preg_print_pre(obj, reg) +{ + if (!reg) reg = /.*/; + var p = '' + for (var prop in obj) { + if (prop.match(reg) ) { + p += prop + ': '+obj[prop] + '\n' + } + } + alert(p) +} + + +// Main AJAX classs +function Request() {} + +Request.timeout = 60000; //60 seconds +Request.method = 'GET'; +Request.headers = new Array(); +Request.params = null; + +Request.makeRequest = function(p_url, p_busyReq, p_progId, p_successCallBack, p_errorCallBack, p_pass, p_object) { + //p_url: the web service url + //p_busyReq: is a request for this object currently in progress? + //p_progId: element id where progress HTML should be shown + //p_successCallBack: callback function for successful response + //p_errorCallBack: callback function for erroneous response + //p_pass: string of params to pass to callback functions + //p_object: object of params to pass to callback functions + + if (p_busyReq) return; + var req = Request.getRequest(); + if (req != null) { + p_busyReq = true; + Request.showProgress(p_progId); + req.onreadystatechange = function() { + if (req.readyState == 4) { + p_busyReq = false; + window.clearTimeout(toId); + try { + if (req.status == 200) { + // preg_print_pre(req) + p_successCallBack(req, p_pass, p_object); + } else { + p_errorCallBack(req, p_pass, p_object); + } + Request.hideProgress(p_progId); + } + catch (e) { +// alert('AJAX error') + } + } + } + var $ajax_mark = (p_url.indexOf('?') ? '&' : '?') + 'ajax=yes'; + req.open(Request.method, p_url + $ajax_mark, true); + + if (Request.method == 'POST') { + Request.headers['Content-type'] = 'application/x-www-form-urlencoded'; + Request.headers['referer'] = p_url; + } + else { + Request.headers['If-Modified-Since'] = 'Sat, 1 Jan 2000 00:00:00 GMT'; + } + + Request.sendHeaders(req); + if (Request.method == 'POST') { + req.send(Request.params); + Request.method = 'GET'; // restore method back to GET + } + else { + req.send(null); + } + + var toId = window.setTimeout( function() {if (p_busyReq) req.abort();}, Request.timeout ); + } +} + +Request.processRedirect = function($request) { + var $match_redirect = new RegExp('^#redirect#(.*)').exec($request.responseText); + if ($match_redirect != null) { + // redirect to external template requested + window.location.href = $match_redirect[1]; + return true; + } + return false; +} +Request.sendHeaders = function($request) { + for (var $header_name in Request.headers) { + if (typeof Request.headers[$header_name] == 'function') { + continue; + } + $request.setRequestHeader($header_name, Request.headers[$header_name]); + } + Request.headers = new Array(); // reset header afterwards +} + +Request.getRequest = function() { + var xmlHttp; + try { xmlHttp = new ActiveXObject('MSXML2.XMLHTTP'); return xmlHttp; } catch (e) {} + try { xmlHttp = new ActiveXObject('Microsoft.XMLHTTP'); return xmlHttp; } catch (e) {} + try { xmlHttp = new XMLHttpRequest(); return xmlHttp; } catch(e) {} + return null; +} + +Request.showProgress = function(p_id) { + if (p_id != '') { + Request.setOpacity(20, p_id); + + if (!document.getElementById(p_id + '_progress')) { + document.body.appendChild(Request.getProgressObject(p_id)); + } + else { + var $progress_div = document.getElementById(p_id + '_progress'); + $progress_div.style.top = getRealTop(p_id) + 'px'; + $progress_div.style.height = document.getElementById(p_id).clientHeight; + $progress_div.style.display = 'block'; + } +// document.getElementById(p_id).innerHTML = Request.getProgressHtml(); + } +} + +Request.hideProgress = function(p_id) { + if (p_id != '') { + document.getElementById(p_id + '_progress').style.display = 'none'; + Request.setOpacity(100, p_id); + } +} + +Request.setOpacity = function (opacity, id) { + var elem = typeof(id)=='string' ? document.getElementById(id) : id; + var object = elem.style; + object.opacity = (opacity / 100); + object.MozOpacity = (opacity / 100); + object.KhtmlOpacity = (opacity / 100); + object.filter = "alpha(opacity=" + opacity + ")"; +} + +Request.getProgressHtml = function() { + return "

    " + Request.progressText + "
    " + Request.progressText + "

    "; +} + +Request.getProgressObject = function($id) { + var $div = document.createElement('DIV'); + var $parent_div = document.getElementById($id); + + $div.id = $id + '_progress'; + + $div.style.width = $parent_div.clientWidth + 'px'; + $div.style.height = '150px'; // default height if div is empty (first ajax request for div) + $div.style.left = getRealLeft($parent_div) + 'px'; + $div.style.top = getRealTop($parent_div) + 'px'; + $div.style.position = 'absolute'; + + /*$div.style.border = '1px solid green'; + $div.style.backgroundColor = '#FF0000';*/ + + $div.innerHTML = '
    '+Request.progressText+'
    '+escape(Request.progressText)+'
    '; + return $div; +} + +Request.getErrorHtml = function(p_req) { + //TODO: implement accepted way to handle request error + return '[status: ' + p_req.status + '; status_text: ' + p_req.statusText + '; responce_text: ' + p_req.responseText + ']'; +} + +Request.serializeForm = function(theform) { + if (typeof(theform) == 'string') { + theform = document.getElementById(theform); + } + + var els = theform.elements; + var len = els.length; + var queryString = ''; + + Request.addField = function(name, value) { + if (queryString.length > 0) queryString += '&'; + queryString += encodeURIComponent(name) + '=' + encodeURIComponent(value); + }; + + for (var i = 0; i= 0) { + Request.addField(el.name, el.options[el.selectedIndex].value); + } + break; + + case 'select-multiple': + for (var j = 0; j < el.options.length; j++) { + if (!el.options[j].selected) continue; + Request.addField(el.name, el.options[j].value); + } + break; + + case 'checkbox': + case 'radio': + if (!el.checked) continue; + Request.addField(el.name,el.value); + break; + } + } + return queryString; +}; + +function RatingManager ($url) { + this.Url = $url; + this.BusyRequest = false; +} + +RatingManager.prototype.makeVote = function ($vote, $prefix, $id, $size) { + var $url = this.Url.replace('#PREFIX#', $prefix).replace('#VOTE#', $vote).replace('#ID#', $id).replace('#SIZE#', $size); + + Request.makeRequest($url, this.BusyRequest, '', this.successCallback, this.errorCallback, [$vote, $prefix, $id], this); +} + +RatingManager.prototype.successCallback = function ($request, $params, $object) { + var response = $request.responseText; + + if (response.substring(0, 5) == '@err:') { + alert(response.substring(5)); + return ; + } + + document.getElementById('page_rating_' + $params[2]).innerHTML = response; +} + + +RatingManager.prototype.errorCallback = function($request, $params, $object) { + alert('AJAX Error; class: RatingManager; ' + Request.getErrorHtml($request)); +} \ No newline at end of file Index: inc/calendar.js =================================================================== diff -u -N --- inc/calendar.js (revision 0) +++ inc/calendar.js (revision 12930) @@ -0,0 +1,1320 @@ +var cbPath = ""; + /* +preloadImage(cbPath); +preloadImage(cbPathO); +preloadImage(cbPathA); +*/ + +//addScript("core.js"); +//addScript("lang.js"); + +//addCss("wnd.css"); +//addCss("calendar.css"); + +function initCalendar(id, dateFormat) +{ + var input = document.getElementById(id); + if (!input) return; + input.dateFormat = dateFormat; + var cbPath = input.getAttribute("datepickerIcon"); + + var inputContainer = document.createElement("DIV"); + inputContainer.className = "dpContainer"; + inputContainer.noWrap = true; + var pNode = input.parentNode; + pNode.insertBefore(inputContainer, input.nextSibling); +// inputContainer.appendChild(pNode.removeChild(input)); + + var calendarButton = document.createElement("IMG"); + calendarButton.setAttribute("width", "19"); + calendarButton.setAttribute("height", "15"); + calendarButton.setAttribute("align", "absMiddle"); + calendarButton.style.width=19 + calendarButton.style.height=15 + calendarButton.style.cursor = "hand"; + + calendarButton.setAttribute("hspace", 2); + calendarButton.src = cbPath; + calendarButton.style.paddingLeft = '10px'; + calendarButton.onmouseover = cbMouseOver; + calendarButton.onmouseout = cbMouseOut; + calendarButton.onmouseup = calendarButton.onmouseout; + calendarButton.onmousedown = cbMouseDown; + calendarButton.showCalendar = wnd_showCalendar; + inputContainer.appendChild(calendarButton); + inputContainer.dateInput = input; +} + +var calendar; + +function cbMouseOver(e) +{ + // this.src = cbPathO; + var evt = (e) ? e : event; if (evt) evt.cancelBubble = true; +} + +function cbMouseOut(e) +{ + // this.src = cbPath; + var evt = (e) ? e : event; if (evt) evt.cancelBubble = true; +} + +function cbMouseDown(e) +{ + // this.src = cbPathA; + // alert("cbMouseDown"); + var evt = (e) ? e : event; if (evt) evt.cancelBubble = true; + this.showCalendar(); +} + +function wnd_showCalendar() +{ + var el = this.parentNode.dateInput; + if (calendar != null) calendar.hide(); + else + { + var calendarObject = new Calendar(false, null, dateSelected, closeHandler); + calendar = calendarObject; + calendarObject.setRange(1900, 2070); + calendarObject.create(); + } + calendar.setDateFormat(el.dateFormat); + calendar.parseDate(el.value); + calendar.sel = el; + calendar.showAtElement(el); + + Calendar.addEvent(document, "mousedown", checkCalendar); + return false; +} + +function dateSelected(calendarObject, date) +{ + calendarObject.sel.value = date; + calendarObject.callCloseHandler(); +} + +function closeHandler(calendarObject) +{ + calendarObject.hide(); + Calendar.removeEvent(document, "mousedown", checkCalendar); +} + +function checkCalendar(ev) +{ + var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); + + for (; el != null; el = el.parentNode) + if (el == calendar.element || el.tagName == "A") break; + + if (el == null) + { + calendar.callCloseHandler(); + Calendar.stopEvent(ev); + } +} + +function preloadImage(path) +{ + var img = new Image(); + img.src = path; + preloadImages.push(img); +} + +function addCss(path) +{ + path = cssPath + path; + document.write(""); +} + +/**/ +/* Copyright Mihai Bazon, 2002 +* http://students.infoiasi.ro/~mishoo +* +* Version: 0.9.1 +* +* Feel free to use this script under the terms of the GNU General Public +* License, as long as you do not remove or alter this notice. +*/ + +/** The Calendar object constructor. */ +Calendar = function (mondayFirst, dateStr, onSelected, onClose) { + // member variables + this.activeDiv = null; + this.currentDateEl = null; + this.checkDisabled = null; + this.timeout = null; + this.onSelected = onSelected || null; + this.onClose = onClose || null; + this.dragging = false; + this.minYear = 1970; + this.maxYear = 2050; + this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; + this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; + this.isPopup = true; + this.mondayFirst = mondayFirst; + this.dateStr = dateStr; + // HTML elements + this.table = null; + this.element = null; + this.tbody = null; + this.daynames = null; + // Combo boxes + this.monthsCombo = null; + this.yearsCombo = null; + this.hilitedMonth = null; + this.activeMonth = null; + this.hilitedYear = null; + this.activeYear = null; + + // one-time initializations + if (!Calendar._DN3) { + // table of short day names + var ar = new Array(); + for (var i = 8; i > 0;) { + ar[--i] = Calendar._DN[i].substr(0, 3); + } + Calendar._DN3 = ar; + // table of short month names + ar = new Array(); + for (var i = 12; i > 0;) { + ar[--i] = Calendar._MN[i].substr(0, 3); + } + Calendar._MN3 = ar; + } +}; + +// ** constants + +/// "static", needed for event handlers. +Calendar._C = null; + +/// detect a special case of "web browser" +Calendar.is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) && +(navigator.userAgent.toLowerCase().indexOf("opera") == -1) ); + +// short day names array (initialized at first constructor call) +Calendar._DN3 = null; + +// short month names array (initialized at first constructor call) +Calendar._MN3 = null; + +// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate +// library, at some point. + +Calendar.getAbsolutePos = function(el) { + var r = { x: el.offsetLeft, y: el.offsetTop }; + if (el.offsetParent) { + var tmp = Calendar.getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +Calendar.isRelated = function (el, evt) { + var related = evt.relatedTarget; + if (!related) { + var type = evt.type; + if (type == "mouseover") { + related = evt.fromElement; + } else if (type == "mouseout") { + related = evt.toElement; + } + } + while (related) { + if (related == el) { + return true; + } + related = related.parentNode; + } + return false; +}; + +Calendar.removeClass = function(el, className) { + if (!(el && el.className)) { + return; + } + var cls = el.className.split(" "); + var ar = new Array(); + for (var i = cls.length; i > 0;) { + if (cls[--i] != className) { + ar[ar.length] = cls[i]; + } + } + el.className = ar.join(" "); +}; + +Calendar.addClass = function(el, className) { + el.className += " " + className; +}; + +Calendar.getElement = function(ev) { + if (Calendar.is_ie) { + return window.event.srcElement; + } else { + return ev.currentTarget; + } +}; + +Calendar.getTargetElement = function(ev) { + if (Calendar.is_ie) { + return window.event.srcElement; + } else { + return ev.target; + } +}; + +Calendar.stopEvent = function(ev) { + if (Calendar.is_ie) { + window.event.cancelBubble = true; + window.event.returnValue = false; + } else { + ev.preventDefault(); + ev.stopPropagation(); + } +}; + +Calendar.addEvent = function(el, evname, func) { + if (Calendar.is_ie) { + el.attachEvent("on" + evname, func); + } else { + el.addEventListener(evname, func, true); + } +}; + +Calendar.removeEvent = function(el, evname, func) { + if (Calendar.is_ie) { + el.detachEvent("on" + evname, func); + } else { + el.removeEventListener(evname, func, true); + } +}; + +Calendar.createElement = function(type, parent) { + var el = null; + if (document.createElementNS) { + // use the XHTML namespace; IE won't normally get here unless + // _they_ "fix" the DOM2 implementation. + el = document.createElementNS("http://www.w3.org/1999/xhtml", type); + } else { + el = document.createElement(type); + } + if (typeof parent != "undefined") { + parent.appendChild(el); + } + return el; +}; + +// END: UTILITY FUNCTIONS + +// BEGIN: CALENDAR STATIC FUNCTIONS + +/** Internal -- adds a set of events to make some element behave like a button. */ +Calendar._add_evs = function(el) { + with (Calendar) { + addEvent(el, "mouseover", dayMouseOver); + addEvent(el, "mousedown", dayMouseDown); + addEvent(el, "mouseout", dayMouseOut); + if (is_ie) { + addEvent(el, "dblclick", dayMouseDblClick); + el.setAttribute("unselectable", true); + } + } +}; + +Calendar.findMonth = function(el) { + if (typeof el.month != "undefined") { + return el; + } else if (typeof el.parentNode.month != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.findYear = function(el) { + if (typeof el.year != "undefined") { + return el; + } else if (typeof el.parentNode.year != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.showMonthsCombo = function () { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var mc = cal.monthsCombo; + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + if (cal.activeMonth) { + Calendar.removeClass(cal.activeMonth, "active"); + } + var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; + Calendar.addClass(mon, "active"); + cal.activeMonth = mon; + mc.style.left = cd.offsetLeft; + mc.style.top = cd.offsetTop + cd.offsetHeight; + mc.style.display = "block"; +}; + +Calendar.showYearsCombo = function (fwd) { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var yc = cal.yearsCombo; + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + if (cal.activeYear) { + Calendar.removeClass(cal.activeYear, "active"); + } + cal.activeYear = null; + var Y = cal.date.getFullYear() + (fwd ? 1 : -1); + var yr = yc.firstChild; + var show = false; + for (var i = 12; i > 0; --i) { + if (Y >= cal.minYear && Y <= cal.maxYear) { + yr.firstChild.data = Y; + yr.year = Y; + yr.style.display = "block"; + show = true; + } else { + yr.style.display = "none"; + } + yr = yr.nextSibling; + Y += fwd ? 2 : -2; + } + if (show) { + yc.style.left = cd.offsetLeft; + yc.style.top = cd.offsetTop + cd.offsetHeight; + yc.style.display = "block"; + } +}; + +// event handlers + +Calendar.tableMouseUp = function(ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + if (cal.timeout) { + clearTimeout(cal.timeout); + } + var el = cal.activeDiv; + if (!el) { + return false; + } + var target = Calendar.getTargetElement(ev); + Calendar.removeClass(el, "active"); + if (target == el || target.parentNode == el) { + Calendar.cellClick(el); + } + var mon = Calendar.findMonth(target); + var date = null; + if (mon) { + date = new Date(cal.date); + if (mon.month != date.getMonth()) { + date.setMonth(mon.month); + cal.setDate(date); + } + } else { + var year = Calendar.findYear(target); + if (year) { + date = new Date(cal.date); + if (year.year != date.getFullYear()) { + date.setFullYear(year.year); + cal.setDate(date); + } + } + } + with (Calendar) { + removeEvent(document, "mouseup", tableMouseUp); + removeEvent(document, "mouseover", tableMouseOver); + removeEvent(document, "mousemove", tableMouseOver); + cal._hideCombos(); + stopEvent(ev); + _C = null; + } +}; + +Calendar.tableMouseOver = function (ev) { + var cal = Calendar._C; + if (!cal) { + return; + } + var el = cal.activeDiv; + var target = Calendar.getTargetElement(ev); + if (target == el || target.parentNode == el) { + Calendar.addClass(el, "hilite active"); + } else { + Calendar.removeClass(el, "active"); + Calendar.removeClass(el, "hilite"); + } + var mon = Calendar.findMonth(target); + if (mon) { + if (mon.month != cal.date.getMonth()) { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + Calendar.addClass(mon, "hilite"); + cal.hilitedMonth = mon; + } else if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + } else { + var year = Calendar.findYear(target); + if (year) { + if (year.year != cal.date.getFullYear()) { + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + Calendar.addClass(year, "hilite"); + cal.hilitedYear = year; + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } + } + Calendar.stopEvent(ev); +}; + +Calendar.tableMouseDown = function (ev) { + if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { + Calendar.stopEvent(ev); + } +}; + +Calendar.calDragIt = function (ev) { + var cal = Calendar._C; + if (!(cal && cal.dragging)) { + return false; + } + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posX = ev.pageX; + posY = ev.pageY; + } + cal.hideShowCovered(); + var st = cal.element.style; + st.left = (posX - cal.xOffs) + "px"; + st.top = (posY - cal.yOffs) + "px"; + Calendar.stopEvent(ev); +}; + +Calendar.calDragEnd = function (ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + cal.dragging = false; + with (Calendar) { + removeEvent(document, "mousemove", calDragIt); + removeEvent(document, "mouseover", stopEvent); + removeEvent(document, "mouseup", calDragEnd); + tableMouseUp(ev); + } + cal.hideShowCovered(); +}; + +Calendar.dayMouseDown = function(ev) { + var el = Calendar.getElement(ev); + if (el.disabled) { + return false; + } + var cal = el.calendar; + cal.activeDiv = el; + Calendar._C = cal; + if (el.navtype != 300) with (Calendar) { + addClass(el, "hilite active"); + addEvent(document, "mouseover", tableMouseOver); + addEvent(document, "mousemove", tableMouseOver); + addEvent(document, "mouseup", tableMouseUp); + } else if (cal.isPopup) { + cal._dragStart(ev); + } + Calendar.stopEvent(ev); + if (el.navtype == -1 || el.navtype == 1) { + cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); + } else if (el.navtype == -2 || el.navtype == 2) { + cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); + } else { + cal.timeout = null; + } +}; + +Calendar.dayMouseDblClick = function(ev) { + Calendar.cellClick(Calendar.getElement(ev)); + if (Calendar.is_ie) { + document.selection.empty(); + } +}; + +Calendar.dayMouseOver = function(ev) { + var el = Calendar.getElement(ev); + if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { + return false; + } + if (el.ttip) { + if (el.ttip.substr(0, 1) == "_") { + var date = null; + with (el.calendar.date) { + date = new Date(getFullYear(), getMonth(), el.caldate); + } + el.ttip = date.print(el.calendar.ttDateFormat) + el.ttip.substr(1); + } + el.calendar.tooltips.firstChild.data = el.ttip; + } + if (el.navtype != 300) { + Calendar.addClass(el, "hilite"); + } + Calendar.stopEvent(ev); +}; + +Calendar.dayMouseOut = function(ev) { + with (Calendar) { + var el = getElement(ev); + if (isRelated(el, ev) || _C || el.disabled) { + return false; + } + removeClass(el, "hilite"); + el.calendar.tooltips.firstChild.data = _TT["SEL_DATE"]; + stopEvent(ev); + } +}; + +/** +* A generic "click" handler :) handles all types of buttons defined in this +* calendar. +*/ +Calendar.cellClick = function(el) { + var cal = el.calendar; + var closing = false; + var newdate = false; + var date = null; + if (typeof el.navtype == "undefined") { + Calendar.removeClass(cal.currentDateEl, "selected"); + Calendar.addClass(el, "selected"); + closing = (cal.currentDateEl == el); + if (!closing) { + cal.currentDateEl = el; + } + cal.date.setDate(el.caldate); + date = cal.date; + newdate = true; + } else { + if (el.navtype == 200) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + return; + } + date = (el.navtype == 0) ? new Date() : new Date(cal.date); + var year = date.getFullYear(); + var mon = date.getMonth(); + var setMonth = function (mon) { + var day = date.getDate(); + var max = date.getMonthDays(); + if (day > max) { + date.setDate(max); + } + date.setMonth(mon); + }; + switch (el.navtype) { + case -2: + if (year > cal.minYear) { + date.setFullYear(year - 1); + } + break; + case -1: + if (mon > 0) { + setMonth(mon - 1); + } else if (year-- > cal.minYear) { + date.setFullYear(year); + setMonth(11); + } + break; + case 1: + if (mon < 11) { + setMonth(mon + 1); + } else if (year < cal.maxYear) { + date.setFullYear(year + 1); + setMonth(0); + } + break; + case 2: + if (year < cal.maxYear) { + date.setFullYear(year + 1); + } + break; + case 100: + cal.setMondayFirst(!cal.mondayFirst); + return; + } + if (!date.equalsTo(cal.date)) { + cal.setDate(date); + newdate = el.navtype == 0; + } + } + if (newdate) { + cal.callHandler(); + } + if (closing) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + } +}; + +// END: CALENDAR STATIC FUNCTIONS + +// BEGIN: CALENDAR OBJECT FUNCTIONS + +/** +* This function creates the calendar inside the given parent. If _par is +* null than it creates a popup calendar inside the BODY element. If _par is +* an element, be it BODY, then it creates a non-popup calendar (still +* hidden). Some properties need to be set before calling this function. +*/ +Calendar.prototype.create = function (_par) { + var parent = null; + if (! _par) { + // default parent is the document body, in which case we create + // a popup calendar. + parent = document.getElementsByTagName("body")[0]; + this.isPopup = true; + } else { + parent = _par; + this.isPopup = false; + } + this.date = this.dateStr ? new Date(this.dateStr) : new Date(); + + var table = Calendar.createElement("table"); + this.table = table; + table.cellSpacing = 0; + table.cellPadding = 0; + table.style.width = 'auto'; + table.calendar = this; + Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); + + var div = Calendar.createElement("div"); + this.element = div; + div.className = "calendar"; + if (this.isPopup) { + div.style.position = "absolute"; + div.style.display = "none"; + } + div.appendChild(table); + + var thead = Calendar.createElement("thead", table); + var cell = null; + var row = null; + + var cal = this; + var hh = function (text, cs, navtype) { + cell = Calendar.createElement("td", row); + cell.colSpan = cs; + cell.className = "calendar_button"; + Calendar._add_evs(cell); + cell.calendar = cal; + cell.navtype = navtype; + if (text.substr(0, 1) != "&") { + cell.appendChild(document.createTextNode(text)); + } + else { + // FIXME: dirty hack for entities + cell.innerHTML = text; + } + return cell; + }; + + row = Calendar.createElement("tr", thead); + row.className = "headrow"; + + hh("-", 1, 100).ttip = Calendar._TT["TOGGLE"]; + this.title = hh("", this.isPopup ? 5 : 6, 300); + this.title.className = "title"; + if (this.isPopup) { + this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; + this.title.style.cursor = "move"; + hh("X", 1, 200).ttip = Calendar._TT["CLOSE"]; + } + + row = Calendar.createElement("tr", thead); + row.className = "headrow"; + + hh("«", 1, -2).ttip = Calendar._TT["PREV_YEAR"]; + hh("‹", 1, -1).ttip = Calendar._TT["PREV_MONTH"]; + hh(Calendar._TT["TODAY"], 3, 0).ttip = Calendar._TT["GO_TODAY"]; + hh("›", 1, 1).ttip = Calendar._TT["NEXT_MONTH"]; + hh("»", 1, 2).ttip = Calendar._TT["NEXT_YEAR"]; + + // day names + row = Calendar.createElement("tr", thead); + row.className = "daynames"; + this.daynames = row; + for (var i = 7; i > 0; --i) { + cell = Calendar.createElement("td", row); + cell.appendChild(document.createTextNode("")); + if (!i) { + cell.navtype = 100; + cell.calendar = this; + Calendar._add_evs(cell); + } + } + this._displayWeekdays(); + + var tbody = Calendar.createElement("tbody", table); + this.tbody = tbody; + + for (i = 6; i > 0; --i) { + row = Calendar.createElement("tr", tbody); + for (var j = 7; j > 0; --j) { + cell = Calendar.createElement("td", row); + cell.appendChild(document.createTextNode("")); + cell.calendar = this; + Calendar._add_evs(cell); + } + } + + var tfoot = Calendar.createElement("tfoot", table); + + row = Calendar.createElement("tr", tfoot); + row.className = "footrow"; + + cell = hh(Calendar._TT["SEL_DATE"], 7, 300); + cell.className = "title"; + if (this.isPopup) { + cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; + cell.style.cursor = "move"; + } + this.tooltips = cell; + + div = Calendar.createElement("div", this.element); + this.monthsCombo = div; + div.className = "combo"; + for (i = 0; i < Calendar._MN.length; ++i) { + var mn = Calendar.createElement("div"); + mn.className = "label"; + mn.month = i; + mn.appendChild(document.createTextNode(Calendar._MN3[i])); + div.appendChild(mn); + } + + div = Calendar.createElement("div", this.element); + this.yearsCombo = div; + div.className = "combo"; + for (i = 12; i > 0; --i) { + var yr = Calendar.createElement("div"); + yr.className = "label"; + yr.appendChild(document.createTextNode("")); + div.appendChild(yr); + } + + this._init(this.mondayFirst, this.date); + parent.appendChild(this.element); +}; + +/** +* (RE)Initializes the calendar to the given date and style (if mondayFirst is +* true it makes Monday the first day of week, otherwise the weeks start on +* Sunday. +*/ +Calendar.prototype._init = function (mondayFirst, date) { + var today = new Date(); + var year = date.getFullYear(); + if (year < this.minYear) { + year = this.minYear; + date.setFullYear(year); + } else if (year > this.maxYear) { + year = this.maxYear; + date.setFullYear(year); + } + this.mondayFirst = mondayFirst; + this.date = new Date(date); + var month = date.getMonth(); + var mday = date.getDate(); + var no_days = date.getMonthDays(); + date.setDate(1); + var wday = date.getDay(); + var MON = mondayFirst ? 1 : 0; + var SAT = mondayFirst ? 5 : 6; + var SUN = mondayFirst ? 6 : 0; + if (mondayFirst) { + wday = (wday > 0) ? (wday - 1) : 6; + } + var iday = 1; + var row = this.tbody.firstChild; + var MN = Calendar._MN3[month]; + var hasToday = ((today.getFullYear() == year) && (today.getMonth() == month)); + var todayDate = today.getDate(); + for (var i = 0; i < 6; ++i) { + if (iday > no_days) { + row.className = "emptyrow"; + row = row.nextSibling; + continue; + } + var cell = row.firstChild; + row.className = "daysrow"; + for (var j = 0; j < 7; ++j) { + if ((!i && j < wday) || iday > no_days) { + cell.className = "emptycell"; + cell = cell.nextSibling; + continue; + } + cell.firstChild.data = iday; + cell.className = "day"; + cell.disabled = false; + if (typeof this.checkDisabled == "function") { + date.setDate(iday); + if (this.checkDisabled(date)) { + cell.className += " disabled"; + cell.disabled = true; + } + } + if (!cell.disabled) { + cell.caldate = iday; + cell.ttip = "_"; + if (iday == mday) { + cell.className += " selected"; + this.currentDateEl = cell; + } + if (hasToday && (iday == todayDate)) { + cell.className += " today"; + cell.ttip += Calendar._TT["PART_TODAY"]; + } + if (wday == SAT || wday == SUN) { + cell.className += " weekend"; + } + } + ++iday; + ((++wday) ^ 7) || (wday = 0); + cell = cell.nextSibling; + } + row = row.nextSibling; + } + this.title.firstChild.data = Calendar._MN[month] + ", " + year; + // PROFILE + // this.tooltips.firstChild.data = "Generated in " + ((new Date()) - today) + " ms"; +}; + +/** +* Calls _init function above for going to a certain date (but only if the +* date is different than the currently selected one). +*/ +Calendar.prototype.setDate = function (date) { + if (!date.equalsTo(this.date)) { + this._init(this.mondayFirst, date); + } +}; + +/** Modifies the "mondayFirst" parameter (EU/US style). */ +Calendar.prototype.setMondayFirst = function (mondayFirst) { + this._init(mondayFirst, this.date); + this._displayWeekdays(); +}; + +/** +* Allows customization of what dates are enabled. The "unaryFunction" +* parameter must be a function object that receives the date (as a JS Date +* object) and returns a boolean value. If the returned value is true then +* the passed date will be marked as disabled. +*/ +Calendar.prototype.setDisabledHandler = function (unaryFunction) { + this.checkDisabled = unaryFunction; +}; + +/** Customization of allowed year range for the calendar. */ +Calendar.prototype.setRange = function (a, z) { + this.minYear = a; + this.maxYear = z; +}; + +/** Calls the first user handler (selectedHandler). */ +Calendar.prototype.callHandler = function () { + if (this.onSelected) { + this.onSelected(this, this.date.print(this.dateFormat)); + } +}; + +/** Calls the second user handler (closeHandler). */ +Calendar.prototype.callCloseHandler = function () { + if (this.onClose) { + this.onClose(this); + } + this.hideShowCovered(); +}; + +/** Removes the calendar object from the DOM tree and destroys it. */ +Calendar.prototype.destroy = function () { + var el = this.element.parentNode; + el.removeChild(this.element); + Calendar._C = null; + delete el; +}; + +/** +* Moves the calendar element to a different section in the DOM tree (changes +* its parent). +*/ +Calendar.prototype.reparent = function (new_parent) { + var el = this.element; + el.parentNode.removeChild(el); + new_parent.appendChild(el); +}; + +/** Shows the calendar. */ +Calendar.prototype.show = function () { + this.element.style.display = "block"; + this.hideShowCovered(); +}; + +/** +* Hides the calendar. Also removes any "hilite" from the class of any TD +* element. +*/ +Calendar.prototype.hide = function () { + var trs = this.table.getElementsByTagName("td"); + for (var i = trs.length; i > 0; ) { + Calendar.removeClass(trs[--i], "hilite"); + } + this.element.style.display = "none"; +}; + +/** +* Shows the calendar at a given absolute position (beware that, depending on +* the calendar element style -- position property -- this might be relative +* to the parent's containing rectangle). +*/ +Calendar.prototype.showAt = function (x, y) { + var s = this.element.style; + s.left = x + "px"; + s.top = y + "px"; + this.show(); +}; + +/** Shows the calendar near a given element. */ +Calendar.prototype.showAtElement = function (el) { + var p = Calendar.getAbsolutePos(el); + + var cw = 190; + var ch = -200; + + if (Calendar.is_ie) + { + var posX = getWndX(el) + el.offsetWidth + 18; if (posX + ch > document.body.scrollLeft + document.body.offsetWidth) posX = document.body.scrollLeft + document.body.offsetWidth - ch + var posY = p.y + el.offsetHeight; if (posY + cw > document.body.scrollTop + document.body.offsetHeight) posY = getWndY(el) - cw; + //document.body.scrollTop + document.body.offsetHeight - cw - el.offsetHeight + this.showAt(posX, posY); + } + else + { + // for other browsers types + this.showAt(getWndX(el) + el.offsetWidth + 30, p.y + el.offsetHeight-200); + } +}; + +function getWndC(object, c) +{ + pos = 0; + while (object != null) + { + pos += (c == "y") ? object.offsetTop : object.offsetLeft; + object = object.offsetParent; + } + return pos; +} + +function getWndX(object) {return getWndC(object, "x")} +function getWndY(object) {return getWndC(object, "y")} + + +/** Customizes the date format. */ +Calendar.prototype.setDateFormat = function (str) { + this.dateFormat = str; +}; + +/** Customizes the tooltip date format. */ +Calendar.prototype.setTtDateFormat = function (str) { + this.ttDateFormat = str; +}; + +/** +* Tries to identify the date represented in a string. If successful it also +* calls this.setDate which moves the calendar to the given date. +*/ +Calendar.prototype.parseDate = function (str, fmt) { + var y = 0; + var m = -1; + var d = 0; + var a = str.split(/\W+/); + if (!fmt) { + fmt = this.dateFormat; + } + var b = fmt.split(/\W+/); + var i = 0, j = 0; + for (i = 0; i < a.length; ++i) { + if (b[i] == "D" || b[i] == "DD") { + continue; + } + if (b[i] == "j" || b[i] == "d") { + d = a[i]; + } + if (b[i] == "n" || b[i] == "m") { + m = a[i]-1; + } + // if (b[i] == "y") { + // y = a[i]; + // } + if ((b[i] == "Y")||(b[i] == "y")) { + // if (b[i] == "yy") { + if (a[i].length == 4) { + y = a[i]; + } + else { + if (parseInt(a[i]) < 70) { + y = parseInt(a[i]) + 2000; + } + else { + y = parseInt(a[i]) + 1900; + } + } + } + if (b[i] == "M" || b[i] == "MM") { + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } + } + } + } + if (y != 0 && m != -1 && d != 0) { + this.setDate(new Date(y, m, d)); + return; + } + y = 0; m = -1; d = 0; + for (i = 0; i < a.length; ++i) { + if (a[i].search(/[a-zA-Z]+/) != -1) { + var t = -1; + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } + } + if (t != -1) { + if (m != -1) { + d = m+1; + } + m = t; + } + } else if (parseInt(a[i]) <= 12 && m == -1) { + m = a[i]-1; + } else if (parseInt(a[i]) > 31 && y == 0) { + y = a[i]; + } else if (d == 0) { + d = a[i]; + } + } + if (y == 0) { + var today = new Date(); + y = today.getFullYear(); + } + if (m != -1 && d != 0) { + this.setDate(new Date(y, m, d)); + } +}; + +Calendar.prototype.hideShowCovered = function () { + var tags = new Array("applet", "iframe", "select"); + var el = this.element; + + var p = Calendar.getAbsolutePos(el); + var EX1 = p.x; + var EX2 = el.offsetWidth + EX1; + var EY1 = p.y; + var EY2 = el.offsetHeight + EY1; + + for (var k = tags.length; k > 0; ) { + var ar = document.getElementsByTagName(tags[--k]); + var cc = null; + + for (var i = ar.length; i > 0;) { + cc = ar[--i]; + + p = Calendar.getAbsolutePos(cc); + var CX1 = p.x; + var CX2 = cc.offsetWidth + CX1; + var CY1 = p.y; + var CY2 = cc.offsetHeight + CY1; + + if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { + cc.style.visibility = "visible"; + } else { + cc.style.visibility = "hidden"; + } + } + } +}; + +/** Internal function; it displays the bar with the names of the weekday. */ +Calendar.prototype._displayWeekdays = function () { + var MON = this.mondayFirst ? 0 : 1; + var SUN = this.mondayFirst ? 6 : 0; + var SAT = this.mondayFirst ? 5 : 6; + var cell = this.daynames.firstChild; + for (var i = 0; i < 7; ++i) { + cell.className = "day name"; + if (!i) { + cell.ttip = this.mondayFirst ? Calendar._TT["SUN_FIRST"] : Calendar._TT["MON_FIRST"]; + cell.navtype = 100; + cell.calendar = this; + Calendar._add_evs(cell); + } + if (i == SUN || i == SAT) { + Calendar.addClass(cell, "weekend"); + } + cell.firstChild.data = Calendar._DN3[i + 1 - MON]; + cell = cell.nextSibling; + } +}; + +/** Internal function. Hides all combo boxes that might be displayed. */ +Calendar.prototype._hideCombos = function () { + this.monthsCombo.style.display = "none"; + this.yearsCombo.style.display = "none"; +}; + +/** Internal function. Starts dragging the element. */ +Calendar.prototype._dragStart = function (ev) { + if (this.dragging) { + return; + } + this.dragging = true; + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posY = ev.clientY + window.scrollY; + posX = ev.clientX + window.scrollX; + } + var st = this.element.style; + this.xOffs = posX - parseInt(st.left); + this.yOffs = posY - parseInt(st.top); + with (Calendar) { + addEvent(document, "mousemove", calDragIt); + addEvent(document, "mouseover", stopEvent); + addEvent(document, "mouseup", calDragEnd); + } +}; + +// BEGIN: DATE OBJECT PATCHES + +/** Adds the number of days array to the Date object. */ +Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); + +/** Returns the number of days in the current month */ +Date.prototype.getMonthDays = function() { + var year = this.getFullYear(); + var month = this.getMonth(); + if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { + return 29; + } else { + return Date._MD[month]; + } +}; + +/** Checks dates equality (ignores time) */ +Date.prototype.equalsTo = function(date) { + return ((this.getFullYear() == date.getFullYear()) && + (this.getMonth() == date.getMonth()) && + (this.getDate() == date.getDate())); +}; + +/** Prints the date in a string according to the given format. */ +Date.prototype.print = function (frm) { + var str = new String(frm); + var m = this.getMonth(); + var d = this.getDate(); + var y = this.getFullYear(); + var w = this.getDay(); + var s = new Array(); + s["j"] = d; + s["d"] = (d < 10) ? ("0" + d) : d; + s["n"] = 1+m; + s["m"] = (m < 9) ? ("0" + (1+m)) : (1+m); + s["Y"] = y; + s["y"] = new String(y).substr(2, 2); + with (Calendar) { + s["D"] = _DN3[w]; + s["DD"] = _DN[w]; + s["M"] = _MN3[m]; + s["MM"] = _MN[m]; + } + var re = /(.*)(\W|^)(j|d|n|m|y|Y|MM|M|DD|D)(\W|$)(.*)/; + while (re.exec(str) != null) { + str = RegExp.$1 + RegExp.$2 + s[RegExp.$3] + RegExp.$4 + RegExp.$5; + } + return str; +}; + +// END: DATE OBJECT PATCHES +/**/ +/**/ +Calendar._DN = new Array +("Sunday", +"Monday", +"Tuesday", +"Wednesday", +"Thursday", +"Friday", +"Saturday", +"Sunday"); +Calendar._MN = new Array +("January", +"February", +"March", +"April", +"May", +"June", +"July", +"August", +"September", +"October", +"November", +"December"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["TOGGLE"] = "Toggle first day of week"; +Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)"; +Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)"; +Calendar._TT["GO_TODAY"] = "Go Today"; +Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)"; +Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)"; +Calendar._TT["SEL_DATE"] = "Select date"; +Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; +Calendar._TT["PART_TODAY"] = " (today)"; +Calendar._TT["MON_FIRST"] = "Display Monday first"; +Calendar._TT["SUN_FIRST"] = "Display Sunday first"; +Calendar._TT["CLOSE"] = "Close"; +Calendar._TT["TODAY"] = "Today"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd"; +Calendar._TT["TT_DATE_FORMAT"] = "D, M d"; +/**/ +/**/ +//document.write("") +/* The main calendar widget. DIV containing a table. */ + Index: inc/captcha_image.tpl =================================================================== diff -u -N --- inc/captcha_image.tpl (revision 0) +++ inc/captcha_image.tpl (revision 12930) @@ -0,0 +1 @@ + \ No newline at end of file Index: inc/style.css =================================================================== diff -u -N --- inc/style.css (revision 0) +++ inc/style.css (revision 12930) @@ -0,0 +1,419 @@ +body { + padding: 0px; + background-color: #ffffff; + font-family: arial, verdana, helvetica; + font-size: small; + width: auto; + margin: 15px; + } + +p, td { + font-family: arial, verdana, helvetica; + color: #000000; + font-size: small; + } + +input, select, textarea { + font-family: arial, verdana, helvetica; + color: #000000; + font-size: small; + } + +form { + margin: 0; + display: inline; + } + +table { + border-collapse: collapse; + width: 100%; + padding: 0px; + margin: 0px auto; +} + +td { + padding: 0px; + margin: 0px; + vertical-align: top; +} + +a, a:active { + color: #003399; + text-decoration: underline; + } + +a:hover { + color: #A20303; + } + +.error { + color: #A20303; + font-weight: bold; +} + +td.toolbar { + color:#FFFFFF; + background-color:#FD6500; + padding-top:7px; + padding-bottom:7px; + padding-left:20px; + padding-right:20px; + font-size: small; + } + +a.toolbar { + color:#FFFFFF; + text-decoration: none; + } + +a.toolbar:hover { + color:#FFFFFF; + text-decoration: underline; + } + +.block { + border: 1px solid #999999; + margin-bottom: 10px; + } + +.block-no-border { + border: 0px; + margin-bottom: 10px; + } + +td.block-header { + background-color: #003399; + color: #FFFFFF; + font-size: small; + font-weight: bold; + padding: 5px; + } + +td.block-header-orange { + background-color: #FD6500; + color: #FFFFFF; + font-size: small; + font-weight: bold; + padding: 5px; + } + + + +td.block-data, .block-data td { + padding: 10px; + } + +td.block-data-single { + padding: 10px 0px 10px 10px; + } + +.block-data-ul { + padding-left: 0px; + margin-left: 25px; + margin-top: 5px; + list-style-type: square; + } + +.block-data-big { + padding: 10px; + font-size: small; + } + +.block-data-big-ul { + font-size: small; + padding-left: 0px; + margin-left: 25px; + margin-top: 5px; + color: #003399; + list-style-type: square; + } + +.separator td { + padding: 0px; + background-color: #CCCCCC; +} + +.block-data2, .block-data2 td { + padding: 1px 10px 1px 10px; + } + +.subcat, a.subcat { + color: #A20303; + font-weight: bold; + text-decoration: none; + } + +a.subcat:hover { + text-decoration: underline; +} + +.price1 { + color: #A20303; + font-weight: bold; + } + +.price2 { + display: block; + font-weight: bold; + font-size: medium; + padding: 2px; + } + +.price-msrp { + text-decoration:line-through; + } + +.header { + margin-bottom: 5px; +} + +.header td { + font-size: small; + } + +.toolbar-block { + border: 1px solid #777; + width: 100%; +} + +.main-table { + width: 100%; + margin: 0px auto; +} + +.main-column-left { + width:200px; + padding-top:10px; + padding-right:10px; + } + +.main-column-center { + padding-top:10px; + padding-right:10px; + } + +.main-column-single { + padding-top:10px; + } + +.main-column-right { + width:200px; + padding-top:10px; + } + +.link-product1 { + font-size: medium; + font-weight: bold; + } +.link-product2 { + font-size: small; + font-weight: bold; + } + +.link-nav-bar { + font-weight: bold; +} + +.nav-bar { + padding: 4px 10px 0px 4px; +} + +.nav-bar-current { + color: #A20303; + font-weight: bold; +} + +.cart-header td { + background-color: #EBEBEB; + color: #000000; + font-weight: bold; + padding: 2px; + padding-left: 10px; + border-bottom: 1px solid #989898; +} + +.cart-item td { + color: #000000; + padding:10px; + border-bottom: 1px solid #989898; +} + +.cart-item-small td { + color: #000000; + padding: 2px 10px 2px 10px; + border-bottom: 1px solid #989898; +} + +.cart-subtotal td { + color: #000000; + padding: 4px 10px 4px 10px; +} + +.form-data { + width: auto; + margin: 10px; +} + +.form-data td { + padding: 2px; + padding-right: 10px; + border: none; + vertical-align: middle; +} + +.adv-search-form { + width: auto; + border: 1px solid #ccc; + display: table-inline; +} + +.adv-search-form td { + padding: 5px 10px 5px 10px; + vertical-align: middle; + text-align: left; + border-bottom: 1px solid #aaa; +} + +.warning { + border: 1px solid #A1060A; + padding: 20px; + margin-top: 5px; + margin-bottom: 5px; +} +.warning-text { + color: #A20303; + font-weight: bold; + font-size: 16px; +} + +.notice { + border: 1px solid #23BC06; + padding: 20px; + margin-top: 5px; + margin-bottom: 5px; +} +.notice-text { + color: #23BC06; + font-weight: bold; + font-size: 16px; +} + +.relevance-bar td { + border: 1px solid #FF0000; + padding: 0px; + margin: 0px; +} + +.pagination-bar td { + padding: 5px; + font-weight: bold; +} + +a.pagination-bar { + font-weight: bold; +} + +.hidden { + display: none; +} + + + + +/* ---- Calendar ---- */ + +.calendar { + font-family: tahoma,verdana,sans-serif; + color: #000; + font-size: 11px; + border: 1px solid #83B2C5; + width: 225px; + position: relative; + z-index: 1; + display: none; + cursor: default; + +} + + +.calendar table { + /*font-family: tahoma,verdana,sans-serif;*/ + color: #000; + font-size: 11px; + background-color: #fefefe; + width: auto; + cursor: default; + border-collapse: separate; + +} + +.calendar table td { + text-align: center; + padding: 2px; + text-align: center; +} + +.calendar tbody .disabled { + color: #999; +} + +.calendar tbody .emptyrow { + display: none; + +} + +.calendar tbody .today { + font-weight: bold; + background-color: #eeeeee; + border: 1px solid #aaaaaa !important; +} + +.calendar tbody .emptycell { + visibility: hidden; +} + +.calendar tbody .active { + background-color: red; +} + +.calendar thead .title { + font-weight: bold; +} + +.calendar thead .headrow { + +} + +.calendar thead .active { + background-color: #c4c0b8; + padding: 2px 0px 0px 2px; + +} + + + +.calendar thead .hilite { + background-color: #e4e0d8; +} + +.calendar tfoot .title { + font-weight: normal; +} + +.combo { position: absolute; display: none; width: 4em; top: 0px; left: 0px; cursor: default; border-top: 1px solid #fff; border-right: 1px solid #000; border-bottom: 1px solid #000; border-left: 1px solid #fff; background: #e4e0d8; font-size: smaller; padding: 1px;} +.combo .label { text-align: center; padding: 1px;} +.combo .active { background: #c4c0b8; padding: 0px; border-top: 1px solid #000; border-right: 1px solid #fff; border-bottom: 1px solid #fff; border-left: 1px solid #000;} +.combo .hilite { background: #048; color: #fea;} + +.dpContainer { + display: inline; + +} + +.list-no-squares { + padding: 0px; + list-style-type: none; + margin: 0px; +} + +/* ---- /Calendar ---- */ \ No newline at end of file Index: platform/blocks/common/adv_search.tpl =================================================================== diff -u -N --- platform/blocks/common/adv_search.tpl (revision 0) +++ platform/blocks/common/adv_search.tpl (revision 12930) @@ -0,0 +1,11 @@ + + + + + + + + +
    + +
    "> ">Advanced Search
    \ No newline at end of file Index: platform/blocks/common/contact_info.tpl =================================================================== diff -u -N --- platform/blocks/common/contact_info.tpl (revision 0) +++ platform/blocks/common/contact_info.tpl (revision 12930) @@ -0,0 +1,52 @@ + + + + + + + +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :">
    :
    :
    :
     
    :
    :
    :
    :
    :
    +
    Index: platform/blocks/common/copyright.tpl =================================================================== diff -u -N --- platform/blocks/common/copyright.tpl (revision 0) +++ platform/blocks/common/copyright.tpl (revision 12930) @@ -0,0 +1,7 @@ + + + + +
    + In-Commerce ® 1997-2007, Intechnic Corporation.
    +
    \ No newline at end of file Index: platform/blocks/common/credit_cards.tpl =================================================================== diff -u -N --- platform/blocks/common/credit_cards.tpl (revision 0) +++ platform/blocks/common/credit_cards.tpl (revision 12930) @@ -0,0 +1,18 @@ + + + + + + + +

    +
    + + + + +
    + +
    +
    +
    \ No newline at end of file Index: platform/blocks/common/footer.tpl =================================================================== diff -u -N --- platform/blocks/common/footer.tpl (revision 0) +++ platform/blocks/common/footer.tpl (revision 12930) @@ -0,0 +1,18 @@ + + + + +
    + " class="toolbar"> | + " class="toolbar"> | + " class="toolbar"> | + " class="toolbar"> | + " class="toolbar"> + + | + + + +
    + + \ No newline at end of file Index: platform/blocks/common/forgotpass_confirm.tpl =================================================================== diff -u -N --- platform/blocks/common/forgotpass_confirm.tpl (revision 0) +++ platform/blocks/common/forgotpass_confirm.tpl (revision 12930) @@ -0,0 +1,27 @@ + + + + + + + + + +
    + +
    + + +

    + + +

    + + " class="button" /> + + + + + +
    + Index: platform/blocks/common/forgotpass_form.tpl =================================================================== diff -u -N --- platform/blocks/common/forgotpass_form.tpl (revision 0) +++ platform/blocks/common/forgotpass_form.tpl (revision 12930) @@ -0,0 +1,66 @@ + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +


    : + +
    + +
    +
      
    : + +
    + +
    +
     " name="events[u][OnForgotPassword]" class="button" /> ';" value=""> 
    + + + +
    + + + +
    + Index: platform/blocks/common/forgotpass_reset.tpl =================================================================== diff -u -N --- platform/blocks/common/forgotpass_reset.tpl (revision 0) +++ platform/blocks/common/forgotpass_reset.tpl (revision 12930) @@ -0,0 +1,44 @@ + + + + + + + + + +
    + +
    + + + +

    + + + +

    + + + + " class="button" /> + + " class="button" onClick="window.location.href=''" /> + + + + + + + +

    + "> +
    + + + + + + +
    + Index: platform/blocks/common/forgotpass_reset_ok.tpl =================================================================== diff -u -N --- platform/blocks/common/forgotpass_reset_ok.tpl (revision 0) +++ platform/blocks/common/forgotpass_reset_ok.tpl (revision 12930) @@ -0,0 +1,27 @@ + + + + + + + + + +
    + +
    + + + +

    + + " class="button" onClick="window.location.href='&next_template=index'" /> + + + +

    +

    +

    + +
    + Index: platform/blocks/common/form_phrase.tpl =================================================================== diff -u -N --- platform/blocks/common/form_phrase.tpl (revision 0) +++ platform/blocks/common/form_phrase.tpl (revision 12930) @@ -0,0 +1,87 @@ + + + + +
    + + + + + + + + +
    + Missing phrase adding +
    +
    + + + + + +
    + + Warning
    + There is a problem with the form, please check the error messages below. +
    +
    + + * Indicates Required fields.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + : + + +  
    + : + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 300px;" /> +
    + : + + +
    + " /> + " value="" /> + " value="0" /> + + "/> +
    +
    + +
    \ No newline at end of file Index: platform/blocks/common/header.tpl =================================================================== diff -u -N --- platform/blocks/common/header.tpl (revision 0) +++ platform/blocks/common/header.tpl (revision 12930) @@ -0,0 +1,52 @@ + + + + + + + + +
    + ">In-commerce Online Store + + + , ! +
    +
    +
    + + : + + + + + + + +
    +   : + + + +
    \ No newline at end of file Index: platform/blocks/common/html_head.tpl =================================================================== diff -u -N --- platform/blocks/common/html_head.tpl (revision 0) +++ platform/blocks/common/html_head.tpl (revision 12930) @@ -0,0 +1,23 @@ + +" /> + + + + + + " /> + " /> + + + + + + + + + + + + \ No newline at end of file Index: platform/blocks/common/login.tpl =================================================================== diff -u -N --- platform/blocks/common/login.tpl (revision 0) +++ platform/blocks/common/login.tpl (revision 12930) @@ -0,0 +1,43 @@ + + + + + + + +
    + + ,
    +
    + + +
    + +
    + + +
    + +
    + +
    +
    + +

    + " />
    +
    + +
    +
    + + + ">
    +
    + + ">? + + "> + + +
    +
    \ No newline at end of file Index: platform/blocks/common/login_existing.tpl =================================================================== diff -u -N --- platform/blocks/common/login_existing.tpl (revision 0) +++ platform/blocks/common/login_existing.tpl (revision 12930) @@ -0,0 +1,71 @@ +
    + + + + + + + + +
    + +
    + + + + + +
    + +
    + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + *: + + +  
    + *: + + +  
    + *: + + +
    + " />

    + + ">
    +
    +
    + + "> + +
    \ No newline at end of file Index: platform/blocks/common/mailing_list.tpl =================================================================== diff -u -N --- platform/blocks/common/mailing_list.tpl (revision 0) +++ platform/blocks/common/mailing_list.tpl (revision 12930) @@ -0,0 +1,24 @@ + + + + + + + +
    +
    +
    + +

    + +
    +
    + " /> + " /> +   + + + + + +
    Index: platform/blocks/common/not_found_warning.tpl =================================================================== diff -u -N --- platform/blocks/common/not_found_warning.tpl (revision 0) +++ platform/blocks/common/not_found_warning.tpl (revision 12930) @@ -0,0 +1,22 @@ + + + + + + + +
    + +
    + + + + + +
    + +
    + +
    + +
    \ No newline at end of file Index: platform/blocks/common/recommend_send.tpl =================================================================== diff -u -N --- platform/blocks/common/recommend_send.tpl (revision 0) +++ platform/blocks/common/recommend_send.tpl (revision 12930) @@ -0,0 +1,20 @@ + + + + + + + +
    + +
    +
    + +
    +
    + +
    +
    + + +
    Index: platform/blocks/common/recommend_site.tpl =================================================================== diff -u -N --- platform/blocks/common/recommend_site.tpl (revision 0) +++ platform/blocks/common/recommend_site.tpl (revision 12930) @@ -0,0 +1,18 @@ + + + + + + + +

    +
    + +

    + +
    +
    + " /> + +
    +
    \ No newline at end of file Index: platform/blocks/common/redirect.tpl =================================================================== diff -u -N --- platform/blocks/common/redirect.tpl (revision 0) +++ platform/blocks/common/redirect.tpl (revision 12930) @@ -0,0 +1,18 @@ + + + + + + + +
    +
    + +
    + ">
    +
    + +
    +
    \ No newline at end of file Index: platform/blocks/common/subscribe_confirmation.tpl =================================================================== diff -u -N --- platform/blocks/common/subscribe_confirmation.tpl (revision 0) +++ platform/blocks/common/subscribe_confirmation.tpl (revision 12930) @@ -0,0 +1,26 @@ + + + + + + + +
    + +
    +
    + +
    +
    + + + +
    +
    +
    + " />  + " onClick="window.location.href=''" />  + + + +
    Index: platform/blocks/common/subscribe_ok.tpl =================================================================== diff -u -N --- platform/blocks/common/subscribe_ok.tpl (revision 0) +++ platform/blocks/common/subscribe_ok.tpl (revision 12930) @@ -0,0 +1,22 @@ + + + + + + + +
    + +
    +
    + +
    +
    + + ! +
    +
    + + " onClick="window.location.href=''" />  + +
    Index: platform/blocks/common/test.tpl =================================================================== diff -u -N --- platform/blocks/common/test.tpl (revision 0) +++ platform/blocks/common/test.tpl (revision 12930) @@ -0,0 +1,3 @@ + + " class="toolbar">Your Wish List | + Index: platform/blocks/common/toolbar.tpl =================================================================== diff -u -N --- platform/blocks/common/toolbar.tpl (revision 0) +++ platform/blocks/common/toolbar.tpl (revision 12930) @@ -0,0 +1,24 @@ + + + + + +
    : +
    "> + +   + !" /> + +   " class="toolbar"> +
    + + " class="toolbar"> | + " class="toolbar"> | + " class="toolbar"> | + " class="toolbar"> | + " class="toolbar"> + + + + +
    Index: platform/blocks/common/unsubscribe_confirmation.tpl =================================================================== diff -u -N --- platform/blocks/common/unsubscribe_confirmation.tpl (revision 0) +++ platform/blocks/common/unsubscribe_confirmation.tpl (revision 12930) @@ -0,0 +1,26 @@ + + + + + + + +
    + +
    +
    + +
    +
    + + + +
    +
    +
    + " />  + " onClick="window.location.href=''" />  + + + +
    Index: platform/blocks/common/unsubscribe_ok.tpl =================================================================== diff -u -N --- platform/blocks/common/unsubscribe_ok.tpl (revision 0) +++ platform/blocks/common/unsubscribe_ok.tpl (revision 12930) @@ -0,0 +1,22 @@ + + + + + + + +
    + +
    +
    + +
    +
    + + +
    +
    + + " onClick="window.location.href=''" />  + +
    Index: platform/blocks/login/form_register.tpl =================================================================== diff -u -N --- platform/blocks/login/form_register.tpl (revision 0) +++ platform/blocks/login/form_register.tpl (revision 12930) @@ -0,0 +1,335 @@ + + + + + +
    + + + + + + + + +
    + +
    +
    +
    + + + + + +
    + +
    + + +
    +
    + + * .

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *: + + " value="" style="width: 300px;" /> +
    + *:
    +
    + + " id="" value="" style="width: 100px;" datepickerIcon="img/calendar.gif"/> + + (, ex. ) + " value="" /> +
    + : + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 300px;" /> +
    + 1: + + " value="" style="width: 300px;" /> +
    + 2: + + " value="" style="width: 300px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 200px;" /> +
    + : + + " value="" style="width: 100px;" /> +
    + : + + +
    + : + + " value="" style="width: 150px;" /> +
    + : + + " value="" style="width: 150px;" /> +
    + : + + checked/> +  
    + *: + + " /> + + + +   +
    + " value="" checked /> + + +
      
    + : + + + + +
     
    +
    + : + + +  
    + + + + + + + + +   +
    + : + + " />
    +
     
    +   + +
    + " value="" style="width: 80px;" /> +
    + + " /> + + + + " /> + +
    +
    + +
    + + +
    \ No newline at end of file Index: platform/blocks/login/login_pending_disabled.tpl =================================================================== diff -u -N --- platform/blocks/login/login_pending_disabled.tpl (revision 0) +++ platform/blocks/login/login_pending_disabled.tpl (revision 12930) @@ -0,0 +1,18 @@ + + + + + + + + + +
    + + +
    + + : + +
    + Index: platform/blocks/login/no_permission_warning.tpl =================================================================== diff -u -N --- platform/blocks/login/no_permission_warning.tpl (revision 0) +++ platform/blocks/login/no_permission_warning.tpl (revision 12930) @@ -0,0 +1,22 @@ + + + + + + + +
    + +
    + + + + + +
    + +
    + +
    + +
    \ No newline at end of file Index: platform/blocks/login/register_confirm.tpl =================================================================== diff -u -N --- platform/blocks/login/register_confirm.tpl (revision 0) +++ platform/blocks/login/register_confirm.tpl (revision 12930) @@ -0,0 +1,16 @@ + + + + + + + + + +
    + +
    + + +
    + Index: platform/blocks/login/register_confirm_pending.tpl =================================================================== diff -u -N --- platform/blocks/login/register_confirm_pending.tpl (revision 0) +++ platform/blocks/login/register_confirm_pending.tpl (revision 12930) @@ -0,0 +1,17 @@ + + + + + + + + + +
    + + +
    + + +
    + Index: platform/blocks/login/register_disabled.tpl =================================================================== diff -u -N --- platform/blocks/login/register_disabled.tpl (revision 0) +++ platform/blocks/login/register_disabled.tpl (revision 12930) @@ -0,0 +1,17 @@ + + + + + + + + + +
    + + +
    + + +
    + Index: platform/login/forgotpass.tpl =================================================================== diff -u -N --- platform/login/forgotpass.tpl (revision 0) +++ platform/login/forgotpass.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_ForgotPassword"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + Index: platform/login/forgotpass_reset.tpl =================================================================== diff -u -N --- platform/login/forgotpass_reset.tpl (revision 0) +++ platform/login/forgotpass_reset.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_ForgotPassword"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + Index: platform/login/forgotpass_reset_ok.tpl =================================================================== diff -u -N --- platform/login/forgotpass_reset_ok.tpl (revision 0) +++ platform/login/forgotpass_reset_ok.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_ForgotPassword"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + Index: platform/login/login_pending_disabled.tpl =================================================================== diff -u -N --- platform/login/login_pending_disabled.tpl (revision 0) +++ platform/login/login_pending_disabled.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_title_DisabledAccountWarning"/> + + + + + + + + + + + + + +
    +
    + + + + +
    + + +
    + + + + + + + Index: platform/login/login_register.tpl =================================================================== diff -u -N --- platform/login/login_register.tpl (revision 0) +++ platform/login/login_register.tpl (revision 12930) @@ -0,0 +1,36 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_PleaseLogin"/> + + + + + + + + + + + + + +
    + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: platform/login/register.tpl =================================================================== diff -u -N --- platform/login/register.tpl (revision 0) +++ platform/login/register.tpl (revision 12930) @@ -0,0 +1,35 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_PleaseRegister"/> + + + + + + + + + + + + + +
    + + + + + +   + +
    + + + + + + + Index: platform/login/register_confirm.tpl =================================================================== diff -u -N --- platform/login/register_confirm.tpl (revision 0) +++ platform/login/register_confirm.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_RegisterConfirm "/> + + + + + + + + + + + + + +
    +
    + + + + +
    + + + + +
    + + + + + + + Index: platform/login/register_confirm_pending.tpl =================================================================== diff -u -N --- platform/login/register_confirm_pending.tpl (revision 0) +++ platform/login/register_confirm_pending.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_RegisterConfirmPending"/> + + + + + + + + + + + + + +
    +
    + + + + +
    + + + + +
    + + + + + + + Index: platform/login/register_disabled.tpl =================================================================== diff -u -N --- platform/login/register_disabled.tpl (revision 0) +++ platform/login/register_disabled.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="LU_TITLE_REGISTRATIONDISABLED"/> + + + + + + + + + + + + + +
    +
    + + + + +
    + + + + +
    + + + + + + + Index: platform/my_account/recommend.tpl =================================================================== diff -u -N --- platform/my_account/recommend.tpl (revision 0) +++ platform/my_account/recommend.tpl (revision 12930) @@ -0,0 +1,48 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_recommend_title"/> + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: platform/my_account/subscribe.tpl =================================================================== diff -u -N --- platform/my_account/subscribe.tpl (revision 0) +++ platform/my_account/subscribe.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_subscribe_title"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: platform/my_account/subscribe_ok.tpl =================================================================== diff -u -N --- platform/my_account/subscribe_ok.tpl (revision 0) +++ platform/my_account/subscribe_ok.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_subscribe_title"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: platform/my_account/unsubscribe.tpl =================================================================== diff -u -N --- platform/my_account/unsubscribe.tpl (revision 0) +++ platform/my_account/unsubscribe.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_unsubscribe_title"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: platform/my_account/unsubscribe_ok.tpl =================================================================== diff -u -N --- platform/my_account/unsubscribe_ok.tpl (revision 0) +++ platform/my_account/unsubscribe_ok.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_unsubscribe_title"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + Index: error_notfound.tpl =================================================================== diff -u -N --- error_notfound.tpl (revision 0) +++ error_notfound.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_error_404_title"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: index.tpl =================================================================== diff -u -N --- index.tpl (revision 0) +++ index.tpl (revision 12930) @@ -0,0 +1,55 @@ + + + + +<inp2:conf_ConfigValue name="Site_Name"/> + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + Index: no_permission.tpl =================================================================== diff -u -N --- no_permission.tpl (revision 0) +++ no_permission.tpl (revision 12930) @@ -0,0 +1,39 @@ + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: <inp2:m_Phrase label="lu_comm_NoPermissions"/> + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file Index: phrases_edit.tpl =================================================================== diff -u -N --- phrases_edit.tpl (revision 0) +++ phrases_edit.tpl (revision 12930) @@ -0,0 +1,37 @@ + + + + + +<inp2:conf_ConfigValue name="Site_Name"/> :: + + + + + + + + + + + + + +
    + + + + + + + + +
    + + + + + + + +
    \ No newline at end of file Index: redirect.tpl =================================================================== diff -u -N --- redirect.tpl (revision 0) +++ redirect.tpl (revision 12930) @@ -0,0 +1,74 @@ + + + + + <inp2:conf_ConfigValue name="Site_Name"/> + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + \ No newline at end of file