

// ---------------------------------------------------------------------------


/* site.js */

var elem_focused;

function element(id){
  if (id != '')
    return document.getElementById(id);
}


function element_hide(id){
  element(id).style.display = "none";
}


function element_show(id){
  element(id).style.display = "block";
}

function element_swap(id, html){
  element_show(id);
  element(id).innerHTML = html;
}


function strhas(str, has){
  return (str.indexOf(has) > -1);
}


function arr(str){
  var arr = str.split(' ');
  return arr;
}


function narr(n){
  return explode('.', n);
}


function css(elem_name, class_name) {
  if (strhas(elem_name, ' ')){
    a = arr(elem_name);
    for (i = 0; i < a.length; i++)
      if (element(a[i]))
        element(a[i]).className = class_name;
  } else
      element(elem_name).className = class_name;
}


function json_apply(json){
  //alert(json);
  val = jsonParse(json);
  //alert(val[0][1]);
  for (var i = 0; i < val.length; i++){
    element_swap(val[i][0], val[i][1]);
    if ((val[i][1].indexOf('<eval>') > -1) && (val[i][1].indexOf('</eval>')))
      eval(val[i][1].substring(val[i][1].indexOf('<eval>') + 6, val[i][1].indexOf('</eval>')));
    //element_slowly_swap(val[i][0], val[i][1], 70 * i);
    //element_transition(val[i][0], val[i][1], 50 , 50 * i);
  }
}


function form_get(id){
  var form = element(id);
  var str = "";
  if (!form)
    return '';
  for (var x = 0; x < form.length; x++ )
   // if (form.elements[x].value){
      str += "&" + form.elements[x].name + "=" + encodeURIComponent(form.elements[x].value);
  //alert(form.elements[x].value);
  //}
  return str;
}


function form_submit(id, url){
  url = url + "?" + form_get(id);
  window.location.href = url;
}


function form_submit2(id, url){
  url = url + form_get(id);
  window.location.href = url;
}

function explode( delimiter, string, limit ) {
    var emptyArray = { 0: '' };
    // third argument is not required
    if ( arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined' )
        return null;
    if ( delimiter === '' || delimiter === false || delimiter === null )
        return false;
    if ( typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object' )
        return emptyArray;
    if ( delimiter === true )
        delimiter = '1';

    if (!limit)
        return string.toString().split(delimiter.toString());
    else {
        var splitted = string.toString().split(delimiter.toString());
        var partA = splitted.splice(0, limit - 1);
        var partB = splitted.join(delimiter.toString());
        partA.push(partB);
        return partA;
    }
 // Thank you phpjs.org
}


function is_ie(){
  return document.all && !window.opera;
}
// ---------------------------------------------------------------------------


function ajax_obj(id, url) {
   var that = this;
   var updating = false;
   this.callback = function() {}

   this.update = function(passData) {
      if (updating==true) { return false; }
      updating=true;
      var AJAX = null;
      if (window.XMLHttpRequest) {
         AJAX=new XMLHttpRequest();
      } else {
         AJAX=new ActiveXObject("Microsoft.XMLHTTP");
      }
      if (AJAX==null) {
         alert("Your browser doesn't support AJAX.");
         return false
      } else {
         AJAX.onreadystatechange = function() {
            if (AJAX.readyState==4 || AJAX.readyState=="complete") {
               if (div)
                 div.innerHTML=AJAX.responseText;
               else
                 json_apply(AJAX.responseText);
               delete AJAX;
               updating=false;
               that.callback();
            }
         }
         var timestamp = new Date();
         if (urlCall)
           var uri=urlCall+'?'+passData+'&timestamp='+(timestamp*1);
         else
           var uri = passData+'&timestamp='+(timestamp*1);

         AJAX.open("GET", uri, true);
         AJAX.send(null);
         return true;
      }
   }

   // const:
   var div = document.getElementById(id);
   var urlCall = url;
   // Thank you Patrick Hunlock. http://www.hunlock.com/blogs/Concurrent_Ajax
}

// main exe
function ajax_exe(id, url) {
  var ajx = new ajax_obj(id, url);
  ajx.update();
}

/* --------------------------------------------------------------------------- */

var hideAfter = 0;
var cancelXML = 0;
var elem_ajax;
var req;

function elem_ajax_load(elem, url, loader) {
  elem_ajax = element(elem);
  if (loader)
    elem_ajax.innerHTML = element('loader-div').innerHTML;
  /* native XMLHttpRequest object */
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
    req.onreadystatechange = ajax_req_onChange;
    req.open("GET", url, true);
    req.send(null);

  /* IE/Windows ActiveX version */
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      req.onreadystatechange = ajax_req_onChange;
      req.open("GET", url, true);
      req.send();
    }
  }
}


