function searchClear(target, searchText)
{
  if (target.value == searchText)
  {
    target.value = '';
  }
}

function searchRestore(target, searchText)
{
  if (target.value == '')
  {
    target.value = searchText;
  }
}

function bar(url, title) {
	wasOpen = false;
	win     = window.open(url, title);    
	return (typeof(win) == 'object') ? true : false;
}

function myPopImage(imageURL,imageTitle,imageWidth,imageHeight) {

  PositionX = 30;
  PositionY = 30;
  
  ratio = imageWidth/imageHeight;
  maxHeight = screen.height - 105;
  maxWidth = maxHeight*ratio;
  if (maxWidth > screen.width-30) {
    maxWidth = screen.width - 80;
    maxHeight = maxWidth/ratio;
  }
    
  var opt='width=320,height=240,left='+PositionX+',top='+PositionY+',status=0,toolbar=0,menubar=0,location=0';
  imgWin=window.open('about:blank','null',opt);
  with (imgWin.document) {
    writeln('<html><head><title>Loading...</title><style>body{margin:0px;}</style>');
    writeln('<sc'+'ript>');
    writeln('function reSizeToImage(){');
    writeln('if (document.images[0].height > '+maxHeight+' || document.images[0].width > '+maxWidth+'){');
    writeln('height = '+maxHeight+';');
    writeln('width = '+maxWidth+';');
    writeln('document.images[0].width = '+maxWidth+';');
    writeln('document.images[0].height = '+maxHeight+';');
    writeln('window.resizeTo(width+40,height+100);}');
    writeln('else {');
    writeln('height = document.images[0].height;');
    writeln('width = document.images[0].width;');
    writeln('window.resizeTo(width+40,height+100);}}');
    writeln('function doTitle(){document.title="'+imageTitle+'";}');
    writeln('</sc'+'ript>');
    writeln('</head><body bgcolor="FFFFFF" onload="reSizeToImage();doTitle();self.focus()">');
    writeln('<img alt="'+imageTitle+'" title="'+imageTitle+'" src="'+imageURL+'" style="display:block; margin:0 auto;" /></body></html>');
    close();
  }
}

function myPopWindow(windowURL, windowName, windowFeatures) {
  var defaultFeatures = {"status": 0, "toolbar": 0, "location": 0, "menubar": 0,
                         "directories": 0, "resizeable": 1, "scrollbars": 1,
                         "width": 640, "height": 480};
  var features = '';

  for (i in windowFeatures) { defaultFeatures[i] = windowFeatures[i]; }
  for (i in defaultFeatures) { features += i + '=' + defaultFeatures[i] + ','; }

  window.open(windowURL, windowName, features);
  return false;
}

function switchBmk(n, css) {
  if ($(css + '_header')) {
    var num = $$('#'+css+'_header .bmk_title').length;
    for (var i=1;i<=num;i++) {
      var elt = $(css+'_title_' + i);
      var elc = $(css+'_content_' + i);
      if (i == n) {
        elt.className = 'bmk_title active';
        elc.className = 'bmk_content visible';
      }
      else {
        elt.className = 'bmk_title';
        elc.className = 'bmk_content invisible';
      }
    }
  }
}

function highlightWords(elCls, hCls, words) {
  if (typeof words == 'object') {
    words = Object.keys(words);
  }
  if ($$(elCls).length > 0 && words.length > 0) {
    words.each(
      function(c, i){
        words[i] = c.replace(/([\\\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:\-])/g, '\\$1');
        words[i] = words[i].replace(/ /g, '\\s');
      }
    );
    var re = new RegExp('([^a-zA-Z0-9_\\-]|^)('+words.join('|')+')([^a-zA-Z0-9_\\-]|$)', 'gim');
    $$(elCls).each(function(el) {
      highlightWordsElem(el, re, hCls);
    });
  }
}

