//Theme Variables - edit these to match your theme
var imagesPath = "/skin/frontend/dimme/default/images/forms/";
var selectRightWidthSimple = 4;
var selectPadding = 15;
var selectBorder = 2;
var selectLeftBtm = 3;
var selectRightWidthScroll = 10;
var selectMaxHeight = 10;
var textareaTopPadding = 10;
var textareaSidePadding = 10;

//Global Variables
var NF = new Array();
var NFCheckout = new Array();
var isIE = false;
var resizeTest = 1;

//Initialization function
function NFInit() {
        try {
                document.execCommand('BackgroundImageCache', false, true);
        } catch(e) {}
        if(!document.getElementById) {return false;}
        //alert("click me first");
        NFDo('start');
}
function NFInitCheckout(formid) {
        try {
                document.execCommand('BackgroundImageCache', false, true);
        } catch(e) {}
        if(!document.getElementById) {return false;}
        //alert("click me first");
        NFDoCheckout('start', formid);
}
//'+'product_addtocart_form'+'

function NFDoCheckout(what, formid) {
        var niceformsCheckout = document.getElementsByTagName('form');

  //var identifier = new RegExp(/(review-form)|(co-shipping-form)|(checkout)|(form)|(co-payment-form)|(co-shipping-method-form)|(productquestionForm)|(cart)|(form-validate)|(discount)|(shipping)|(search_mini_form)|(newsletter-validate-detail)|(btnCancel_form)|(login-form)|(contactForm)|(language)|(currency)|(pager)|(sort)|(button)|(register_form)/);
  var identifierCheckout = new RegExp('(^| )'+formid+'( |$)');
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
                var ieversion=new Number(RegExp.$1);
                if(ieversion < 7) {return false;} //exit script if IE6
                isIE = true;
        }
        for(var z = 0; z < niceformsCheckout.length; z++) {if(identifierCheckout.test(niceformsCheckout[z].id) || identifierCheckout.test(niceformsCheckout[z].className)) {
                if(what == "start") { //Load Niceforms
                        NFCheckout[z] = new niceform(niceformsCheckout[z]);
                        niceformsCheckout[z].start();
                }
                else { //Unload Niceforms
                        niceformsCheckout[z].unload();
                        NFCheckout[z] = "";
                }
        }}
}



function NFDo(what) {
        var niceforms = document.getElementsByTagName('form');

  var identifier = new RegExp(/(review-form)|(checkout)|(print-select-form)|(form)|(co-payment-form-buttons)|(co-shipping-method-form)|(form-buttons)|(productquestionForm)|(cart)|(form-validate)|(discount)|(shipping)|(search_mini_form)|(newsletter-validate-detail)|(btnCancel_form)|(login-form)|(contactForm)|(language)|(currency)|(pager)|(sort)|(button)|(register_form)/);
  //var identifier = new RegExp('(^| )'+'product_addtocart_form'+'( |$)');
        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
                var ieversion=new Number(RegExp.$1);
                if(ieversion < 7) {return false;} //exit script if IE6
                isIE = true;
        }


        for(var q = 0; q < niceforms.length; q++) {
      if(identifier.test(niceforms[q].id) || identifier.test(niceforms[q].className)) {

      //alert(what);
      //return;

                  if(what == "start") { //Load Niceforms
                         NF[q] = new niceform(niceforms[q]);
                         niceforms[q].start();
                         //NF[q].start();
                  } else { //Unload Niceforms
                        //alert(q);
                        //return;
         //try {
            niceforms[q].unload();

            NF[q] = "";
         //}
         //catch(err) {

         //   alert(err);
         //}
                 }
          }
   }
}