function ajax_req_onChange() {
  if (req.readyState == 4) {
    if (req.status == 200) {
      if (cancelXML == 0){
        string = req.responseText;
        elem_ajax.innerHTML = string;
        //alert(string);
        //if ((string.indexOf('<eval>') > -1) && (string.indexOf('</eval>')))
        //  eval(string.substring(string.indexOf('<eval>') + 6, string.indexOf('</eval>')));
        while (string.indexOf('</eval>')>0) {
          eval(string.substring(string.indexOf('<eval>') + 6, string.indexOf('</eval>')));
          string = string.substring(string.indexOf('</eval>') + 7, string.length-1);
          //alert(string);
        }
      }
      if (hideAfter == 1){
        popup_elem = element('popup');
        popup_elem.style.display = 'none';
      }
      hideAfter = 0;
      isSaving = 0;
      cancelXML = 0;
    }
  }
}


/* --------------------------------------------------------------------------- */
/* Array */


Array.prototype.add = function(item){
  this[this.length] = item;
}

// .delete unavailable in IE
Array.prototype.subtract = function(item){
  for (var i = 0; i < this.length; i++)
    if (this[i] == item)
      this.splice(i, 1);
}

Array.prototype.has = function(item){
  for (var i = 0; i < this.length; i++)
    if (this[i] == item)
      return i;
  return false;
}


/* --------------------------------------------------------------------------- */
/* twitter */

var tweet;
function tweet(id){
  tweet = element('twitter_update_list').innerHTML;
  if (!tweet) {
    tweet = '(retweet)';
    //document.write('<script src="', 'http://twitter.com/statuses/user_timeline/'+id+'.json?callback=twitterCallback2&count=2', '" type="text/JavaScript"><\/script>');
    //document.write('<script type="text/JavaScript">tweet2('+id+');<\/script>');
  } else
    element(id).innerHTML = tweet;
}


/* --------------------------------------------------------------------------- */
/* bg.js */

function doc_bg_set(num){
  css("doc.body doc.bg.table doc.bg.td", 'bg-' + num);
}


/* --------------------------------------------------------------------------- */
/* ui.hint.js */

var e, e2, elem;
var show, mod, evtX, evtY;
var x, y, x1, x2, y1, y2, divX, divY;

var hint_x = 120;
var hint_y = 16;


function abs_y(e){
  y = 0;
  //while((e.tagName != 'DIV') && (e.tagName != 'BODY')){
  while(e.tagName != 'BODY'){
    y += e.offsetTop;
    e = e.offsetParent;
  }
  divY = e.offsetTop;
  return y;
}


function abs_x(e){
  x = 0;
  //while((e.tagName != 'DIV') && (e.tagName != 'BODY')){
  while(e.tagName != 'BODY'){
    x += e.offsetLeft;
    e = e.offsetParent;
  }
  divX = e.offsetLeft;
  return x;
}


function hint_show(str, evt){

  if (element('div-hint').disabled)
    return;

  hint_hide(evt);
  if (self.hideMenu)
    hideMenu('popup');

  evt = (evt) ? evt : ((event) ? event : null);
  e = (evt.target) ? evt.target : evt.srcElement;
  while((e.id != 'hint-cell') && (e.offsetParent)){
    e  = e.offsetParent;
  }

  x1 = abs_x(e);
  y1 = abs_y(e);
  x2 = x1 + e.offsetWidth;
  y2 = y1 + e.offsetHeight;
  e1 = element('div-hint-content');
  e1.innerHTML = str;
  e2 = element('div-hint');
  e2.style.top = y2 - hint_y + 'px';
  e2.style.left = abs_x(e) + e.offsetWidth - hint_x + 'px';
  e2.style.display = 'block';
  //fade('div-hint');

}


function in_paint(w, evt){
  evt = (evt) ? evt : ((event) ? event : null);
  if (evt && (evt.clientX > 0)) {
    evtX = evt.clientX + document.documentElement.scrollLeft;
    var doc_margin = (doc_width() - w) / 2;
    //alert(evtX);
    //alert('X: ' + doc_margin  + ' < ' + evtX + ' < ' +  (doc_margin + w) )
    if ((evtX >= doc_margin) && (evtX <= (doc_margin + w)))
      return true;
  }
  return false;
}