function highlightWordsElem(el, re, hCls) {
  for (var i=0;i<el.childNodes.length;i++) {
    if (el.childNodes[i].nodeName == '#text' && !$(el).hasClassName('h_word')) {
      var text = el.childNodes[i].data || el.childNodes[i].textContent;
      if (text.match(re)) {
        var html = text.replace(re, '$1<span class="' + hCls + '"><span class="h_word">$2</span></span>$3');
        if (el.childNodes.length == 1) {
          el.innerHTML = html;
        } else {
          var hSpan = new Element('span');
          hSpan.innerHTML = html;
          if (typeof el.childNodes[i].nextSibling != 'undefined') {
            el.insertBefore(hSpan, el.childNodes[i].nextSibling);
            if (typeof el.childNodes[i].data != 'undefined') {
              el.childNodes[i].data = '';
            } else {
              el.childNodes[i].textContent = '';
            }
          } else if (typeof el.childNodes[i].previousSibling != 'undefined') {
            el.appendChild(hSpan);
            if (typeof el.childNodes[i].data != 'undefined') {
              el.childNodes[i].data = '';
            } else {
              el.childNodes[i].textContent = '';
            }
          }
        }
      }
    } else {
      highlightWordsElem(el.childNodes[i], re, hCls);
    }
  }
}

document.observe("dom:loaded", function() {
  if (window.location.hash && !window.location.hash.split('#')[1].empty()) {
    var hashValue = window.location.hash.split('#')[1];
    if (hashValue.indexOf('bmk') != -1) {
      var bmkVars = hashValue.split('-');
      switchBmk(bmkVars[1], bmkVars[0]);
    }
  }
  if ($$('#top-box .stick-art .item').length > 1) {
    timerId = switchPanel.delay(8, 2);
  }
});

function switchPanel(num, stopLoop, e) {
  if (!!e) {
    Event.stop(e);
  }
  $$('#top-box .stick-art .item').each(function(s){
    if (s.id == 'stick-item-' + num) {
      $(s).appear();
      $$('#top-box .art-switch a').each(function(a){
        Element.stopObserving(a, 'click');
        if (a.id == 'stick-item-link-' + num) {
          $(a).addClassName('active');
        } else {
          $(a).removeClassName('active');
        }
      });
    } else {
      $(s).fade();
    }
  });
  $$('#top-box .art-switch a').each(function(a, i){
    Element.observe.delay(1.05, a, 'click', switchPanel.curry(i+1, true));
  });
  if (stopLoop == true) {
    window.clearTimeout(timerId);
  } else {
    if (num == $$('#top-box .stick-art .item').length) {
      timerId = switchPanel.delay(8, 1);
    } else {
      timerId = switchPanel.delay(8, num+1);
    }
  }
}

// adding method getPageSize to prototype's Position method
// returns [width, height] and {width, height}
//
// usage:
// Position.getPageSize().width/height OR
// var pageSize = Position.getPageSize()
Position.getPageSize = function() {
  var array = [];
  var pageW, pageH;

  if (window.innerHeight && window.scrollMaxY) {
		pageW = document.body.scrollWidth;
		pageH = window.innerHeight + window.scrollMaxY;
  } else {
		pageW = document.body.scrollWidth || document.body.offsetWidth;
		pageH = document.body.scrollHeight || document.body.offsetHeight;
  }

	if(pageH < document.viewport.getHeight()) {
		pageH = document.viewport.getHeight();
	}

	if(pageW < document.viewport.getWidth()) {
		pageW = document.viewport.getWidth();
	}

  array.width = array[0] = pageW;
  array.height = array[1] = pageH;

  return array;
}

