﻿function jsHelper(lang, langSearchShortStr, langSearchLongStr) {

    /**
    * Private variables
    */
    var self = this;
    var language = lang;
    var langSearchShort = langSearchShortStr;
    var langSearchLong = langSearchLongStr;

    /**
    * Constructor
    */
    var construct = function () {
        self.render();
        self.inputSearch();
        language = lang;
    }

    /**
    * Render 
    */
    this.render = function () {
        $('a').each(function () {
            if ($(this).attr('rel') == 'outerlink') {
                $(this).click(function (e) {
                    window.open($(this).attr('href'));
                    return false;
                })
            }
        })
    }

    /**
    * inputSearch 
    */
    this.inputSearch = function () {
        $('.search input.text')
    .focus(
      function () {
          var wart = $(this);
          if (wart.val() == langSearchShort) {
              wart.val('');
          }
      }
    ).blur(
      function () {
          var wart = $(this);
          if (wart.val() == '') {
              wart.val(langSearchShort);
          }
      }
    )
        $('.search input.text2')
    .focus(
      function () {
          var wart = $(this);
          if (wart.val() == langSearchLong) {
              wart.val('');
          }
      }
    ).blur(
      function () {
          var wart = $(this);
          if (wart.val() == '') {
              wart.val(langSearchLong);
          }
      }
    )
    }

    /**
    * navMainMenu
    */
    self.navMainMenu = function () {
        var menuObject = $('.header .nav li.mainNav');

        menuObject.find('.subNav').show();
        var height = [];
        height[1] = $('.mainNav.nav01 .subNav').height();
        height[2] = $('.mainNav.nav02 .subNav').height();
        height[3] = $('.mainNav.nav03 .subNav').height();
        height[4] = $('.mainNav.nav04 .subNav').height();
        menuObject.find('.subNav').hide();

        menuObject
    .mouseenter(
      function () {
          slideDownCloud($(this), height);
      }
    )
    .parent().mouseleave(
      function () {
          slideUpCloudAll();
      }
    );

        menuObject.find('a.parent')
    .find('li.mainNav').focus(
      function () {
          slideDownCloud($(this).parent(), height);
      }
    )
        menuObject.find('a.last')
    .blur(
      function () {
          slideUpCloud($(this).parents('.mainNav'), height);

      }
    );
    }

    /**
    * slideDownCloud
    */
    var slideDownCloud = function (thisObject, height) {
        var time = 400;
        var menuObject = $('.header .nav li.mainNav:not(.on)');

        var classValue = thisObject.attr('class');
        if (classValue.search("on") == -1) {
            slideUpCloudAll(classValue);
            thisObject.find('a.parent').css('background', 'none');
            thisObject.find('a.parent').css('height', '70px');

            thisObject.addClass('on');
            thisObject.css('height', '79px');

            if ($.browser.msie && $.browser.version == 6) { // css bug ie6
                if (classValue.search("nav01") != -1) thisObject.css('background', 'url("/i/' + language + '/nav/ie6/nav_01_on.gif") no-repeat');
                if (classValue.search("nav02") != -1) thisObject.css('background', 'url("/i/' + language + '/nav/ie6/nav_02_on.gif") no-repeat');
                if (classValue.search("nav03") != -1) thisObject.css('background', 'url("/i/' + language + '/nav/ie6/nav_03_on.gif") no-repeat');
                if (classValue.search("nav04") != -1) thisObject.css('background', 'url("/i/' + language + '/nav/ie6/nav_04_on.gif") no-repeat');
            }

            thisObject.find('.subNav').show();

            var thisHeight = 0;
            if (classValue.search("nav01") != -1) thisHeight = height[1];
            if (classValue.search("nav02") != -1) thisHeight = height[2];
            if (classValue.search("nav03") != -1) thisHeight = height[3];
            if (classValue.search("nav04") != -1) thisHeight = height[4];
            thisHeight = thisHeight + 5;

            thisObject.find('.subNav').css('height', '0');
            thisObject.find('.subNav').stop().animate({ 'height': thisHeight }, time);
            thisObject.find('.subNav ul').css('height', '0');
            thisObject.find('.subNav ul').stop().animate({ 'height': thisHeight }, time);

        }
    }


    /**
    * slideUpCloudAll
    */
    var slideUpCloudAll = function (classValue) {

        if (!classValue) classValue = 'all';

        var time = 120;
        var menuObject = $('.header .nav li.mainNav.on');

        menuObject.find('.subNav ul').stop().animate({ 'height': 0 }, time);
        menuObject.find('.subNav').stop().animate(
      { height: 0 },
      time,
      function () {
          menuObject.css('height', '79px');
          menuObject.find('a.parent').css('height', '79px');
          menuObject.find('.subNav').hide();

          if (classValue.search("nav01") == -1) {
              menuObject.parent().find('.nav01.on a.parent').css('background', 'url("/i/' + language + '/nav/nav_01.png")');
              menuObject.parent().find('.nav01.on a.parent.active').css('background', 'url("/i/' + language + '/nav/nav_01_active.png")');
          }
          if (classValue.search("nav02") == -1) {
              menuObject.parent().find('.nav02.on a.parent').css('background', 'url("/i/' + language + '/nav/nav_02.png")');
              menuObject.parent().find('.nav02.on a.parent.active').css('background', 'url("/i/' + language + '/nav/nav_02_active.png")');
          }
          if (classValue.search("nav03") == -1) {
              menuObject.parent().find('.nav03.on a.parent').css('background', 'url("/i/' + language + '/nav/nav_03.png")');
              menuObject.parent().find('.nav03.on a.parent.active').css('background', 'url("/i/' + language + '/nav/nav_03_active.png")');
          }
          if (classValue.search("nav04") == -1) {
              menuObject.parent().find('.nav04.on a.parent').css('background', 'url("/i/' + language + '/nav/nav_04.png")');
              menuObject.parent().find('.nav04.on a.parent.active').css('background', 'url("/i/' + language + '/nav/nav_04_active.png")');
          }

          if ($.browser.msie && $.browser.version == 6) { // css bug ie6
              menuObject.css('background', 'none');
          }
          menuObject.removeClass('on');
      }
    );

    }


    /**
    * cloudProducts
    */
    self.cloudProducts = function () {
        $('.familyHero ul li a')
    .bind('mouseenter focus', function () {
        if ($.browser.version == 6)
            $(this).find('span').show();
    }
    )
    .bind('mouseleave blur', function () {
        if ($.browser.version == 6)
            $(this).find('span').hide();
    }
    );
    }

    /**
    * showVideo
    */
    self.showVideo = function () {
        var objectLink = $('.smallVideo .photo a, .smallVideo .link a');
        objectLink.attr('href', 'javascript:void(0)');
        objectLink.click(
      function () {
          $(this).parent().parent().hide();
          $(this).parent().parent().parent().find('.bigVideo').slideDown();
      }
    )
    }

    /**
    * readMoreReviews
    */
    self.readMoreReviews = function () {
        var objectLink = $('.consumerReview a.readMoreReviews');
        objectLink.click(
      function () {
          var rel = parseInt($(this).attr('rel'));
          $('.moreBoxes' + rel).slideDown();
          $(this).attr('rel', rel + 1);
      }
    )
    }

    /**
    * window
    */
    self.window = function () {
        $('.window input.email')
    .focus(
      function () {
          var wart = $(this);
          if (wart.val() == 'Your e-mail') {
              wart.val('');
          }
      }
    ).blur(
      function () {
          var wart = $(this);
          if (wart.val() == '') {
              wart.val('Your e-mail');
          }
      }
    )

        $('.window input.pass')
    .focus(
      function () {
          var wart = $(this);
          if (wart.val() == 'Your password') {
              wart.val('');
          }
      }
    ).blur(
      function () {
          var wart = $(this);
          if (wart.val() == '') {
              wart.val('Your password');
          }
      }
    )

        $('.window label').bind('click focus',
      function () {
          var dlObject = $(this).parent().parent();
          var labelClass = $(this).attr('class');
          dlObject.find('input.' + labelClass).attr('checked', 'checked');
      }
    )

        $('.window .step2').hide();
        $('.window .step1 .reloadPage a,.window .step1 .blueButton').click(
      function () {
          $('.window .step1').hide();
          $('.window .step2').show();
      }
    )
        $('.window .step2 .reloadPage a').click(
      function () {
          $('.window .step2').hide();
          $('.window .step1').show();
      }
    )
    }

    /**
    * validate 
    */
    self.validate = function () {
        $(".ask").validate({
            rules: {
                "userCategory": {
                    required: true
                },
                "userQuestion": {
                    required: true,
                    maxlength: 250
                },
                "userName": {
                    required: true,
                    minlength: 2,
                    maxlength: 50
                },
                "userEmail": {
                    required: true,
                    email: true,
                    maxlength: 50
                },
                "userConfirmEmail": {
                    required: true,
                    email: true,
                    equalTo: ".email"
                }
            },
            messages: {
                "userCategory": {
                    required: "Please fill in all fields"
                },
                "userQuestion": {
                    required: "Please fill in all fields",
                    maxlength: "Please fill in all fields"
                },
                "userName": {
                    required: "Please fill in all fields",
                    minlength: "Please fill in all fields",
                    maxlength: "Please fill in all fields"
                },
                "userEmail": {
                    required: "Please fill in all fields",
                    email: "Please fill in all fields",
                    maxlength: "Please fill in all fields"
                },
                "userConfirmEmail": {
                    required: "Please fill in all fields",
                    email: "Please fill in all fields",
                    equalTo: "Please fill in all fields"
                }
            }
        });
    }

    /**
    * productFinder 
    */
    self.productFinder = function () {
        var object = $('.multipleChoiceForm');

        //style with js
        object.css('height', '575px');
        object.find('.form').hide();
        object.find('.step1').show();
        object.find('form').attr('action', '');
        object.find('p.prev').show();
        object.find('p.submit').hide();

        if (object.find('.step1 input:checked').length == 1)
            object.find('.step1 p.next').show();
        else
            object.find('.step1 p.next').hide();

        object.find('p.next a').click(
      function () {
          var stepClass = $(this).parent().parent().attr('class');
          var stepClassArray = stepClass.split(" step");
          var stepNo = parseInt(stepClassArray[1]);
          var nextStepNo = parseInt(stepNo + 1);
          object.find('.step' + stepNo).hide();
          object.find('.step' + nextStepNo).show();
          if (object.find('.step' + nextStepNo + ' input:checked').length == 1)
              object.find('.step' + nextStepNo + ' p.next').show();
          else
              object.find('.step' + nextStepNo + ' p.next').hide();
      }
    )
        object.find('p.again a').click(
      function () {
          var stepClass = $(this).parent().parent().attr('class');
          var stepClassArray = stepClass.split(" step");
          var stepNo = parseInt(stepClassArray[1]);
          object.find('.step' + stepNo).hide();
          object.find('input').removeAttr('checked');
          object.find('.step1').show();
          if (object.find('.step1 input:checked').length == 1)
              object.find('.step1 p.next').show();
          else
              object.find('.step1 p.next').hide();
      }
    )
        object.find('p.prev a').click(
      function () {
          var stepClass = $(this).parent().parent().attr('class');
          var stepClassArray = stepClass.split(" step");
          var stepNo = parseInt(stepClassArray[1]);
          var prevStepNo = parseInt(stepNo - 1);
          object.find('.step' + stepNo).hide();
          object.find('.step' + prevStepNo).show();
          if (object.find('.step' + prevStepNo + ' input:checked').length == 1)
              object.find('.step' + prevStepNo + ' p.next').show();
          else
              object.find('.step' + prevStepNo + ' p.next').hide();
      }
    )
        object.find('label').bind('click focus',
      function () {
          var dlObject = $(this).parent().parent();
          var labelClass = $(this).attr('class');
          dlObject.find('input.' + labelClass).attr('checked', 'checked');
      }
    )
        $('.multipleChoiceForm label, .multipleChoiceForm input').bind('click focus',
      function () {
          var stepClass = $(this).parent().parent().parent().attr('class');
          var stepClassArray = stepClass.split(" step");
          var stepNo = parseInt(stepClassArray[1]);
          if (object.find('.step' + stepNo + ' input:checked').length == 1)
              object.find('.step' + stepNo + ' p.next').show();
      }
    )
    }

    construct();
}