function in_paint2(w, h, evt){
  evt = (evt) ? evt : ((event) ? event : null);
  if (evt && (evt.clientX > 0)) {
    evtX = evt.clientX + document.documentElement.scrollLeft;
    evtY = evt.clientY + document.documentElement.scrollTop;
    var doc_margin = (doc_width() - w) / 2;
    if ((evtX >= doc_margin) && (evtX <= (doc_margin + w)) && (evtY <= h))
      return true;
  }
  return false;
}


function in_zone(x1, y1, x2, y2, evt){
  evt = (evt) ? evt : ((event) ? event : null);
  if (evt && (evt.clientX > 0)) {
    //evtX = evt.clientX + document.body.scrollLeft - divX;
    evtY = evt.clientY + document.documentElement.scrollTop - divY;
    evtX = evt.clientX + document.documentElement.scrollLeft - divX;
    //evtY = evt.clientY + divY;
    //alert('X: ' + x1  + ' < ' + evtX + ' < ' +  x2 + '  Y: ' + y1  + ' < ' + evtY + ' < ' +  y2 )
    if ((evtX >= x1 && evtX <= x2) && (evtY >= y1 && evtY <= y2))
      return true;
  }
  return false;
}

var mouse_x, mouse_y;
function window_mousepos(evt) {
  if (window.event) {
    mouse_x = event.clientX;
    mouse_y = event.clientY;
  } else {
    mouse_x = evt.clientX;
    mouse_y = evt.clientY;
  }
}

function window_mousepos_ini() {
  document.onmousemove = window_mousepos;
  if (!window.event)
    document.captureEvents(Event.MOUSEMOVE);
}

var home_menu = false;
function home_menu_fade(evt){
  if (!fadeswitch)
    return;
  if (in_paint(1080, evt) && !home_menu && !home_menu_visible){
    fade('home-menu-div');
    fade('menu-div');
    home_menu = true;
  } else if (!in_paint(1080, evt) && home_menu  && !home_menu_visible){
    fade('home-menu-div');
    fade('menu-div');
    home_menu = false;
  }
}

var shop_menu = false;
function shop_menu_fade(evt){
  if (in_paint(1080, evt) && !shop_menu){
    fade('menu-div');
    shop_menu = true;
  } else if (!in_paint(1080, evt) && shop_menu){
    fade('menu-div');
    shop_menu = false;
  }
}

function hint_hide(evt){
  mod = (document.all) ? 0 : 3;
  if(!in_zone(x1 + mod, y1 + mod, x2 - mod, y2 - mod + 0, evt)) {
   // fade('div-hint');
    element('div-hint').style.display = 'none';
  }
}

var photo_menu = false;
function photo_menu_fade(evt){
  if (in_paint2(1080, 810, evt) && !photo_menu){
    fade('menu-div');
    photo_menu = true;
  } else if (!in_paint2(1080, 810, evt) && photo_menu){
    fade('menu-div');
    photo_menu = false;
  }
}


/* --- n.ui.js: utilities --- */

function string_limit_count(id, limit){
  e = element(id);
  e2 = element(id+".count");
  len = 0;
  strSrc = escape(e.value);
  for(i = 0; i < strSrc.length; i++, len++){
    if(strSrc.charAt(i) == "%"){
      if(strSrc.charAt(++i) == "u"){
        i += 3;
	len++;
	}
      i++;
    }
  }
  if (len <= limit)
    e2.innerHTML =  "<b class=green>"+len+"</b>";
  else
    e2.innerHTML =  "<b class=red>"+len+"</b>";
}


function jump(aUrl, evt) {
  if (document.all) {
    evt = window.event;
    var key = evt.keyCode;
  } else
    var key = evt.which;
  if (key == 13)
    window.location= aUrl;
}


function charInt2(str){
  str = str + '';
  if (str.length == 1)
    return '0' + str;
  else
    return str;
}

// -- shop page loader -------------------------------------------------------------------------

function doc_height() {
    var d = document;
    return Math.max(
        Math.max(d.body.scrollHeight, d.documentElement.scrollHeight),
        Math.max(d.body.offsetHeight, d.documentElement.offsetHeight),
        Math.max(d.body.clientHeight, d.documentElement.clientHeight)
    );
}