var inlineGallery = {

  cssRule: 'a[rel="ig"]',
  cssRuleAjax: 'a[rel^="ig["]',
  contentBefore: '',
  contentAfter: '',
  galleryArr: new Array(),
  galleryArrAjax: new Array(),
  ajaxURL: '',
  ajaxLimit: 10,
  ajaxOffset: 0,
  ajaxLimitName: 'limit',
  ajaxOffsetName: 'offset',
  ajaxGalleryIdName: 'filter[id_albums][0]',
  ajaxAlbumId: null,
  imgKey: 0,

  init: function(varNames, ajaxURL, contentBefore, contentAfter) {
    if (typeof varNames.limitName != 'undefined') {
      inlineGallery.ajaxLimitName = varNames.limitName;
      inlineGallery.ajaxOffsetName = varNames.offsetName;
      inlineGallery.ajaxGalleryIdName = varNames.galleryIdName;
    }
    if (typeof ajaxURL != 'undefined' && ajaxURL != '') {
      inlineGallery.ajaxURL = ajaxURL;
    }
    if (typeof contentBefore != 'undefined' && contentBefore != '') {
      inlineGallery.contentBefore = contentBefore;
    }
    if (typeof contentAfter != 'undefined' && contentAfter != '') {
      inlineGallery.contentAfter = contentAfter;
    }
    var gAjaxKey = 0;
    var oldId = 0;
    if ($$(inlineGallery.cssRuleAjax).size() > 0) {
      $$(inlineGallery.cssRuleAjax).each(function(s) {
        var albumId = s.rel.slice(s.rel.indexOf('[')+1, s.rel.lastIndexOf(']'));
        if (albumId != '') {
          var ajaxParams = {};
          ajaxParams[inlineGallery.ajaxGalleryIdName] = albumId;
          ajaxParams[inlineGallery.ajaxLimitName] = inlineGallery.ajaxLimit;
          ajaxParams[inlineGallery.ajaxOffsetName] = inlineGallery.ajaxOffset;
          ajaxParams['filter[sort]'] = 'porder';
          ajaxParams['filter[order]'] = 'ASC';
          ajaxParams['format'] = 'full';

          new Ajax.Request(inlineGallery.ajaxURL, {
            method: 'get',
            parameters: ajaxParams,
            onSuccess: function(transport) {
              inlineGallery.galleryArrAjax[albumId] = transport.responseText.evalJSON(true);
            }
          });
          if (oldId != albumId) {
            gAjaxKey = 0;
          }
          s.observe('click', inlineGallery.openAjaxGallery.curry(albumId, gAjaxKey));
          oldId = albumId;
          gAjaxKey++;
        }
      });
    }
    var gKey = 0;
    $$(inlineGallery.cssRule).each(function(s, key) {
      if (s.firstDescendant() != null) {
        if (typeof s.firstDescendant().src != 'undefined') {
          //var imgSrc = s.firstDescendant().src.replace(/gallery\/([a-z]*)\//, 'gallery/detail/');
          var imgSrc = s.href;
          inlineGallery.galleryArr.push({link: imgSrc, name: s.title});
          s.observe('click', inlineGallery.openGallery.bind(gKey));
          gKey++;
        }
      }
    }); // set onclick on each image which matches cssRule
    $('prevImg').setOpacity(0.6);
    $('nextImg').setOpacity(0.6);
    $('inlineGallery').observe('click', inlineGallery.close); // set close observing
    $('inlineGalleryBg').observe('click', inlineGallery.close); // set close observing
  },

  openAjaxGallery: function(albumId, key, event) {
    inlineGallery.ajaxAlbumId = parseInt(albumId);
    $$('select,object').each(function(s){s.hide();});
    $('imgInfoBox').hide();
    $('customContentBefore').hide();
    $('customContentAfter').hide();
    $('inlineGalleryBg').setOpacity(0.8);
    $('inlineGalleryBg').style.height = Position.getPageSize().height + 'px';
    $('inlineGalleryBg').style.width = Position.getPageSize().width + 'px';
    $('inlineGalleryBg').show();
    var galleryOffset = document.viewport.getScrollOffsets().top + document.viewport.getHeight()/20;
    $('inlineGallery').style.top = galleryOffset + 'px';
    $('inlineGallery').show();
    inlineGallery.loadImage(key, true, inlineGallery.galleryArrAjax[inlineGallery.ajaxAlbumId]);
    Event.stop(event);
  },

  openGallery: function(event) {
    var key = this;
    $$('select,object').each(function(s){s.hide();});
    $('imgInfoBox').hide();
    $('customContentBefore').hide();
    $('customContentAfter').hide();
    $('inlineGalleryBg').setOpacity(0.8);
    $('inlineGalleryBg').style.height = Position.getPageSize().height + 'px';
    $('inlineGalleryBg').style.width = Position.getPageSize().width + 'px';
    $('inlineGalleryBg').show();
    var galleryOffset = document.viewport.getScrollOffsets().top + document.viewport.getHeight()/20;
    $('inlineGallery').style.top = galleryOffset + 'px';
    $('inlineGallery').show();
    inlineGallery.loadImage(key, true, inlineGallery.galleryArr);
    Event.stop(event);
  },

  loadImage: function(key, opened, imgArr) {
    inlineGallery.imgKey = key;

    if (key == 0 && inlineGallery.ajaxOffset == 0) {
      $('prevImg').hide();
    } else {
      if (!$('prevImg').visible()) {
        $('prevImg').show();
      }
    }

    if (inlineGallery.ajaxOffset > 0) {
      var pos = key+1+inlineGallery.ajaxOffset;
    } else {
      var pos = key+1;
    }
    if (typeof imgArr[key].count != 'undefined') {
      var count = imgArr[key].count;
    } else {
      var count = imgArr.length;
    }

    if (pos == count) {
      $('nextImg').hide();
    } else {
      if (!$('nextImg').visible()) {
        $('nextImg').show();
      }
    }
    inlineGallery.updateNav(key, imgArr);
    $('galleryImg').hide();
    $('imgLoading').show();
    if (typeof imgArr[key].name != 'undefined') {
      $('galleryImg').alt = imgArr[key].name;
      $('galleryImg').title = imgArr[key].name;
      if ($('galleryImg').title != '') {
        $('imgTitle').innerHTML = $('galleryImg').title;
      }
    }

    $('imgPos').innerHTML = pos + ' z ' + count;

		$('galleryImg').src = imgArr[key].link;

    imgPreloader = new Image();
		imgPreloader.onload = function() {
      $('imgLoading').hide();
      $('imgInfoBox').hide();
      var boxHeight = imgPreloader.height + $('imgInfoBox').getHeight();
      $('galleryImg').src = imgArr[key].link;
      /*if (opened) {*/
        $('customContentBefore').morph('width:'+imgPreloader.width+'px;', {duration: 0.4});
        $('customContentAfter').morph('width:'+imgPreloader.width+'px;', {duration: 0.4});
        $('imgOuterBox').morph('height:'+boxHeight+'px;width:'+imgPreloader.width+'px;', {duration: 0.4});
        setTimeout("inlineGallery.showImage(imgPreloader.width, imgPreloader.height)", 400);
      /*} else {
        $('imgOuterBox').style.width = imgPreloader.width + 'px';
        $('imgOuterBox').style.height = boxHeight + 'px';
        inlineGallery.showImage(imgPreloader.width, imgPreloader.height);
      }*/ // uncomment if you want faster move between photos
		}
    imgPreloader.src = imgArr[key].link;
    inlineGallery.preloadImages(key, imgArr);
  },

  showImage: function(w, h) {
    $('imgInnerBox').style.width = w + 'px';
    $('imgInnerBox').style.height = h + 'px';
    var navHeight = h + 10;
    $('galleryNav').style.height = navHeight + 'px';
    $('galleryImg').appear({ duration: 0.3 });
    $('imgInfoBox').appear({ duration: 0.3 });
    if (inlineGallery.contentBefore != '') {
      $('customContentBefore').innerHTML = inlineGallery.contentBefore;
      $('customContentBefore').appear({ duration: 0.3 });
    }
    if (inlineGallery.contentAfter != '') {
      $('customContentAfter').innerHTML = inlineGallery.contentAfter;
      $('customContentAfter').appear({ duration: 0.3 });
    }
  },

  updateNav: function(key, imgArr) {
    if (typeof imgArr[key].count != 'undefined') {
      if (key+inlineGallery.ajaxOffset > 0) {
        $('prevImg').onclick = function(event) {
          if (key == 0 && inlineGallery.ajaxOffset > 0) {
            inlineGallery.imgKey = inlineGallery.ajaxLimit-1;
            inlineGallery.getImagesFromServer(-10);
          } else {
            inlineGallery.imgKey--;
            inlineGallery.loadImage(inlineGallery.imgKey, false, inlineGallery.galleryArrAjax[inlineGallery.ajaxAlbumId]);
          }
          return false;
        }
      }
      if (key+1+inlineGallery.ajaxOffset < imgArr[key].count) {
        $('nextImg').onclick = function(event) {
          if (key == inlineGallery.ajaxLimit-1) {
            inlineGallery.imgKey = 0;
            inlineGallery.getImagesFromServer(10);
          } else {
            inlineGallery.imgKey++;
            inlineGallery.loadImage(inlineGallery.imgKey, false, inlineGallery.galleryArrAjax[inlineGallery.ajaxAlbumId]);
          }
          return false;
        }
      }
    } else {
      if (key > 0) {
        $('prevImg').onclick = function(event) {
          inlineGallery.imgKey--;
          inlineGallery.loadImage(inlineGallery.imgKey, false, imgArr);
          return false;
        }
      }
      if (key < imgArr.length-1) {
        $('nextImg').onclick = function(event) {
          inlineGallery.imgKey++;
          inlineGallery.loadImage(inlineGallery.imgKey, false, imgArr);
          return false;
        }
      }
    }
  },

  preloadImages: function(key, imgArr) {
    if((imgArr.length - 1) > key){
      var preloadNextImage = new Image();
      preloadNextImage.src = imgArr[key + 1][0];
    }
    if(key > 0){
      var preloadPrevImage = new Image();
      preloadPrevImage.src = imgArr[key - 1][0];
    }
  },

  getImagesFromServer: function(offsetChange) {
    inlineGallery.ajaxOffset += offsetChange;
    var ajaxParams = {};
    ajaxParams[inlineGallery.ajaxGalleryIdName] = inlineGallery.ajaxAlbumId;
    ajaxParams[inlineGallery.ajaxLimitName] = inlineGallery.ajaxLimit;
    ajaxParams[inlineGallery.ajaxOffsetName] = inlineGallery.ajaxOffset;
    ajaxParams['filter[sort]'] = 'porder';
    ajaxParams['filter[order]'] = 'ASC';
    new Ajax.Request(inlineGallery.ajaxURL, {
      method: 'get',
      parameters: ajaxParams,
      onSuccess: function(transport) {
        inlineGallery.galleryArrAjax[inlineGallery.ajaxAlbumId] = transport.responseText.evalJSON(true);
        inlineGallery.loadImage(inlineGallery.imgKey, false, inlineGallery.galleryArrAjax[inlineGallery.ajaxAlbumId]);
      }
    });
  },

  close: function(event) {
    if (Event.element(event).id == 'inlineGallery' || Event.element(event).id == 'closeImg' || Event.element(event).id == 'inlineGalleryBg') {
      $('inlineGallery').fade({ duration: 0.3 });
      $('inlineGalleryBg').fade({ duration: 0.3 });
      setTimeout("$('imgOuterBox').style.width = '32px'", 300);
      setTimeout("$('imgOuterBox').style.height = '32px'", 300);
      setTimeout("$('imgInnerBox').style.width = 'auto'", 300);
      setTimeout("$('imgInnerBox').style.height = 'auto'", 300);
      inlineGallery.ajaxOffset = 0;
      inlineGallery.ajaxAlbumId = null;
      $$('select,object').each(function(s){s.show();});
    }
  }
}