function NFFix() {
        NFDo('stop');
        NFDo('start');
}
function niceform(nf) {
        nf._inputText = new Array(); nf._inputRadio = new Array(); nf._inputCheck = new Array(); nf._inputSubmit = new Array(); nf._inputFile = new Array(); nf._textarea = new Array(); nf._select = new Array(); nf._multiselect = new Array();
        nf.add_inputText = function(obj) {this._inputText[this._inputText.length] = obj; inputText(obj);};
        nf.add_inputRadio = function(obj) {this._inputRadio[this._inputRadio.length] = obj; inputRadio(obj);};
        nf.add_inputCheck = function(obj) {this._inputCheck[this._inputCheck.length] = obj; inputCheck(obj);};
        nf.add_inputSubmit = function(obj) {this._inputSubmit[this._inputSubmit.length] = obj; inputSubmit(obj);};
        nf.add_inputFile = function(obj) {this._inputFile[this._inputFile.length] = obj; inputFile(obj);};
        nf.add_textarea = function(obj) {this._textarea[this._textarea.length] = obj; textarea(obj);};
        nf.add_select = function(obj) {this._select[this._select.length] = obj; selects(obj);};
        nf.add_multiselect = function(obj) {this._multiselect[this._multiselect.length] = obj; multiSelects(obj);};
        nf.start = function() {
                //Separate and assign elements
                var allInputs = this.getElementsByTagName('input');
                for(var w = 0; w < allInputs.length; w++) {
                        switch(allInputs[w].type) {
                                case "text": case "password": {this.add_inputText(allInputs[w]); break;};
                                case "radio": {this.add_inputRadio(allInputs[w]); break;};
                                case "checkbox": {this.add_inputCheck(allInputs[w]); break;};
                                case "submit": case "reset": case "button": {this.add_inputSubmit(allInputs[w]); break;};
                                case "file": {this.add_inputFile(allInputs[w]); break;};
                        }
                }
                var allButtons = this.getElementsByTagName('button');
                for(var w = 0; w < allButtons.length; w++) {
                        this.add_inputSubmit(allButtons[w]);
                }
                var allTextareas = this.getElementsByTagName('textarea');
                for(var w = 0; w < allTextareas.length; w++) {
                        this.add_textarea(allTextareas[w]);
                }
                var allSelects = this.getElementsByTagName('select');
                for(var w = 0; w < allSelects.length; w++) {
                        if(allSelects[w].size == "1" || allSelects[w].size == "") {this.add_select(allSelects[w]);}
                        else {this.add_multiselect(allSelects[w]);}
                }
                //Start
                for(w = 0; w < this._inputText.length; w++) {this._inputText[w].init();}
                for(w = 0; w < this._inputRadio.length; w++) {this._inputRadio[w].init();}
                for(w = 0; w < this._inputCheck.length; w++) {this._inputCheck[w].init();}
                for(w = 0; w < this._inputSubmit.length; w++) {this._inputSubmit[w].init();}
                for(w = 0; w < this._inputFile.length; w++) {this._inputFile[w].init();}
                for(w = 0; w < this._textarea.length; w++) {this._textarea[w].init();}
                for(w = 0; w < this._select.length; w++) {this._select[w].init(w);}
                for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].init(w);}
        };
        nf.unload = function() {
                //Stop
                for(w = 0; w < this._inputText.length; w++) {this._inputText[w].unload();}
                for(w = 0; w < this._inputRadio.length; w++) {this._inputRadio[w].unload();}
                for(w = 0; w < this._inputCheck.length; w++) {this._inputCheck[w].unload();}
                for(w = 0; w < this._inputSubmit.length; w++) {this._inputSubmit[w].unload();}
                for(w = 0; w < this._inputFile.length; w++) {this._inputFile[w].unload();}
                for(w = 0; w < this._textarea.length; w++) {this._textarea[w].unload();}
                for(w = 0; w < this._select.length; w++) {this._select[w].unload();}
                for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].unload();}
        };
}
function inputText(el) { //extent Text inputs
        el.oldClassName = el.className;
        el.left = document.createElement('img');
        el.left.src = imagesPath + "0.png";
        el.left.className = "FORMTextLeft";
        el.right = document.createElement('img');
        el.right.src = imagesPath + "0.png";
        el.right.className = "FORMTextRight";
        el.dummy = document.createElement('div');
        el.dummy.className = "FORMTextCenter";
        el.onfocus = function() {
                this.dummy.className = "FORMTextCenter FORMh";
                this.left.className = "FORMTextLeft FORMh";
                this.right.className = "FORMTextRight FORMh";
        };
        el.onblur = function() {
                this.dummy.className = "FORMTextCenter";
                this.left.className = "FORMTextLeft";
                this.right.className = "FORMTextRight";
        };
        el.init = function() {
                this.parentNode.insertBefore(this.left, this);
                this.parentNode.insertBefore(this.right, this.nextSibling);
                this.dummy.appendChild(this);
                this.right.parentNode.insertBefore(this.dummy, this.right);
                this.className = this.className + " FORMText";
        };
        el.unload = function() {
           //alert(this.parentNode.id);
           //alert(this.id + ' parent: ' + this.parentNode.id + ' classname: ' + this.parentNode.className);
           //return;
                this.parentNode.appendChild(this);
                this.parentNode.removeChild(this.left);
                this.parentNode.removeChild(this.right);
                this.parentNode.removeChild(this.dummy);
                this.className = this.oldClassName;
        };
}
function inputRadio(el) { //extent Radio buttons
        el.oldClassName = el.className;
        el.dummy = document.createElement('div');
        if(el.checked) {el.dummy.className = "FORMRadio FORMh";}
        else {el.dummy.className = "FORMRadio";}
        el.dummy.ref = el;
        if(isIE == false) {el.dummy.style.left = findPosX(el) + 'px'; el.dummy.style.top = findPosY(el) + 'px';}
        else {el.dummy.style.left = findPosX(el) + 4 + 'px'; el.dummy.style.top = findPosY(el) + 4 + 'px';}
        el.dummy.onclick = function() {
        //bundle.changeSelection(el.dummy.ref);
        //opConfig.reloadPrice();


                if(!this.ref.checked) {
                        var siblings = getInputsByName(this.ref.name);
                        for(var q = 0; q < siblings.length; q++) {
                                siblings[q].checked = false;
                                siblings[q].dummy.className = "FORMRadio";
                        }
                        this.ref.checked = true;
                        this.className = "FORMRadio FORMh";

    }
    if (el.getAttributeNode("rel")) {
    var getOnClick = el.getAttributeNode("rel").nodeValue;

    if (getOnClick) {

                  if (getOnClick == 'bundle.changeSelection(this)') {
      bundle.changeSelection(el);
      }

      if (getOnClick == 'opConfig.reloadPrice()') {
      opConfig.reloadPrice();
      }
      if (getOnClick == "payment.switchMethod('paypal_standard')") {
      payment.switchMethod('paypal_standard');
      }
      if (getOnClick == "payment.switchMethod('postfinance')") {
      payment.switchMethod('postfinance');
      }
      if (getOnClick == "payment.switchMethod('checkmo')") {
      payment.switchMethod('checkmo');
      }
    }
    }
        };
        el.onclick = function() {


                if(this.checked) {
                        var siblings = getInputsByName(this.name);
                        for(var q = 0; q < siblings.length; q++) {
                                siblings[q].dummy.className = "FORMRadio";
                        }
                        this.dummy.className = "FORMRadio FORMh";
                }
                if (el.getAttributeNode("rel")) {
                var getOnClick = el.getAttributeNode("rel").nodeValue;
    if (getOnClick) {
                  if (getOnClick == 'bundle.changeSelection(this)') {
      bundle.changeSelection(el);
      }

      if (getOnClick == 'opConfig.reloadPrice()') {
      opConfig.reloadPrice();
      }
      if (getOnClick == "payment.switchMethod('paypal_standard')") {
      payment.switchMethod('paypal_standard');
      }
      if (getOnClick == "payment.switchMethod('postfinance')") {
      payment.switchMethod('postfinance');
      }
      if (getOnClick == "payment.switchMethod('checkmo')") {
      payment.switchMethod('checkmo');
      }
    }
    }

        };
        el.onfocus = function() {this.dummy.className += " FORMfocused";};
        el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ FORMfocused/g, "");};
        el.init = function() {
                this.parentNode.insertBefore(this.dummy, this);
                el.className = this.className + " FORMhidden2";
        };
        el.unload = function() {
                this.parentNode.removeChild(this.dummy);
                this.className = this.oldClassName;
        };
}
function inputCheck(el) { //extend Checkboxes
        el.oldClassName = el.className;
        el.dummy = document.createElement('img');
        el.dummy.src = imagesPath + "0.png";
        if(el.checked) {el.dummy.className = "FORMCheck FORMh";}
        else {el.dummy.className = "FORMCheck";}
        el.dummy.ref = el;
        if(isIE == false) {el.dummy.style.left = findPosX(el) + 'px'; el.dummy.style.top = findPosY(el) + 'px';}
        else {el.dummy.style.left = findPosX(el) + 4 + 'px'; el.dummy.style.top = findPosY(el) + 4 + 'px';}
        el.dummy.onclick = function() {
                if(!this.ref.checked) {
                        this.ref.checked = true;
                        this.className = "FORMCheck FORMh";
                }
                else {
                        this.ref.checked = false;
                        this.className = "FORMCheck";
                }
    var getOnClick = el.getAttributeNode("rel").nodeValue;

    if (getOnClick) {

      if (getOnClick == 'setPasswordForm(this.checked)') {
      setPasswordForm(el.checked);
      }
                  if (getOnClick == 'bundle.changeSelection(this)') {
      bundle.changeSelection(el);
      }
      if (getOnClick == 'opConfig.reloadPrice()') {
      opConfig.reloadPrice();
      }

                }
        };

        el.onclick = function() {
                if(this.checked) {this.dummy.className = "FORMCheck FORMh";
    }
                else {this.dummy.className = "FORMCheck";}


                var getOnClick = el.getAttributeNode("rel").nodeValue;
                if (getOnClick) {
      if (getOnClick == 'setPasswordForm(this.checked)') {
      setPasswordForm(el.checked);
      }
                  if (getOnClick == 'bundle.changeSelection(this)') {
      bundle.changeSelection(el);
      }
      if (getOnClick == 'opConfig.reloadPrice()') {
      opConfig.reloadPrice();
      }
    }


        };
        el.onfocus = function() {this.dummy.className += " FORMfocused";};
        el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ FORMfocused/g, "");};
        el.init = function() {
                this.parentNode.insertBefore(this.dummy, this);
                el.className = this.className + " FORMhidden2";
        } ;
        el.unload = function() {
                this.parentNode.removeChild(this.dummy);
                this.className = this.oldClassName;
        };
}