function window_height() {
    var d = document;
    return Math.max(
        Math.max(d.body.clientHeight, d.documentElement.clientHeight)
    );
}

function doc_width() {
    var d = document;
    return Math.max(
        Math.max(d.body.scrollWidth, d.documentElement.scrollWidth),
        Math.max(d.body.offsetWidth, d.documentElement.offsetWidth),
        Math.max(d.body.clientWidth, d.documentElement.clientWidth)
    );
}

function window_width() {
    var d = document;
    return Math.max(
        Math.max(d.body.clientWidth, d.documentElement.clientWidth)
    );
}



var loader_offset = 800;
var pg_loaded = 1;
var pg_next = 2;
var pg_y = 0;
var coverage;
var doc_scope = '-';

function check_inview(id){
  if (!element(id))
    return false;
  pg_y = abs_y(element(id));
  var top = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  coverage = top + window_height();
  return ( coverage >= pg_y - loader_offset);
}


function pg_loader(){
  var id = 'div.pg.' + pg_next;
  if (check_inview(id) && !(pg_loaded == pg_next)){
    var seek = pg_loaded * 120 +1;
    elem_ajax_load(id, '_shopgrid.html?pg=' + pg_next + '&seek=' + seek + '&scope=' + doc_scope);
    pg_loaded = pg_next;
    pg_next++;
    if (coverage >= pg_y)
      scroll(0,pg_y);
  }
}



function form_loader(id){
  elem_ajax_load('form-div', '_form.html?_form=' + id + '&' + form_get('niyaform'), true);
}

function form_loader_edit(id, reset){
  elem_ajax_load('form-div', '_form.html?_form=' + id + '&' + form_get('niyaform') + '&confirm=0&send=0' + '&_reset=' + reset, true);
}


var pg_enabled = false;
function window_scroll(){
  if (pg_enabled)
    pg_loader();
}
window.onscroll = window_scroll;



// -- divmenu -------------------------------------------------------------------------

var divmenus = new Array();
var divmenu_levels = new Array();
var divmenu_vertical = 1;
var divmenu_padding = 5;
var divmenu_elem;
var divmenu_drop;
var offset_x = 0;
var offset_y = 0;
var fixed_y = 0;

function divmenu_show(src, id, level){

  divmenus[divmenus.length] = id;
  divmenu_levels[id] = level;
  divmenu_hide(level);

  divmenu_elem = element(id);
  if (divmenu_elem.parentNode.tagName != 'body'){
    divmenu_elem.parentNode.removeChild(divmenu_elem);
    document.getElementsByTagName("body")[0].appendChild(divmenu_elem);
  }

  if (src != ''){
    var offY = offset_y;
    var offX = offset_x;
    var e  = src;
  //  var str = '';
    while(e.tagName != 'BODY'){
      offY += e.offsetTop;
      offX += e.offsetLeft;
    //  str = str + ' | ' + e.tagName + ' ' + e.offsetTop;
      e  = e.offsetParent;
    }
    var offY2 = offY;
    var offX2 = offX;
    while(e.tagName != 'BODY'){
      offY2 += e.offsetTop;
      offX2 += e.offsetLeft;
      e = e.offsetParent;
    }
    //alert(str);

    if ((divmenu_vertical && (level == 0)) || divmenu_drop) {
      var div_y = src.offsetTop + src.offsetHeight + offY ;
      var div_x =src.offsetLeft + offX  -1;
    } else {
      var div_y = src.offsetTop  + offY - 2 - divmenu_padding;
      var div_x = src.offsetLeft + src.offsetWidth + offX + 1 + divmenu_padding;
    }
    divmenu_elem.style.top = div_y + 'px';
    divmenu_elem.style.left = div_x  + 'px';
  }

    if (fixed_y > 0)
    divmenu_elem.style.top = fixed_y  + 'px';

  //if ((level == 0) || divmenu_drop)
  //  element("divmenu-bg").style.top = src.offsetTop + src.offsetHeight + offY2  + 'px';

  divmenu_elem.style.display = 'block';
  element("divmenu-bg").style.display = 'block';
  divmenu_drop = false;
  menuon = true;;

}


function divmenu_hide(level){
  if (element("divmenu-bg") == null)
    return;

  for (var i = 0; i < divmenus.length; i ++ ){
    if ((divmenu_levels[divmenus[i]] >= level))
      if (element(divmenus[i]) != null){
        element(divmenus[i]).style.display = 'none';
        //fade(divmenus[i]);
        }
  }
  if (level == 0 )
    element("divmenu-bg").style.display = 'none';
  if (elem_focused != null)
    elem_focused.blur();

  menuon = false;
}




