/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-   Author: Phoenix Snake
-   Create September 5, 2009
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

window.addEvent( "domready", function(){
   var mylog = new Notimoo();
   var showIndex = 0;
   
   if( $( "menu-shopby-acordian-show-index" ) )
      showIndex = $( "menu-shopby-acordian-show-index" ).title * 1;

   var mainMenu = new Accordion( $( 'shop-by-menu' ), '.submenu', '.submenu-detail', {
		onActive: function(toggler, element){
			toggler.setStyle('color', '#41464D');
		},
		onBackground: function(toggler, element){
			toggler.setStyle('color', '#528CE0');
		},
      initialDisplayFx: false,
      show: showIndex
	});

   if( $( "script-home-init" ) )
   if( marqueeEnable )
   var bestseller = new mooquee( $( 'home-best-seller-box' ), { 
      marWidth: "750px",
      marHeight: "150px",
      direction: "left",
      pauseOnContainerOver: false,
      speed: 40,
      steps: 1,
      userDefineEnd: endLimit,
      userDefineStart: 0
   } );
 
   initImageZoom();

   var event_add_to_cart = function (){
      var product_id = this.getElement( ".productID" ).get( "text" );
      var product_code = this.getElement( ".productCode" ).get( "text" );
      var product_name = this.getElement( ".productName" ).get( "text" );
      var ele = this;

      new Request.JSON({
         url: "serv.main.php",
         onSuccess: function( json, rtext ){
            ele.removeEvent( "click", event_add_to_cart );
            ele.removeClass( "add-to-cart-btn" );

            ele.addClass( "remove-from-cart-btn" );
            ele.addEvent( "click", remove_from_cart );

            mylog.show({message:"Add <span style=\"color: #b5e818\">" + product_name + " - " + product_code + "</span> to enquiry"});
         }
      }).send( "cmd=add-to-cart&id=" + product_id );

   };

   var remove_from_cart = function (){
      var product_id = this.getElement( ".productID" ).get( "text" );
      var product_code = this.getElement( ".productCode" ).get( "text" );
      var product_name = this.getElement( ".productName" ).get( "text" );
      var ele = this;
      

      new Request.JSON({
         url: "serv.main.php",
         onSuccess: function( json, rtext ){
            ele.removeEvent( "click", remove_from_cart);
            ele.removeClass( "remove-from-cart-btn" );

            ele.addClass( "add-to-cart-btn" );
            ele.addEvent( "click", event_add_to_cart );

            mylog.show({message:"Remove <span style=\"color: #e81900\">" + product_name + " - " + product_code + "</span> form enquiry."});

         }
      }).send( "cmd=remove-from-cart&id=" + product_id );

   };

   $$( ".add-to-cart-btn" ).each( function( e ){
      e.addEvent( "click", event_add_to_cart );
   } );

   $$( ".remove-from-cart-btn" ).each( function( e ){
      e.addEvent( "click", remove_from_cart );
   } );

   if( $( "enquiry-form" ) ){
      var enquiry_form = $( "enquiry-form" ).getElement( "form" );
      enquiry_form.cmd.value = "checkout";

      enquiry_form.addEvents( {
         "submit" : function( e ){
            e.stop();
           
            this.set( "send", {
               onComplete: function( response ){
                  if( response == "register needed" )
                     window.location = "?register";

                  mylog.show( { "message":response });
               }
            });
            
            this.send();
         }
      } );

      $$( ".remark-field" ).each( function( e ){
      
         e.addEvents( { "click":function(){
            if( e.value == "want to choose stone color ? CZ color ? ring sizes ?  ext ext ... please write it here" )
               e.value = "";
            
         }, "blur" : function(){
            if( e.value == "" )
               e.value = "want to choose stone color ? CZ color ? ring sizes ?  ext ext ... please write it here";

         } } );

      } );
         
      
/*      $( "eq-form-submit" ).addEvent( "click", function (){
         new Request.JSON({ "url":"serv.main.php", "":function( json, rtext ){
            
         } }).send( "cmd=checkout" );
         
      } );*/

   }

   if( $( "product-filter-option" ) ){
      $( "product-filter-option" ).getElements( ".filter" ).each( function( e ){

         if( e.hasClass( "all" ) )
            e.addEvent( "click", function(){
               $( "product-filter-option" ).getElements( ".filter" ).each( function ( e2 ){
                  if( e2.hasClass( "all" ) )
                     e2.addClass( "active" );
                  else
                     e2.removeClass( "active" );
               });
            } );
         else
            e.addEvent( "click", function(){
               $( "product-filter-option" ).getElements( ".filter.all" ).removeClass( "active" );
               if( this.hasClass( "active" ) )
                  this.removeClass( "active" );
               else
                  this.addClass( "active" );
            } );
      } );

   }

   if( $( "product-filter-trigger" ) ){
      var filterExpand = false;

      $( "product-filter-trigger" ).addEvents( {
         "click" : function(){
            var opacityDuration = 1500;

            if( filterExpand ){
               var myEffects = new Fx.Morph( 'product-filter-option', {duration: 500, transition: Fx.Transitions.Sine.easeIn });
               myEffects.start({
                   'height': 0
               });
               filterExpand = false;
               
               $( "product-filter-line" ).getElement( ".flahing-filter" ).tween( "opacity", 1 );
               
            }else{
               var myEffects = new Fx.Morph( 'product-filter-option', {duration: 500, transition: Fx.Transitions.Sine.easeIn });
               myEffects.start({
                   'height': 260
               });

               filterExpand = true;
               $( "product-filter-line" ).getElement( ".flahing-filter" ).tween( "opacity", 0 );
               
            }
          },
          "mouseover" : function(){
             this.addClass( "product-filter-trigger-hover" );
          },
          "mouseout" : function(){
             this.removeClass( "product-filter-trigger-hover" );
          }
      } );


      $( "apply-filter" ).addEvent( "click", function(){
         var liquid = this.getElement( ".liquid-data" );
         var rootCat = liquid.getElement( ".root-category" ).get( "text" );
         var baseFilter = liquid.getElement( ".base-category" ).get( "text" );

         var filter = "";

         $( "product-filter-option" ).getElements( ".filter" ).each( function( e ){
            if( e.hasClass( "active" ) )
               filter += e.get( "text" ) + ",";
         } );

         $( "box8" ).set( "html", "<div class=\"filtering\">filtering...</div>" );

         new Request.JSON( {
            "url" : "serv.main.php",
            "onSuccess" : function( json, rtext ){
               $( "box8" ).empty();
               $( "box8" ).set( "html", rtext );
               init_mySlide( "box8", "page-navigation" );
            }
         } ).send( "cmd=product-list&filter=" + filter + "&basefilter=" + baseFilter + "&root_cat=" + rootCat );
      } );
   }

   $$( ".filter" ).addEvents( {
      "mouseover" : function (){
         this.addClass( "hover" );
      },
      "mouseout" : function (){
         this.removeClass( "hover" );
      }
   } );

   if( $( "main-product-detail" ) ){
      $( "main-product-detail" ).getElements( ".remove-from-cart-btn, .add-to-cart-btn" ).each( function( e ){
         e.addEvent( "click", function(){
            var desc = e.getElement( ".desc" );
            var old = desc.get( "text" );

            if( e.hasClass( "remove-from-cart-btn" ) )
               desc.set( "text", "add enquiry" );
            else
               desc.set( "text", "remove from enquiry" );
         } );
      } );
   }
   
   $$( "*[rel=bns-image]" ).each( function( e ){
      e.addEvent( "click", function( ev ){
        ev.stop();
        var img = this.get( "href" );
        var link = "img.php?ro;src=" + img;

        $( 'product-detail-main-image-frame' ).addClass( "loading" );
        $( "product-detail-main-image" ).src = "img.php?nrm;src=" + img;
        $$( "a[href=" + link + "]" ).set( "href", $( "product-detail-main-image-link" ).get( "href" ) );
        $( "product-detail-main-image-link" ).set( "href", link );
        
      } );
   } );
   
   if( $( "product-detail-main-image" ) ){
      $( "product-detail-main-image" ).addEvent( "load", function(){
         $( 'product-detail-main-image-frame' ).removeClass( "loading" );
      } );
   }
   
   if( $( "product-catalog" ) ){
      $( "product-catalog" ).getElements( ".extra1, .extra2" ).addEvents( {
         "mouseover" : function (){
            this.setStyle( "color", "#545da9" );
         },
         "mouseout" : function (){
            this.setStyle( "color", "#7a7070" );
         }
      });
   }
   
   if( $( "shop-by-menu" ) ){
      $( "shop-by-menu" ).getElements( ".submenu" ).each( function( e ){
         e.addEvents( {
            "mouseover" : function(){
               this.addClass( "hover" );
            },
            "mouseout" : function(){
               this.removeClass( "hover" );
            }
         } );
      } );
   }

   if( $( "apply-filter" ) ){
      $( "apply-filter" ).addEvents( hoverEvent );
   }

   $$( ".bns-hover" ).each( function( e ){
      e.addEvents( hoverEvent );
   } );

   if( $( "search-form" ) ){
      $( "search-form" ).getElement( "input[name=search_query]" ).addEvents( {
         "click" : function(){
            if( this.value == "search" )
               this.value = "";
         },
         "blur" : function(){
            if( this.value == "" )
               this.value = "search";
         }
      } );
   }

   $$( ".sexyform input", ".sexyform select", ".sexyform textarea" /*, ".sexy-form input[type=checkbox]", ".sexy-form input[type=submit]"*/ ).each( function(el) {
      el.DoSexy();
   });

   if( $( "new-member-register-form" ) ){
      var form = $( "new-member-register-form" ).getElement( "form" );
      form.set( "send", { "onComplete" : function(){
         $( 'full-login-form' ).destroy();
         $( 'new-member-register-form' ).destroy();

         new Fx.Scroll( $( document.body ) ).start( 0, 0 );
         
         $( "log-status" ).setStyle( "display", "block" );
         $( "log-status" ).set( "html", "<div style=\"text-align: center;color:#6b6262;margin-top: 80px;\">register information has been accepted. <br />and verify email has been sent please check your email ( in junk also ). <br />and wait for admin to verify your account information.</div>" );

      } } );

      form.getElement( "input[name=email]" ).addEvents( {
         "blur" : function(){
            var email = this;
            var form = this.getParent( "form" );

            if( !/^.+@.+\..+$/.test( this.value ) ){
               var errorPlace = this.getParent( ".field-entry" );
               form.getElements( ".error-message" ).destroy();

               new Element( "div", {"class":"error-message", "html" : "invalid email address"} ).inject( errorPlace, "before" );
               return false;
            }

            new Request.JSON( {
               "url" : "serv.main.php",
               "onSuccess" : function( json, rtext ){
                  form.getElements( ".error-message" ).destroy();

                  if( rtext == "invalid" ){
                     var errorPlace = email.getParent( ".field-entry" );
                     new Element( "div", {"class":"error-message", "html" : "this email has already in use."} ).inject( errorPlace, "before" );
                  }
               }
            } ).send( "cmd=email-verify&email=" + this.value );
         }
      } );

      form.getElement( "input[name=username]" ).addEvents( {
         "blur" : function(){
            var email = this;
            var form = this.getParent( "form" );
            
            if( this.value )
            new Request.JSON( {
               "url" : "serv.main.php",
               "onSuccess" : function( json, rtext ){
                  form.getElements( ".error-message" ).destroy();

                  if( rtext == "invalid" ){
                     var errorPlace = email.getParent( ".field-entry" );
                     new Element( "div", {"class":"error-message", "html" : "this username has already taken."} ).inject( errorPlace, "before" );
                  }
               }
            } ).send( "cmd=username-verify&username=" + this.value );
         }
      } );

      form.addEvent( "submit", function( ev ){
         ev.stop();

         form.getElements( ".error-message" ).destroy();

         var error = false;
         
         form.getElements( ".require-field" ).each( function( e ){
            if( !e.value ){
               var errorPlace = e.getParent( ".field-entry" );
               new Element( "div", {"class":"error-message", "html" : "this field must not be empty"} ).inject( errorPlace, "before" );
               error = true;
            }
         } );
         
         if( error )
            new Fx.Scroll( $( document.body ) ).start( 0, 340 );
         else
            this.send( "serv.main.php" );
      } );
   }
   
   init_mySlide( "box8", "page-navigation" );

});