function inputSubmit(el) { //extend Buttons
        el.oldClassName = el.className;
        el.left = document.createElement('img');
        el.left.className = "FORMButtonLeft";
        el.left.src = imagesPath + "0.png";
        el.right = document.createElement('img');
        el.right.src = imagesPath + "0.png";
        el.right.className = "FORMButtonRight";
        el.onmouseover = function() {
                this.className = "FORMButton FORMh";
                this.left.className = "FORMButtonLeft FORMh";
                this.right.className = "FORMButtonRight FORMh";
        };
        el.onmouseout = function() {
                this.className = "FORMButton";
                this.left.className = "FORMButtonLeft";
                this.right.className = "FORMButtonRight";
        };
        el.init = function() {
                this.parentNode.insertBefore(this.left, this);
                this.parentNode.insertBefore(this.right, this.nextSibling);
                this.className = "FORMButton";
        };
        el.unload = function() {
                this.parentNode.removeChild(this.left);
                this.parentNode.removeChild(this.right);
                this.className = this.oldClassName;
        };
}
function inputFile(el) { //extend File inputs
        el.oldClassName = el.className;
        el.dummy = document.createElement('div');
        el.dummy.className = "FORMFile";
        el.file = document.createElement('div');
        el.file.className = "FORMFileNew";
        el.center = document.createElement('div');
        el.center.className = "FORMTextCenter";
        el.clone = document.createElement('input');
        el.clone.type = "text";
        el.clone.className = "FORMText";
        el.clone.ref = el;
        el.left = document.createElement('img');
        el.left.src = imagesPath + "0.png";
        el.left.className = "FORMTextLeft";
        el.button = document.createElement('img');
        el.button.src = imagesPath + "0.png";
        el.button.className = "FORMFileButton";
        el.button.ref = el;
        el.button.onclick = function() {this.ref.click();};
        el.init = function() {
                var top = this.parentNode;
                if(this.previousSibling) {var where = this.previousSibling;}
                else {var where = top.childNodes[0];}
                top.insertBefore(this.dummy, where);
                this.dummy.appendChild(this);
                this.center.appendChild(this.clone);
                this.file.appendChild(this.center);
                this.file.insertBefore(this.left, this.center);
                this.file.appendChild(this.button);
                this.dummy.appendChild(this.file);
                this.className = this.className + " FORMhidden";
                this.relatedElement = this.clone;
        };
        el.unload = function() {
                this.parentNode.parentNode.appendChild(this);
                this.parentNode.removeChild(this.dummy);
                this.className = this.oldClassName;
        };
        el.onchange = el.onmouseout = function() {this.relatedElement.value = this.value;};
        el.onfocus = function() {
                this.left.className = "FORMTextLeft FORMh";
                this.center.className = "FORMTextCenter FORMh";
                this.button.className = "FORMFileButton FORMh";
        };
        el.onblur = function() {
                this.left.className = "FORMTextLeft";
                this.center.className = "FORMTextCenter";
                this.button.className = "FORMFileButton";
        };
        el.onselect = function() {
                this.relatedElement.select();
                this.value = '';
        };
}
function textarea(el) { //extend Textareas
        el.oldClassName = el.className;
        el.height = el.offsetHeight - textareaTopPadding;
        el.width = el.offsetWidth - textareaSidePadding;
        el.topLeft = document.createElement('img');
        el.topLeft.src = imagesPath + "0.png";
        el.topLeft.className = "FORMTextareaTopLeft";
        el.topRight = document.createElement('div');
        el.topRight.className = "FORMTextareaTop";
        el.bottomLeft = document.createElement('img');
        el.bottomLeft.src = imagesPath + "0.png";
        el.bottomLeft.className = "FORMTextareaBottomLeft";
        el.bottomRight = document.createElement('div');
        el.bottomRight.className = "FORMTextareaBottom";
        el.left = document.createElement('div');
        el.left.className = "FORMTextareaLeft";
        el.right = document.createElement('div');
        el.right.className = "FORMTextareaRight";
        el.init = function() {
                var top = this.parentNode;
                if(this.previousSibling) {var where = this.previousSibling;}
                else {var where = top.childNodes[0];}
                top.insertBefore(el.topRight, where);
                top.insertBefore(el.right, where);
                top.insertBefore(el.bottomRight, where);
                this.topRight.appendChild(this.topLeft);
                this.right.appendChild(this.left);
                this.right.appendChild(this);
                this.bottomRight.appendChild(this.bottomLeft);
                el.style.width = el.topRight.style.width = el.bottomRight.style.width = el.width + 'px';
                el.style.height = el.left.style.height = el.right.style.height = el.height + 'px';
                this.className = "FORMTextarea";
        };
        el.unload = function() {
                this.parentNode.parentNode.appendChild(this);
                this.parentNode.removeChild(this.topRight);
                this.parentNode.removeChild(this.bottomRight);
                this.parentNode.removeChild(this.right);
                this.className = this.oldClassName;
                this.style.width = this.style.height = "";
        };
        el.onfocus = function() {
                this.topLeft.className = "FORMTextareaTopLeft FORMh";
                this.topRight.className = "FORMTextareaTop FORMhr";
                this.left.className = "FORMTextareaLeftH";
                this.right.className = "FORMTextareaRightH";
                this.bottomLeft.className = "FORMTextareaBottomLeft FORMh";
                this.bottomRight.className = "FORMTextareaBottom FORMhr";
        };
        el.onblur = function() {
                this.topLeft.className = "FORMTextareaTopLeft";
                this.topRight.className = "FORMTextareaTop";
                this.left.className = "FORMTextareaLeft";
                this.right.className = "FORMTextareaRight";
                this.bottomLeft.className = "FORMTextareaBottomLeft";
                this.bottomRight.className = "FORMTextareaBottom";
        };
}
function selects(el) { //extend Selects
        el.oldClassName = el.className;
        el.dummy = document.createElement('div');
        el.dummy.className = "FORMSelect";
       //Steffi  el.dummy.style.width = el.offsetWidth + selectPadding + 'px';
        el.dummy.ref = el;
        el.left = document.createElement('img');
        el.left.src = imagesPath + "0.png";
        el.left.className = "FORMSelectLeft";
        el.right = document.createElement('div');
        el.right.className = "FORMSelectRight";
        el.txt = document.createTextNode(el.options[0].text);
        el.bg = document.createElement('div');
        el.bg.className = "FORMSelectTarget";
        el.bg.style.display = "none";

        el.bgbtm = document.createElement('div');
        el.bgbtm.className = "FORMSelectTargetBtm";

        el.bgbtmL = document.createElement('img');
        el.bgbtmL.src = imagesPath + "0.png";
        el.bgbtmL.className = "FORMSelectTargetBtmL";

        el.bgbtmR = document.createElement('img');
        el.bgbtmR.src = imagesPath + "0.png";
        el.bgbtmR.className = "FORMSelectTargetBtmR";

        el.opt = document.createElement('ul');
        el.opt.className = "FORMSelectOptions";
        //el.dummy.style.left = findPosX(el) + 'px';
        //el.dummy.style.top = findPosY(el) + 'px';
        el.opts = new Array(el.options.length);
        el.init = function(pos) {
                this.dummy.appendChild(this.left);
                this.right.appendChild(this.txt);
                this.dummy.appendChild(this.right);
                this.bg.appendChild(this.opt);
                this.dummy.appendChild(this.bg);
                this.bg.appendChild(this.bgbtm);
                this.bgbtm.appendChild(this.bgbtmL);
                this.bgbtm.appendChild(this.bgbtmR);


                for(var q = 0; q < this.options.length; q++) {
                        this.opts[q] = new option(this.options[q], q, el.oldClassName);
                        this.opt.appendChild(this.options[q].li);
                        this.options[q].lnk.onclick = function() {
                                this._onclick();

                                this.ref.dummy.getElementsByTagName('div')[0].innerHTML = this.ref.options[this.pos].text;
                                this.ref.options[this.pos].selected = "selected";
                                for(var w = 0; w < this.ref.options.length; w++) {this.ref.options[w].lnk.className = "";}
                                this.ref.options[this.pos].lnk.className = "FORMOptionActive";
                          //shipping.setSameAsBilling(false);
        }
                }
                if(this.options.selectedIndex) {
                        this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[this.options.selectedIndex].text;
                        this.options[this.options.selectedIndex].lnk.className = "FORMOptionActive";
                }
                this.dummy.style.zIndex = 990 - pos;
                this.parentNode.insertBefore(this.dummy, this);
                this.className = this.className + " FORMhidden";
        };
        el.unload = function() {
                this.parentNode.removeChild(this.dummy);
                this.className = this.oldClassName;
        };

        el.dummy.onclick = function() {

  //
        var getSelect = document.getElementsByTagName('select');
        var ident_select = new RegExp('(^| )'+'bundle-option-select'+'( |$)');
  if(ident_select.test(el.oldClassName)) {
  bundle.changeSelection(el.dummy.ref);
  }




                var allDivs = document.getElementsByTagName('div'); for(var q = 0; q < allDivs.length; q++) {if((allDivs[q].className == "FORMSelectTarget") && (allDivs[q] != this.ref.bg)) {allDivs[q].style.display = "none";}}
                if(this.ref.bg.style.display == "none") {this.ref.bg.style.display = "block"; }
                else {this.ref.bg.style.display = "none";}

                 //Steffi       this.ref.bg.style.width = this.offsetWidth - selectBorder - selectBorder + 'px';
                        this.ref.bgbtm.style.width = this.offsetWidth - selectBorder + 'px';
      this.ref.bgbtmR.style.width = this.offsetWidth - selectLeftBtm - selectBorder + 'px';
                        this.ref.opt.style.width = this.offsetWidth - selectRightWidthScroll + 'px';

        };


        el.bg.onmouseout = function(e) {
                if (!e) var e = window.event;
                e.cancelBubble = true;
                if (e.stopPropagation) e.stopPropagation();
                var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
                if((reltg.nodeName == 'A') || (reltg.nodeName == 'LI') || (reltg.nodeName == 'UL')) return;
                if((reltg.nodeName == 'DIV') || (reltg.className == 'FORMSelectTarget')) return;
                else{this.style.display = "none";}
        };
        el.dummy.onmouseout = function(e) {
                if (!e) var e = window.event;
                e.cancelBubble = true;

                if (e.stopPropagation) e.stopPropagation();
                var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
                if((reltg.nodeName == 'A') || (reltg.nodeName == 'LI') || (reltg.nodeName == 'UL')) return;
                if((reltg.nodeName == 'DIV') || (reltg.className == 'FORMSelectTarget')) return;
                else{this.ref.bg.style.display = "none";}
        };
        el.onfocus = function() {this.dummy.className += " FORMfocused";};
        el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ FORMfocused/g, "");};
        el.onkeydown = function(e) {
                if (!e) var e = window.event;
                var thecode = e.keyCode;
                var active = this.selectedIndex;
                switch(thecode){
                        case 40: //down
                                if(active < this.options.length - 1) {
                                        for(var w = 0; w < this.options.length; w++) {this.options[w].lnk.className = "";}
                                        var newOne = active + 1;
                                        alert
                                        this.options[newOne].selected = "selected";
                                        this.options[newOne].lnk.className = "FORMOptionActive";
                                        this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[newOne].text;

                                }
                                return false;
                                break;
                        case 38: //up
                                if(active > 0) {
                                        for(var w = 0; w < this.options.length; w++) {this.options[w].lnk.className = "";}
                                        var newOne = active - 1;
                                        this.options[newOne].selected = "selected";
                                        this.options[newOne].lnk.className = "FORMOptionActive";
                                        this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[newOne].text;
                                }
                                return false;
                                break;
                        default:
                                break;
                }
        };
}
function multiSelects(el) { //extend Multiple Selects
        el.oldClassName = el.className;
        el.height = el.offsetHeight;
        el.width = el.offsetWidth;
        el.topLeft = document.createElement('img');
        el.topLeft.src = imagesPath + "0.png";
        el.topLeft.className = "FORMMultiSelectTopLeft";
        el.topRight = document.createElement('div');
        el.topRight.className = "FORMMultiSelectTop";
        el.bottomLeft = document.createElement('img');
        el.bottomLeft.src = imagesPath + "0.png";
        el.bottomLeft.className = "FORMMultiSelectBottomLeft";
        el.bottomRight = document.createElement('div');
        el.bottomRight.className = "FORMMultiSelectBottom";
        el.left = document.createElement('div');
        el.left.className = "FORMMultiSelectLeft";
        el.right = document.createElement('div');
        el.right.className = "FORMMultiSelectRight";
        el.init = function() {
                var top = this.parentNode;
                if(this.previousSibling) {var where = this.previousSibling;}
                else {var where = top.childNodes[0];}
                top.insertBefore(el.topRight, where);
                top.insertBefore(el.right, where);
                top.insertBefore(el.bottomRight, where);
                this.topRight.appendChild(this.topLeft);
                this.right.appendChild(this.left);
                this.right.appendChild(this);
                this.bottomRight.appendChild(this.bottomLeft);
                el.style.width = el.topRight.style.width = el.bottomRight.style.width = el.width + 'px';
                el.style.height = el.left.style.height = el.right.style.height = el.height + 'px';
                el.className = "FORMMultiSelect";
        };
        el.unload = function() {
                this.parentNode.parentNode.appendChild(this);
                this.parentNode.removeChild(this.topRight);
                this.parentNode.removeChild(this.bottomRight);
                this.parentNode.removeChild(this.right);
                this.className = this.oldClassName;
                this.style.width = this.style.height = "";
        };
        el.onfocus = function() {
                this.topLeft.className = "FORMMultiSelectTopLeft h";
                this.topRight.className = "FORMMultiSelectTop hr";
                this.left.className = "FORMMultiSelectLeftH";
                this.right.className = "FORMMultiSelectRightH";
                this.bottomLeft.className = "FORMMultiSelectBottomLeft h";
                this.bottomRight.className = "FORMMultiSelectBottom hr";
        };
        el.onblur = function() {
                this.topLeft.className = "FORMMultiSelectTopLeft";
                this.topRight.className = "FORMMultiSelectTop";
                this.left.className = "FORMMultiSelectLeft";
                this.right.className = "FORMMultiSelectRight";
                this.bottomLeft.className = "FORMMultiSelectBottomLeft";
                this.bottomRight.className = "FORMMultiSelectBottom";
        };
}
function option(el, no, classname) { //extend Options
        el.li = document.createElement('li');
        el.lnk = document.createElement('a');
        el.lnk.href = "javascript:;";
        el.lnk.ref = el.parentNode;
        el.lnk.pos = no;
        el.lnk._onclick = el.onclick || function () {

  if(classname == 'required-entry super-attribute-select' || classname == 'super-attribute-select') {
                                           spConfig.resetChildren(el);
  }
        if(classname == 'pager' || classname == 'sort') {
  setLocation(el.value);
  }
  if(classname == 'currency') {
  changeCurrency(el);
  }
        if(classname == 'select-language') {
  window.location.href=el.value;
  }

  };
        el.txt = document.createTextNode(el.text);
        el.lnk.appendChild(el.txt);
        el.li.appendChild(el.lnk);
}

//Get Position
function findPosY(obj) {
        var posTop = 0;
        do {posTop += obj.offsetTop;} while (obj = obj.offsetParent);
        return posTop;
}
function findPosX(obj) {
        var posLeft = 0;
        do {posLeft += obj.offsetLeft;} while (obj = obj.offsetParent);
        return posLeft;
}
//Get Siblings
function getInputsByName(name) {
        var inputs = document.getElementsByTagName("input");
        var w = 0; var results = new Array();
        for(var q = 0; q < inputs.length; q++) {if(inputs[q].name == name) {results[w] = inputs[q]; ++w;}}
        return results;
}

//Add events
var existingLoadEvent = window.onload || function () {};
var existingResizeEvent = window.onresize || function() {};
window.onload = function() {
    existingLoadEvent();
    NFInit();
};

window.onresize = function() {
        if(resizeTest != document.documentElement.clientHeight) {
                existingResizeEvent();
                NFFix();
        }
        resizeTest = document.documentElement.clientHeight;
};