// ---------------------------------------------------------------------------
// fade

var TimeToFade = 300.0;

function fade_in(id){
  var element = document.getElementById(id);
  if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1')
    return;
  fade(id, 1);
}

function fade_out(id){
  var element = document.getElementById(id);
  if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1')
    fade(id, -1);
}

function fade(eid){
  var element = document.getElementById(eid);

  if(element == null)
    return;

  if(element.FadeState == null){
    if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1')
      element.FadeState = 2;
    else
      element.FadeState = -2;
  }

  if ((element.FadeState == 1 || element.FadeState == -1)) {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  } else {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("fade_animate(" + new Date().getTime() + ",'" + eid + "')", 33);
  }
}

function fade_animate(lastTick, eid){
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  var element = document.getElementById(eid);

  if(element.FadeTimeLeft <= elapsedTicks){
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }

  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
  setTimeout("fade_animate(" + curTick + ",'" + eid + "')", 33);
}

// ---------------------------------------------------------------------------
// animate 2.0


function AnimationFrame(left, top, width, height, time){

  this.Left = left;
  this.Top = top;
  this.Width = width;
  this.Height = height;
  this.Time = time;

  this.Copy = function(frame) {
    this.Left = frame.Left;
    this.Top = frame.Top;
    this.Width = frame.Width;
    this.Height = frame.Height;
    this.Time = frame.Time;
  }

  this.Apply = function(element) {
    element.style.left = Math.round(this.Left) + 'px';
    element.style.top = Math.round(this.Top) + 'px';
    element.style.width = Math.round(this.Width) + 'px';
    element.style.height = Math.round(this.Height) + 'px';
  }
}

function AnimationObject(element){

  if(typeof(element) == "string")
    element = document.getElementById(element);

  var fps = 60;
  var frameTime = 1000 / fps;
  var frames = null;
  var timeoutID = -1;
  var running = 0;
  var currentFI = 0;
  var currentData = null;
  var lastTick = -1;
  var callback = null;
  var prevDir = 0;

  this.AddFrame = function(frame){
    frames.push(frame);
  }

  this.SetCallback = function(cb){
    callback = cb;
  }

  this.ClearFrames = function(){
    if(running != 0)
      this.Stop();
    frames = new Array();
    frames.push(new AnimationFrame(0,0,0,0,0));
    frames[0].Time = 0;
    frames[0].Left = parseInt(element.style.left);
    frames[0].Top = parseInt(element.style.top);
    frames[0].Width = parseInt(element.style.width);
    frames[0].Height = parseInt(element.style.height);
    currentFI = 0;
    prevDir = 0;
    currentData = new AnimationFrame(0,0,0,0,0);
  }

  this.ResetToStart = function(){
    if(running != 0)
      this.Stop();
    currentFI = 0;
    prevDir = 0;
    currentData = new AnimationFrame(0,0,0,0,0);
    frames[0].Apply(element);
  }

  this.ResetToEnd = function(){
    if(running != 0)
      this.Stop();
    currentFI = 0;
    prevDir = 0;
    currentData = new AnimationFrame(0,0,0,0,0);
    frames[frames.length - 1].Apply(element);
  }

  this.Stop = function(){
    if(running == 0)
      return;
    if(timeoutID != -1)
      clearTimeout(timeoutID);
    prevDir = running;
    running = 0;
  }

  this.RunForward = function(){
    if(running == 1)
      return;
    if(running == -1)
      this.Stop();
    if(frames.length == 1 || element == null)
      return;

    lastTick = new Date().getTime();

    //Start from the begining
    if(prevDir == 0){
      currentFI = 1;
      currentData.Time = 0;
      currentData.Left = parseInt(element.style.left);
      currentData.Top = parseInt(element.style.top);
      currentData.Width = parseInt(element.style.width);
      currentData.Height = parseInt(element.style.height);
      frames[0].Copy(currentData);
    } else if(prevDir != 1){
      currentFI++;
      currentData.Time = frames[currentFI].Time - currentData.Time;
    }

    running = 1;
    animate();
  }

  this.RunBackward = function() {
    if(running == -1)
      return;
    if(running == 1)
      this.Stop();
    if(frames.length == 1 || element == null)
      return;

    lastTick = new Date().getTime();

    //Start from the end
    if(prevDir == 0) {
      currentFI = frames.length-2;
      currentData.Left = parseInt(element.style.left);
      currentData.Top = parseInt(element.style.top);
      currentData.Width = parseInt(element.style.width);
      currentData.Height = parseInt(element.style.height);
      currentData.Time = frames[frames.length-1].Time;
      frames[frames.length-1].Copy(currentData);
      currentData.Time = 0;
    } else if(prevDir != -1){
      currentData.Time = frames[currentFI].Time - currentData.Time;
      currentFI--;
    }

    running = -1;
    animate();
  }

  function animate() {
    if(running == 0)
      return;
    var curTick = new Date().getTime();
    var tickCount = curTick - lastTick;
    lastTick = curTick;

    var timeLeft = frames[((running == -1) ? currentFI+1 : currentFI)].Time - currentData.Time;

    while(timeLeft <= tickCount) {
      currentData.Copy(frames[currentFI]);
      currentData.Time = 0;
      currentFI += running;
      if(currentFI >= frames.length || currentFI < 0) {
        currentData.Apply(element);
        lastTick = -1;
        running = 0;
        prevDir = 0;
        if(callback != null)
          callback();
        return;
      }
      tickCount = tickCount - timeLeft;
      timeLeft = frames[((running == -1) ? currentFI+1 : currentFI)].Time - currentData.Time;
    }

    if(tickCount != 0) {
      currentData.Time += tickCount;
      var ratio = currentData.Time /
          frames[((running == -1) ? currentFI+1 : currentFI)].Time;

      currentData.Left = frames[currentFI-running].Left +
         (frames[currentFI].Left - frames[currentFI-running].Left) * ratio;

      currentData.Top = frames[currentFI-running].Top +
         (frames[currentFI].Top - frames[currentFI-running].Top) * ratio;

      currentData.Width = frames[currentFI-running].Width +
         (frames[currentFI].Width - frames[currentFI-running].Width) * ratio;

      currentData.Height = frames[currentFI-running].Height +
         (frames[currentFI].Height - frames[currentFI-running].Height) * ratio;
    }

    currentData.Apply(element);
    timeoutID = setTimeout(animate, frameTime);
  }

  this.ClearFrames();
}


