Req.localPath = Req.localPath || '/skin/basic/';
Req.charset = 'utf-8'; 
Req(
  'jquery 1.4',
  { src:Req.joinUrl.replace(/\?.+$/, '?') + 'utils_1.1.js;layout_1.1.js;forms_1.1.js;collapse_1.0.js;cbblocktoggle_1.0.js', charset:'iso-8859-1' },
  { src:Req.baseUrl.replace(/jq\/$/, 'js/') + 'autovalidate/1.2/av.js', charset:'iso-8859-1' },
  { src:Req.baseUrl.replace(/jq\/$/, 'js/') + 'datepicker/1.0/dp.js', charset:'iso-8859-1' },
  'eutils',
  'fontsizer',
  'equalizeheights',
  'imgpop',
  'popups',

  function(){
    var $ = jQuery;


    $('a.popup, .popup a').popUps();

    //Eldsneytisverð splitter
    $('span.gasprice')
        .each(function(){
            var price = $.trim( this.innerHTML )
                            .split('')
                            .reverse();
            this.innerHTML = '<span class="h">'      + (price[4]||'') + '</span>'+
                              '<span class="t">'      + price[3] + '</span>'+
                              '<span class="k">'      + price[2] + '</span>'+
                              '<span class="stream">' + price[1] + '</span>'+
                              '<span class="a">'      + price[0] + '</span>';
          });



    window.stepPageWidth  &&  stepPageWidth.init([985]);


    $('.fontsizer').fontsizer();

    if(typeof(collapseSections) != "undefined") {
      collapseSections.config = {
        skilmalar : {
          blockSel    : ".skilmalar",
          headSel     : ".coltrig"
        }
      };
      collapseSections.init();
    }


    if(window.cbBlockToggler) {
      var _togglerSettings = {
        "cardextra" : "aukalyklar"
      }
      cbBlockToggler.triggers = _togglerSettings;
      cbBlockToggler.init();
    }



    /* *** forms *** */

    // popup card image
    $('.knr a')
        .bind('click', function (e) {
            return false;
          })
        .bind('mouseenter mouseleave focusin focusout', function (e) {
            var link = $(this),
                img = link.data('cartimg');
            if (!img)
            {
              img = link.closest('.knr').find('img');
              link.data('cartimg', img);
            }
            img.toggle( /^(mouseenter|focusin)$/.test(e.type) );
          });



    // card types tabswitcher

    var swHandler = {
      _click : function()
      {
        var idx = (DOM.$("debet").checked && 1)  ||  (DOM.$("kredit").checked && 2)  ||  (DOM.$("vidskipta").checked && 3);
        for (var i=0,l=this._togElms.length; i<l; i++)
        {
          this._togElms[i].style.display = (idx == i+1) ? "block" : "none";
        }
      },

      init : function()
      {
        var _sw = DOM.get("#switchmaster")[0];
        if (_sw) {
          this._togElms = DOM.get(".swbox");
          if (this._togElms.length)
          {
            EEvent.add(_sw, "click", this._click, this);
            this._click();
          }
        }
      },

      debetChecked     : function() { return DOM.$("debet").checked; },
      kreditChecked    : function() { return DOM.$("kredit").checked; },
      vidskiptaChecked : function() { return DOM.$("vidskipta").checked; }
    }
    swHandler.init();

    var swHandler2 = {
      _click : function()
      {
        var idx = (DOM.$("debet").checked && 1)  ||  (DOM.$("kredit").checked && 2)  ||  (DOM.$("sedill").checked && 0);
        for (var i=0,l=this._togElms.length; i<l; i++)
        {
          this._togElms[i].style.display = (idx == i+1) ? "block" : "none";
        }
      },

      init : function()
      {
        var _sw = DOM.get("#switchmaster2")[0];
        if (_sw) {
          this._togElms = DOM.get(".swbox2");
          if (this._togElms.length)
          {
            EEvent.add(_sw, "click", this._click, this);
            this._click();
          }
        }
      },
      kreditChecked    : function() { return DOM.$("kredit").checked; }
    }
    swHandler2.init();

    // autovalidator
    if (window.autoValidate) {
      // require some fields

      autoValidate.customReqCheck["tnr1"]     = swHandler.debetChecked;
      autoValidate.customReqCheck["tnr2"]     = swHandler.debetChecked;
      autoValidate.customReqCheck["manudur1"] = swHandler.debetChecked;
      autoValidate.customReqCheck["ar1"]      = swHandler.debetChecked;

      autoValidate.customReqCheck["jnr1"]     = swHandler.kreditChecked;
      autoValidate.customReqCheck["manudur2"] = swHandler.kreditChecked;
      autoValidate.customReqCheck["ar2"]      = swHandler.kreditChecked;

      autoValidate.customReqCheck["vnr1"]     = swHandler.vidskiptaChecked;
      autoValidate.customReqCheck["vnr2"]     = swHandler.vidskiptaChecked;
      autoValidate.customReqCheck["vnr3"]     = swHandler.vidskiptaChecked;
      autoValidate.customReqCheck["vnr4"]     = swHandler.vidskiptaChecked;
      autoValidate.customReqCheck["manudur3"] = swHandler.vidskiptaChecked;
      autoValidate.customReqCheck["ar3"]      = swHandler.vidskiptaChecked;


      autoValidate.types.fi_kt = {
        _normalCheck : autoValidate.types.fi_kt.isValid,
        isValid    : function(_theField){
          return this._normalCheck(_theField) || (/\d{9}[a-z]/i).test(_theField.value);
        }
      };

      if (DOM.$("netfang_aftur"))
      {
        autoValidate.customTypeCheck["netfang"] = function(_theField)
        {
          if (_theField.value != DOM.$("netfang_aftur").value)
          {
            _theField.errorMsgInline = "Netföng þurfa að vera eins";
            _theField.errorMsg = _theField.errorMsgInline;
            return false;
          }
          return true;
        };
      }

      autoValidate.customTypeCheck["netfang_aftur"] = function(_theField)
      {
        if (DOM.$("netfang_aftur") && _theField.value != DOM.$("netfang").value)
        {
          _theField.errorMsgInline = "Netföng þurfa að vera eins";
          _theField.errorMsg = _theField.errorMsgInline;
          return false;
        }
        return true;
      };

      var kredit_tst = function( inp ) {
        var f = inp.form,
            k  = DOM.get( 'input#kredit', f )[0];
        return !!(k && k.checked == true);
      }

      autoValidate.customReqCheck["jnr1"] = kredit_tst;
      autoValidate.customReqCheck["manudur2"] = kredit_tst;
      autoValidate.customReqCheck["ar2"] = kredit_tst;
      autoValidate.customReqCheck["kortagerd2"] = kredit_tst;

      autoValidate.init();
    }



    if (!window.EPLICA_loggedin)
    {
      // transform .productlist .item contents a bit
      var products = $('.productlist .item');
      products
          .each(function(){
              var _itm = this;

              $('img', _itm).wrap('<div class="img" />').wrap('<a href="#" />').parent().append('<span class="enlarge" />');
              $('> h3', _itm).prependTo(_itm);
              $('.price', _itm).prependTo( $('.summary', _itm) );

              var imgsrc = $('img', _itm).attr('src').replace(/\/[^\/]+\/([^\/]+)$/, '/large/$1');
              $('.img a', _itm).attr('href', imgsrc);

            })
          .equalizeHeights()
          .find('> .img')
              .equalizeHeights()
              .find('> a')
                  .imgPopper({
                      curtainColor : '#5c5c5c',
                      curtainOpacity : '0.85',
                      yOffset: 15
                    });
    }




    // extra key tabswitcher
    /*
    var lyklahandler = document.getElementById("aukalykill");
    if(lyklahandler)
    {
      function lyklaTabs()
      {
        if(lyklahandler.checked)
        {
          DOM.get(".aukalyklar")[0].style.display = "block";
        }
        else
        {
          DOM.get(".aukalyklar")[0].style.display = "none";
        }
      }

      lyklaTabs();

      EEvent.add(DOM.get(".aukalykill .fi_chk")[0], "click", lyklaTabs);
    }
    */


    // == replicator for fragments ==
    // scans through all nodes of the new fragment
    // and tries to ensure that attributes aren't going crazy...
    // returns new fragment, or false on error
    // - id's must be unique
    // - for attributes must correspond to id's
    // - name attributes are rewritten according to "rule" (see below)
    function cloneFragment(fragment)
    {
      if (!fragment) { return false; }

      // generate a new fragment
      var _new = fragment.cloneNode(true);

      // or _new.all if you're not using Simon Willison's getElementsBySelector

      // var _elms = _getAllChildren(_new);
      // util_1.1 er ekki með þetta kall að ofan. Breytti því þessu til bráðabirgða.
      var _elms = _new.getElementsByTagName('*');
      var _ctab = {};

      // give new id's to elements
      if (_new.id)
      {
        _ctab[_new.id] = DOM.aquireId();
        _new.id = _ctab[_new.id];
      }
      var i = 0;
      while (_elm = _elms[i++])
      {
        if (_elm.id)
        {
          _ctab[_elm.id] = DOM.aquireId();
          _elm.id = _ctab[_elm.id];
        }
      }
      // correct other attributes
      var i = 0;
      while (_elm = _elms[i++])
      {
        if (_elm.getAttribute("for"))
        {
          _newid = _ctab[_elm.getAttribute("for")];
          _elm.setAttribute("for", _newid);
        }
        if (_elm.name)
        {
          _elm.name = _elm.name.replace(/\[(\d)+\]/g, function (str, p1, offset, s) { return "["+ (parseInt(p1)+1) +"]"; } );
        }

        // attempt to reset input values to default
        // this doesn't quite work for passwords or hiddens, and shouldn't
        switch (_elm.type)
        {
          case 'radio':
          case 'checkbox':
            _elm.checked = _elm.defaultChecked;
            break;
          case 'text':
          case 'password':
          case 'file': // untested ??
          case 'textarea':
          case 'hidden':
            _elm.value = _elm.defaultValue;
            break;
          case 'select-one':
          case 'select-multiple':
            for (var n = 0; n < _elm.options.length; n++)
            {
              _elm.options[n].selected = _elm.options[n].defaultSelected;
            }
            break;
        }
      }
      return _new;
    }

    //
    function replicate(e) {
      var _new = cloneFragment(this);
      EEvent.remove(this, e.type, replicate); // ie may need "window.event.type" here?
      if (_new) {
        // append the new fragment after the source fragment
        DOM.insertAfter(_new, this);
        EEvent.add(_new, e.type, replicate);
//        zebraLists.init();
      }
    }


    function copylast1(e) {
      var _tid = this.href.match(/#([a-z][a-z0-9_.:-]*)$/i);
      if (_tid) {
        var _elms = DOM.get("#"+_tid[1]+" .cloneable");;
        if (_elms.length > 0) {
          var _new = cloneFragment(_elms[_elms.length-1]);
          if (_new) {
            // append the new fragment after the source fragment
            DOM.insertAfter(_new, _elms[_elms.length-1]);
          }
        }
      }
      return false;
    }


    // cloner init
    var _elms = DOM.get(".clonecontainer1");
    for (var i = 0; i < _elms.length; i++)
    {
      var _n = document.createElement("a");
      _n.href = "#" + DOM.aquireId(_elms[i]);
      _n.className = "addrow";
      _n.innerHTML = "Bæta við lykli";
      _n.title = "Bæta við nýrri röð";
      DOM.insertAfter(_n, _elms[i]);
      EEvent.add(_n, 'click', copylast1);
    }


  }
);