var init_mySlide = function( stage, navigation ){
   if( $( "product-catalog" ) && $( navigation ) ){
     
      var navI = $( navigation );
      var navIm = $( navigation + "-more" );

      navI.empty();
      navIm.empty();

      var page_count = 0;
      $$( '#' + stage + ' .page-entry' ).each( function( e ){ page_count++; } );

      if( page_count > 1 ){
         navI.grab( new Element( "span", { "class":"previous prev-trigger" } ) );
         navI.grab( new Element( "span", { "class":"next next-trigger" } ) );
         navIm.grab( new Element( "span", { "class":"previous prev-trigger" } ) );
         navIm.grab( new Element( "span", { "class":"next next-trigger" } ) );
		   
         for( i = 0; i < page_count; i++ ){
            new Element( "a", { "class":"page-trigger", "href":"javascript:;", "html": i + 1 } ).inject( navI.getElement( ".next-trigger" ), "before" );
            new Element( "a", { "class":"page-trigger", "href":"javascript:;", "html": i + 1 } ).inject( navIm.getElement( ".next-trigger" ), "before" );
         }
      }
      
      var nS8_more = $$( '#' + navigation + '-more .page-trigger' );

      var nS8 = new noobSlide( {
			box: $( stage ),
			items: $$( '.page-entry' ),
			size: 770,
			handles: $$( '#' + navigation + ' .page-trigger' ),
			onWalk: function( currentItem, currentHandle ){
            var index_count = 0;
            var curIndex = this.currentIndex;

            $$( this.handles, nS8_more ).removeClass( 'active' );
				$$( currentHandle, nS8_more[ curIndex ] ).addClass( 'active' );
            
            navI.getElements( ".page-trigger" ).each( function( e ){
               if( index_count++ == curIndex ){
                  e.removeClass( "active" ); 
                  e.addClass( "active" );
               }else
                  e.removeClass( "active" );
                 
            } );
			}
		} );
      
      if( navI.getElement( '.prev-trigger' ) ){
         nS8.addActionButtons( 'previous', navI.getElements( '.prev-trigger' ) );
		   nS8.addActionButtons( 'next', navI.getElements( '.next-trigger' ) );
         nS8.addActionButtons( 'previous', navIm.getElements( '.prev-trigger' ) );
		   nS8.addActionButtons( 'next', navIm.getElements( '.next-trigger' ) );
      }

      nS8.addHandleButtons( nS8_more );

   }

   if( $( "search-form" ) ){
      $( "search-submit" ).addEvent( "click", function(){
         $( "search-form" ).submit();
      } );
      
   }

   var promotion_rotate = function(){
      new Request.JSON( {
         "url":"serv.main.php", 
         "onSuccess":function( json, rtext ){
            var img = $( "promotion-revolver" ).getElement( "img" );
            var price = $( "promotion-revolver" ).getElement( ".promotion-overlay" );
            img.set( "src", json.promotion_image );
            price.set( "html", json.promotion_price );
         } 
      } ).send( "cmd=promotion-rotate" );
   
   };
   
   if( $( "promotion-revolver" ) ){
      promotion_rotate.periodical( 3000 );
   }

   if( $( "enquiry-display-table" ) ){
      $( "enquiry-display-table" ).getElements( ".enquiry-entry" ).each( function( e ){
         var rmB = e.getElement( ".remove-from-enquiry" );
         rmB.addEvent( "click", function(){
            var liquid = e.getElement( ".liquid-data" );
            var id = liquid.getElement( ".id" ).get( "title" );

            new Request.JSON( { "url":"serv.main.php", "onSuccess":function( json, rtext){
               mylog.show( { "message": rtext } );
            } } ).send( "cmd=remove-from-cart&id=" + id );
            e.destroy(); 
         } );
      } );
   }

};

var hoverEvent = { 
   "mouseover": function(){
      this.addClass( "hover" );
   }, 
   "mouseout": function(){
      this.removeClass( "hover" );
   }

};