/* ---------------------------------------------------------------------------

function n_navbar(){}

 --------------------------------------------------------------------------- */


var navbar = function(){

  //-- vars -- //

  var me = this;
  var div = null;
  var pos = 0;
  var max = 0;
  var boxpos = 1;
  var book_width = 0;

  var id = '';
  var src = '';
  var scope = '-';
  var item = 0;

  me.loaded = new Array();

  //-- functions -- //

  me.next = function(){
    if (element(me.id + '.next.btn').locked)
      return;
    me.pos = me.pos + (126*7) * (-1) ;
    element(me.id + '.next.btn').style.backgroundPosition = '-50px 0px';
    element(me.id + '.prev.btn').style.backgroundPosition = '0px -50px';
    me.anim();
    element(me.id + '.navbox.' + me.boxpos).className = 'w25 rounded2px left';
    me.boxpos++;
    element(me.id + '.navbox.' + me.boxpos).className = 'w75 rounded2px left';
    me.load();
    me.load(1);
  }

  me.prev = function(){
    if (element(me.id + '.prev.btn').locked)
      return;
    me.pos = me.pos - (126*7) * (-1);
    element(me.id + '.prev.btn').style.backgroundPosition = '-50px -50px';
    element(me.id + '.next.btn').style.backgroundPosition = '0px 0px';
    me.anim();
    element(me.id + '.navbox.' + me.boxpos).className = 'w25 rounded2px left';
    me.boxpos--;
    element(me.id + '.navbox.' + me.boxpos).className = 'w75 rounded2px left';
    me.load();
    me.load(-1);
  }

  me.update = function (){
    element(me.id + '.prev.btn').locked = false;
    element(me.id + '.next.btn').locked = false;
    element(me.id + '.prev.btn').className = 'left pointer';
    element(me.id + '.next.btn').className = 'left pointer';
    if (me.pos >= 0) {
      me.pos = 0;
      element(me.id + '.prev.btn').style.backgroundPosition = '-150px -50px';
      element(me.id + '.prev.btn').className = 'left no-pointer';
      element(me.id + '.prev.btn').locked = true;
    }
    if (me.pos <= me.max){
      me.pos = me.max;
      element(me.id + '.next.btn').style.backgroundPosition = '-150px 0px';
      element(me.id + '.next.btn').locked = true;
      element(me.id + '.next.btn').className = 'left no-pointer';
    }
  }

  me.anim = function(){
    me.update();
    if (me.div == null)
      me.div = new AnimationObject(me.id + '.book');
    me.div.ClearFrames();
    me.div.AddFrame(new AnimationFrame(me.pos, 0, me.book_width, 96, 250));
    me.div.RunForward();
  }

  me.load = function(pos){
    if (pos == null)
      pos = 0;
    pos = me.boxpos + pos;
    pg_id = 'div.' + me.id + '.' + pos;
    if (!element(pg_id))
      return false;
    if (me.loaded.has(pg_id) !== false)
      return;
    if (me.scope)
      url = me.src + '?pg=' + pos+ '&' + me.key + '=' + me.item + '&scope=' + me.scope;
    else
      url = me.src + '?pg=' + pos + '&' + me.key +'=' + me.item;

    me.ajx = new ajax_obj(pg_id);
    me.ajx.update(url);
    me.loaded.add(pg_id);
  }

  //-- ini -- //

};


