window.common =
  {
    /* COOKIES: BEGIN */
    cookie_set : function(name, value, expires, path, domain, secure)
      {
        document.cookie = name + "=" + escape(value) +
                          ((expires)?"; expires=" + expires : "") +
                          ((path)?"; path=" + path : "") +
                          ((domain)?"; domain=" + domain : "") +
                          ((secure)?"; secure" : "");
      },

    cookie_get : function(name)
      {
        var cookie = " " + document.cookie;
        var search = " " + name + "=";
        var setStr = null;
        var offset = 0;
        var end = 0;
        if (cookie.length > 0)
          {
            offset = cookie.indexOf(search);
            if (offset != -1)
              {
                offset += search.length;
                end = cookie.indexOf(";", offset)
                if (end == -1)
                  {
                    end = cookie.length;
                  }
                setStr = unescape(cookie.substring(offset, end));
              }
          }

        return(setStr);
      },
    /* COOKIES: END */

    /* BALANCE TOGGLE: BEGIN */
    balance_switch : function()
      {
        var balance_hidden = common.cookie_get("my_balance_hidden");
        if ((balance_hidden == 0) || ((balance_hidden === null) && (document.getElementById("balance_hidden").value == 0)))
          {
            common.cookie_set("my_balance_hidden", 1, false, '/');
            document.getElementById("balance_hidden").value = 1;
            document.getElementById("balance").innerHTML = "&euro;";
            document.getElementById("switcher").style.background = "url('/templates/images/common/top/balance_hidden.gif')";
          }
        else
          {
            common.cookie_set("my_balance_hidden", 0, false, '/');
            document.getElementById("balance_hidden").value = 0;
            document.getElementById("balance").innerHTML = "&euro;" + document.getElementById("balance_amount").value;
            document.getElementById("switcher").style.background = "url('/templates/images/common/top/balance_shown.gif')";
          }
      },
    /* BALANCE TOGGLE: END */

    //TOGGLE: BEGIN
    toggle : function(object_id)
      {
        if (object_id != null)
          {
            if (typeof(object_id) != "object")
              {
                object_entity = document.getElementById(object_id);
              }
            else
              {
                object_entity = object_id;
              }

            object_entity.style.display = (object_entity.style.display == "none")?"":"none";
          }
      },
    //TOGGLE: END

    /* PRELOAD IMAGES: BEGIN */
    preload : function()
      {
        if (document.images)
          {
            var image_srcs = common.preload.arguments;
            image_objects = new Array(image_srcs.length);
            for (var i=0; i<image_srcs.length; i++)
              {
                image_objects[i] = new Image;
                image_objects[i].src = image_srcs[i];
              }
          }
      },
    /* PRELOAD IMAGES: END */

    /* ONLOAD: BEGIN */
    event_add : function(element, event, action)
      {
        if (element.addEventListener) element.addEventListener(event.substr(2).toLowerCase(), action, false);
        else if (element.attachEvent) element.attachEvent(event, action);
        else                          element[event] = action;
      },
    /* ONLOAD: END */

    /* RANDOM: BEGIN */
    random : function (from, to)
      {
        from = parseInt(from);
        to = parseInt(to);
        return Math.floor(Math.random() * (to - from + 1)) + from;
      },
    /* RANDOM: END */

    /* JAF: BEGIN */
    jfLoad : function(jfUrl, jfMethod, jfVars)
      {
        do { //GENERATE UNIQUE 6-DIGIT ID
              var id = String(common.random(100000,999999));
           } while (typeof(document.getElementById('jf' + id)) === 'null');

        var jfFrame = document.createElement("iframe");
        jfFrame.style.display = "none"; jfFrame.width = jfFrame.height = jfFrame.frameborder = 0;
        jfFrame.name = "jf" + id;
        document.body.appendChild(jfFrame);

        common.event_add(jfFrame, "onload", function()
                                       {
                                         if (jfFrame.contentWindow.document.body.innerHTML.length > 0)
                                           {
                                             jfFrame.contentWindow.document.body.innerHTML = null;
                                           }

                                         this.removeNode;
                                       });

        var jfForm = document.createElement("form");
        jfForm.action = jfUrl;
        jfForm.method = jfMethod ? jfMethod : "GET";

                      if (typeof(jfFrame) == "object") jfForm.target = jfFrame.contentWindow.name = jfFrame.name;
                      else if (typeof(jfFrame) == "string") jfForm.target = jfFrame;
                      else jfForm.target = "_top";

        for (var parameter in jfVars)
          {
            input = document.createElement("input");
            input.type = "hidden";
            input.name = parameter;
            input.value = jfVars[parameter];
            jfForm.appendChild(input);
          }
        document.body.appendChild(jfForm);
        jfForm.submit();

        jfForm.removeNode;

        return true;
      },
    /* JAF: END */

    /* PROMPT: BEGIN */
    prompt : function(id, suggestionText)
      {
        var field = document.getElementById(id);

        var classInactive = id + "_inactive";
        var classActive = id + "_active";
        var classText = id + "_text";
        var classSuggestion = id + "_suggestion";

        if (field)
          {
            field.c = field.className;
            field.className = field.c + " " + classInactive;

            field.onfocus = function()
              {
                this.className = this.c + " "  + classActive;
              };

            field.onblur = function()
              {
                this.className = (this.value != "") ? this.c + " " +  classText : this.c + " " +  classInactive;
                this.value = (this.value != "") ?  this.value : "";
                common.clearList();
              };

            var selectedIndex = 0;

            field.setAttribute("autocomplete", "off");
            var div = document.createElement("div");
            var list = document.createElement("ul");
            list.style.display = "none";
            div.className = classSuggestion;
            list.style.width = field.offsetWidth + "px";
            div.appendChild(list);
            field.parentNode.appendChild(div);

            field.onkeypress = function(event)
              {
                field.onchange();

                var key = common.getKeyCode(event);
                if (key == 13) //enter
                  {
                    common.selectList();
                    selectedIndex = 0;
                    return false;
                  };
              };

            field.onkeyup = function(event)
              {
                field.onchange();

                var key = common.getKeyCode(event);
                switch(key)
                  {
                    case 13: //enter
                      return false;
                    break;

                    case 27: //esc
                      field.value = "";
                      selectedIndex = 0;
                      common.clearList();
                    break;

                    case 38: //up
                    break;

                    case 40: //down
                    break;

                    default:
                      common.startList();
                    break;
                  };
              };

            field.onkeydown = function(event)
              {
                field.onchange();

                var key = common.getKeyCode(event);
                switch(key)
                  {
                    case 38: //up
                      common.navList("up");
                    break;

                    case 40: //down
                      common.navList("down");
                    break;
                  };
              };

            this.startList = function()
              {
                var arr = common.getListItems(field.value);
                if (field.value.length > 0)
                  {
                    common.createList(arr);
                  }
                else
                  {
                    common.clearList();
                  };
              };

            this.getListItems = function(value)
              {
                var arr = new Array();
                var src = suggestionText;
                var src = src.replace(/; /g, ";");
                var arrSrc = src.split(";");
                for (i=0; i < arrSrc.length; i++)
                  {
                    if (arrSrc[i].substring(0,value.length).toLowerCase() == value.toLowerCase())
                      {
                        arr.push(arrSrc[i]);
                      };
                  };
                return arr;
              };

            this.createList = function(arr)
              {
                common.resetList();
                if (arr.length > 0)
                  {
                    for (i=0; i<arr.length; i++)
                      {
                        li = document.createElement("li");
                        a = document.createElement("a");
                        a.href = "javascript:void(0);";
                        a.i = i+1;
                        a.innerHTML = arr[i];
                        li.i = i+1;
                        li.onmouseover = function()
                          {
                            common.navListItem(this.i);
                          };

                        a.onmousedown = function()
                          {
                            selectedIndex = this.i;
                            common.selectList(this.i);
                            return false;
                          };

                        li.onmousedown = function()
                          {
                            selectedIndex = this.i;
                            common.selectList(this.i);
                            return false;
                          };

                        li.appendChild(a);
                        list.setAttribute("tabindex", "-1");
                        list.appendChild(li);
                      };

                    list.style.display = "block";
                  }
                else
                  {
                    common.clearList();
                  };
              };

            this.resetList = function()
              {
                var li = list.getElementsByTagName("li");
                var len = li.length;
                for (var i=0;i<len;i++)
                  {
                    list.removeChild(li[0]);
                  };
              };

            this.navList = function(dir)
              {
                selectedIndex += (dir == "down") ? 1 : -1;
                li = list.getElementsByTagName("li");
                if (selectedIndex < 1) selectedIndex =  li.length;
                if (selectedIndex > li.length) selectedIndex =  1;
                common.navListItem(selectedIndex);
              };

            this.navListItem = function(index)
              {
                selectedIndex = index;
                li = list.getElementsByTagName("li");
                for (var i=0;i<li.length;i++)
                  {
                    li[i].className = (i==(selectedIndex-1)) ? "selected" : "";
                  };
              };

            this.selectList = function()
              {
                if (selectedIndex > 0)
                  {
                    li = list.getElementsByTagName("li");
                    a = li[selectedIndex-1].getElementsByTagName("a")[0];
                    field.value = a.innerHTML;
                    field.onchange();
                  }

                common.clearList();
              };
          };

        this.clearList = function()
          {
            if (list)
              {
                list.style.display = "none";
                selectedIndex = 0;
              };
          };

        this.getKeyCode = function(e)
          {
            var code;
            if (!e) var e = window.event;
            if (e.keyCode) code = e.keyCode;
            return code;
          };
      }
    /* PROMPT: END */
  }
