/*
  pi.js:
    Publish-Industry Javascript Library
*/

/*
  costructor
*/
function Pi() {}


Pi.prototype.MoveOrizontal = function(/* string */ element, /* JSON object*/ opt){

    try {

    if( $(element).isWorking == 1 ) return false;
    $(element).isWorking = 1;
    $(element).opt = opt || {};


    if( typeof $(element).slidePage == 'undefined' ) $(element).slidePage = 1;
    if( typeof $(element).slidePosition == 'undefined' ) $(element).slidePosition = 0;

    new Effect.Move(element,{
          x: opt.distance,
          duration: 0.6,
          transition: Effect.Transitions.sinoidal,
          beforeStart: function(){
            $(element).slidePage = $(element).opt.page;

            var arrowLeft = $$('.'+ $(element).opt.name + '-arrow-left' )[0]
            var arrowRight = $$('.'+ $(element).opt.name + '-arrow-right' )[0]

            if( ( $(element).opt.type == 'boxslide' ) ){

              // default
              $(element).slidePage = $(element).opt.page;

              // --
              if( $(element).opt.back && $(element).slidePosition > 0 ) $(element).slidePage = $(element).slidePosition - 1;

              // ++
              if( $(element).opt.next && $(element).slidePosition < $(element).opt.max ) $(element).slidePage = $(element).slidePosition + 1;

              // at the end
              if( $(element).slidePage == $(element).opt.max ) arrowRight.style.visibility='hidden';
              else arrowRight.style.visibility='visible';

              // at the start
              if( $(element).slidePage == 0 ) arrowLeft.style.visibility='hidden';
              else arrowLeft.style.visibility='visible';

              // normal step
              if( $(element).opt.page > -1 ) $(element).slidePage = $(element).opt.page

              // case studio
              if($(element).slidePage == $(element).slidePosition)  this.x = 0;
              else this.x =  - $(element).opt.size * ($(element).slidePage - $(element).slidePosition);

              if(typeof $(element).opt.nopager == 'undefined' || $(element).opt.nopager == false) {
                for(var i = 0; i <= $(element).opt.max; i++){
                  var block = $(element).opt.name + '-block-' + i;
                  if( i == $(element).slidePage ) {
                    $(block).className = 'color';
                  } else {
                    $(block).className = 'slide-page-number';
                  }
                }
              }

              $(element).slidePosition = $(element).slidePage;

            }
          },
          afterFinish: function(){
            $(element).isWorking =0;
          }
        });
    } catch(e){
      loggi("e is: " + e)
      loggi("e.number is: " + (e.number & 0xFFFF));
      loggi("e.description is: " + e.description);
      loggi("e.name is: " + e.name);
      loggi("e.message is: " + e.message);
    }
  }

Pi.prototype.Tabbing = function(/* string */ tabId, /* element */ anchor, /* string */ compID){

    try{

      var s = $('tabs-container-' + compID).getElementsByClassName('scrolling');
      var a = $('tabs-container-' + compID).getElementsBySelector('.tabs-nav a');

      a.each(
        function(el){ ( el === anchor )? el.addClassName('tab-selected'): el.removeClassName('tab-selected'); }
      );
      s.each(
        function(tab){ ( tab.id == tabId + '-' + compID )? tab.removeClassName('not-displayed'): tab.addClassName('not-displayed') ; }
      );

    } catch(e) {
      loggi("e is: " + e)
      loggi("e.number is: " + (e.number & 0xFFFF));
      loggi("e.description is: " + e.description);
      loggi("e.name is: " + e.name);
      loggi("e.message is: " + e.message);
    }
  }

Pi.prototype.ShowInfoLayer = function( /* string */ element){
    if(this.openElement && this.openElement != element) Effect.BlindUp(this.openElement);
    if(!this.openElement || this.openElement != element) Effect.BlindDown(element);
    this.openElement = element;
  }

Pi.prototype.HideInfoLayer = function( /* string */ element){
    Effect.BlindUp(element);
    this.openElement = '';
  }

Pi.prototype.InitAccordion = function(){
    try{
      if( $('multibox') ){
        var multibox = new accordion('multibox',{});
        multibox.activate($$('#multibox .accordion_toggle')[0]);
      }
    } catch(e){
      loggi(e);
    }
  }

// Pi Object
var Pi = new Pi();

// EVENT
if( !isAdmin ) Event.observe(window, 'load', Pi.InitAccordion, false);


var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();