// ---------------------------------------------------------------------------
// home.js

var home_menu_visible = false;
var home_div = null;
var menuat = null;
var menuon = false;
var fadeswitch = false;
function home_set(name){

  if (!menuon){
    if (home_menu_visible){
      fade('home-content-div');
      if (is_ie())
        element('home-content-div2').style.display = 'none';
      home_menu_visible = false;
    }
    if (name == 'news' )
      element('news.btn').style.backgroundPosition = '-120px 0px';
    else if (name == 'arrivals' )
      element('arrivals.btn').style.backgroundPosition = '-120px -30px';
    else if (name == 'store' )
      element('store.btn').style.backgroundPosition = '-120px -60px';
    menuat = null;
    element('div-hint').disabled = !home_menu_visible;
    return;
  }

  if (!home_menu_visible){
    element('home-content-div2').style.display = 'block';
    fade('home-content-div');
    home_menu_visible = true;
    element('div-hint').disabled = !home_menu_visible;
  }

  if (home_div == null)
    home_div = new AnimationObject("home-content-div2");
  home_div.ClearFrames();

  if (name == 'news' ) {
    if (!menuat)
      element('home-content-div2').style.top = '0px';
    element('news.btn').style.backgroundPosition = '-240px 0px';
    element('arrivals.btn').style.backgroundPosition = '0px -30px';
    element('store.btn').style.backgroundPosition = '0px -60px';
    home_div.AddFrame(new AnimationFrame(0,0,1080,380,250));
  } else  if (name == 'arrivals' ) {
    if (!menuat)
      element('home-content-div2').style.top = '-380px';
    element('arrivals.btn').style.backgroundPosition = '-240px -30px';
    element('news.btn').style.backgroundPosition = '0px 0px';
    element('store.btn').style.backgroundPosition = '0px -60px';
    home_div.AddFrame(new AnimationFrame(0,-380,1080,380,250));
  } else  if (name == 'store' ) {
    if (!menuat)
      element('home-content-div2').style.top = '-760px';
    element('store.btn').style.backgroundPosition = '-240px -60px';
    element('arrivals.btn').style.backgroundPosition = '0px -30px';
    element('news.btn').style.backgroundPosition = '0px 0px';
    home_div.AddFrame(new AnimationFrame(0,-760,1080,380,250));
  }

  home_div.RunForward();
  menuat = name + '.btn';

}

/* ---------------------------------------------------------------------------

function n_selector(){}

 --------------------------------------------------------------------------- */

var cart = false;

var selector = function(a, b){

  // vars //
  var me = this;
  var value = a;
  var _default = b;

  //-- functions -- //

  me.set  = function(id){
    if (!element(id))
      return false;
    me.unset();
    me.value = id;
    element(id).className = 'select-on';
    if (cart)
      cart_calc();
  }

  me.unset = function(){
    if(element(me.value))
      element(me.value).className = 'select-off';
  }

  // ini //
  if (element(me._default))
    element(me._default).className = 'select-on';

};


// ---------------------------------------------------------------------------
// scope

var scopes = Array();
var scopebtns = Array();
var scopeurls = Array();


function scopebtns_ini(key, val){
  if (val)
    scopebtns[key] = explode('|', val);
}

function scopes_ini(key, val){
  if (val){
    scopes[key] = explode('|', val);
    element('clearbtn_'+key).locked = false;
    element('clearbtn_'+key).className = 'divbtn-off';
  }
}


function scopebtn_flip(key, id, val){
  element('okbtn_'+key).locked = false;
  element('okbtn_'+key).className = 'divbtn-off';
  if (scopes[key].has(val) === false){
    scopes[key].add(val);
    scopebtns[key].add(id);
    element(id).className = 'menu-item-on';
  } else {
    scopes[key].subtract(val);
    scopebtns[key].subtract(id);
    element(id).className = 'menu-item-off';
  }
}


function scopebtn_onmouseover(key, id){
  if (scopebtns[key].has(id) === false)
    element(id).className = 'menu-item-hover';
  else
    element(id).className = 'menu-item-strike';
}

function scopebtn_onmouseout(key, id){
  if (scopebtns[key].has(id) === false)
    element(id).className = 'menu-item-off';
  else
    element(id).className = 'menu-item-on';
}


function sort_numrev(a,b){
  return b - a;
}

function scope_ok(key, num, has){
  if (has)
    has = '-has-';
  else
    has = '-is-';
  if (scopes[key].length > 0){
    if (num)
      window.location = scopeurls[key] + key + has + scopes[key].sort(sort_numrev).join('|');
   else
      window.location = scopeurls[key] + key + has + scopes[key].sort().join('|');
  } else
    scope_clear(key);
}


function scope_clear(key){
  window.location = scopeurls[key];
}

// ---------------------------------------------------------------------------
// product.js

var size = new selector();
var dest = new selector();
var ship = new selector();
var paym = new selector();

function purchase(item, shopstate){
  if(size.value)
    window.location.href = 'cart.html?'+ shopstate + '&cart_add=' + item + '[' + element(size.value).innerHTML + ']';
  else
    element('size-error-div').style.display = 'block';
}


function cart_calc(){
  if(dest.value)
    element('dest-error-div').style.display = 'none';
  if(ship.value)
    element('ship-error-div').style.display = 'none';
  if(paym.value)
    element('paym-error-div').style.display = 'none';
  if (dest.value && ship.value && paym.value){
    //alert('_checkout.html?dest=' + selection['dest'] + '&paym=' + selection['paym'] + '&ship=' + selection['ship']);
    elem_ajax_load('checkout-div', '_checkout.html?shipto=' + dest.value + '&payby=' + paym.value + '&shipby=' + ship.value, true);
  }
}


function checkout(){
  if(!dest.value)
    element('dest-error-div').style.display = 'block';
  else
    element('dest-error-div').style.display = 'none';
  if(!ship.value)
    element('ship-error-div').style.display = 'block';
  else
    element('ship-error-div').style.display = 'none';
  if(!paym.value)
    element('paym-error-div').style.display = 'block';
  else
    element('paym-error-div').style.display = 'none';
  if (dest.value && ship.value && paym.value){
   form_show();
  }
}

slider = {};
slider.height = {};
slider.height.adjust = function(){
  var e = element('div-bottom');
  var e2 = element('div-bottom2');
  var h = e.offsetTop+30;
  if (e2) {
    var h2 = e2.offsetTop+30;
    if (h2 > h)
      h = h2;
  }
  if (h < 500 )
    h = 500;
  element('slider-div').style.height = h + 'px';
  element('slider-vr1').style.height = h + 15 + 'px';
  element('slider-vr2').style.height = h + 15 + 'px';
}


scope = {}
scope.menu = {};
scope.menu.adjust = function(count){
  element('scope-total-elem').innerHTML = count;
  var e = element('scopemenu-w1-div');
  var e2 = element('scopemenu-w2-div');
  var w = e.offsetLeft;
  var w2 = e2.offsetLeft;
  element('scopemenu-bg1-div').style.width = w + 'px';
  element('scopemenu-bg2-div').style.width = w2  + 'px';
};


function form_show(){
    var e = element('div-bottom');
    var h = e.offsetTop+30;
    if (h < 500 )
      h = 500;
    content_div = new AnimationObject("slider-div");
    content_div.AddFrame(new AnimationFrame(-300,0,1000,h ,450));
    content_div.RunForward();
}


function form_hide(){
    var e = element('div-bottom');
    var h = e.offsetTop+30;
    if (h < 500 )
      h = 500;
    content_div = new AnimationObject("slider-div");
    content_div.AddFrame(new AnimationFrame(0,0,1000,h,450));
    content_div.RunForward();
}


// ---------------------------------------------------------------------------

