/* ====================================== *
 *    Made by Richie Grey                 *
 *    WebBuild.in                         *
 *    HTML-coder, JavaScript developer,   *
 *    icq 823-784                         *
 *    email rich@richie.com.ua            *
 *                                        *
 *    All rights reserved (c)2008.        *
 * ====================================== */

/*
 | MARQUE
 | Module creates div object with running line
 | for start using you need just add this code
 | where you need to create Running Line:
 |
 | <script type="text/javascript">
 |     marq.init("Youre text");
 | </script>
 |
 | If You need to change text in Running Line
 | Just call this function:
 |
 |     marq.renew("New text");
 |
 | For customizing Running Line use following
 | CSS classes:
 |   #RuningLine - for text
 |   #RunningLineBG - for background
 |
 | For more info you can write to:
 | rich@richie.com.ua
 */

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
var marq = {
	options: 	{
					width: 0, 	// 0 for AUTO
					height: 20, // 0 for AUTO
					step : 1,	// STEP OF MARQUEE
					speed : 20,	// SPEED OF MARQUEE
					emptySpace: 1,	//Empty space between Last news and first news
					blank_text : '<div style="visibility:hidden;">Hello, this is Running Line, created by Richie Grey. If you need to consult about using this script You can find me with contacts below.  ICQ #823784. MSN: richie.grey@hotmail.com. EMAIL rich@richie.com.ua</a></div>',
					// blank_text : '<div>Hello, this is Running Line, created by Richie Grey. If you need to consult about using this script You can find me with contacts below.  ICQ #823784. MSN: richie.grey@hotmail.com. EMAIL rich@richie.com.ua</a></div>',
								// Text that will be showed if needed text is absent
					direction: 'left' // left or right
				},
	text: '',
	dir: 0,
	scrWidth: 0,
	scr2Width: 0,
	realWidth: 0,
	realEmptySpace: 0,
	scr: document.createElement("DIV"),
	scr2: document.createElement("DIV"),
	warp: null,
	timer: null,

	move: function () {
		x = parseInt(marq.scr.style.left);
		x = x + (marq.options.step*marq.dir);
      // document.getElementById('console').innerHTML = marq.scrWidth + ':' + x;
		if (x == marq.scrWidth*(-1)) {
         update_marquee(1);
         // x = marq.scr2Width + marq.realEmptySpace*2 - marq.realWidth;
      }
		marq.scr.style.left = x+'px';

		x = parseInt(marq.scr2.style.left);
		x = x + (marq.options.step*marq.dir);
      // document.getElementById('console').innerHTML += "---" + marq.scr2Width + ':' + x;
		if (x == marq.scr2Width*(-1)) {
         update_marquee(2);
         // x = marq.scrWidth + marq.realEmptySpace*2 - marq.realWidth;
      }
		marq.scr2.style.left = x+'px';
	},

	init: function (t) {
      document.write('<div id="RunningLineBG" class="RunningLineBG"><\/div>');
      marq.warp = document.getElementById('RunningLineBG');
      marq.scr.setAttribute("id", "RuningLine");
      marq.warp.appendChild(marq.scr);
      marq.scr2.setAttribute("id", "RuningLine");
      marq.warp.appendChild(marq.scr2);

      marq.warp.style.width = marq.options.width!=0 ? marq.options.width+'px' : 'auto';
      marq.warp.style.position = 'relative';
      marq.warp.style.overflow = 'hidden';
      marq.scr.style.overflow = 'hidden';
      marq.scr2.style.overflow = 'hidden';

      marq.scr.style.position = 'absolute';
      marq.scr.style.left = '-500px';
      marq.scr.style.whiteSpace='nowrap';

      marq.scr2.style.position = 'absolute';
      marq.scr2.style.left = '-500px';
      marq.scr2.style.whiteSpace='nowrap';

      //marq.renew(t);

      marq.attachEvent(marq.warp, "mouseover", marq.mouseOver);
      marq.attachEvent(marq.warp, "mouseout", marq.mouseOut);

      marq.dir = marq.options.direction=='left' ? -1 : 1;
      marq.timer= setInterval('marq.move()',marq.options.speed);

      // document.write('<div id="console">console...<\/div>');
   },

   renew: function (t) {
      marq.text= !t || t.trim()=='' ? marq.options.blank_text : t;
      marq.scr.style.width = 'auto';
      marq.scr2.style.width = 'auto';

      marq.scr2.innerHTML = marq.text;
      marq.scr.innerHTML = marq.text;

      marq.warp.style.height = marq.scr.scrollHeight+'px';
      //marq.warp.style.height = marq.scr.scrollHeight+0+'px';
      marq.scrWidth = marq.scr.scrollWidth;
      marq.scr2Width = marq.scrWidth;

      marq.realWidth = marq.warp.offsetWidth;

      marq.realEmptySpace = Math.round(marq.realWidth*marq.options.emptySpace/100)

      if (marq.scrWidth < marq.realWidth-marq.realEmptySpace) {
         scrWidth =  marq.realWidth-marq.realEmptySpace;
         marq.scr.style.width = scrWidth +'px';
         marq.scrWidth = scrWidth;
      }

      marq.scr.style.left = marq.realWidth+'px';

      scr2Left = marq.realWidth + marq.scrWidth + marq.realEmptySpace;
      marq.scr2.style.left = scr2Left +'px';
   },

   renew_div1: function (t) {
      marq.text= !t || t.trim()=='' ? marq.options.blank_text : t;
      marq.scr.style.width = 'auto';

      marq.scr.innerHTML = marq.text;

      marq.warp.style.height = marq.scr.scrollHeight+5+'px';
      marq.scrWidth = marq.scr.scrollWidth;

      marq.realWidth = marq.warp.offsetWidth;
      marq.realEmptySpace = Math.round(marq.realWidth*marq.options.emptySpace/100)

      if (marq.scrWidth < marq.realWidth-marq.realEmptySpace) {
         scrWidth =  marq.realWidth-marq.realEmptySpace;
         marq.scr.style.width = scrWidth +'px';
         marq.scrWidth = scrWidth;
      }

      // marq.scr.style.left = marq.scr2Width - marq.scr2.style.left + (marq.realEmptySpace * 2) +'px';
      marq.scr.style.left = marq.scr2Width + parseInt(marq.scr2.style.left) + marq.realEmptySpace*2 +'px';
      // alert('div1' + "\n" + marq.scrWidth + "\n" + marq.scr2Width + "\n");
   },

   renew_div2: function (t) {
      marq.text= !t || t.trim()=='' ? marq.options.blank_text : t;
      marq.scr2.style.width = 'auto';

      marq.scr2.innerHTML = marq.text;

      marq.warp.style.height = marq.scr.scrollHeight+5+'px';
      marq.scr2Width = marq.scr2.scrollWidth;

      marq.realWidth = marq.warp.offsetWidth;
      marq.realEmptySpace = Math.round(marq.realWidth*marq.options.emptySpace/100)

      if (marq.scr2Width < marq.realWidth-marq.realEmptySpace) {
         scr2Width =  marq.realWidth-marq.realEmptySpace;
         marq.scr2.style.width = scr2Width +'px';
         marq.scr2Width = scr2Width;
      }

      // marq.scr2.style.left = marq.scrWidth - marq.scr.style.left + (marq.realEmptySpace * 2) + 'px';
      marq.scr2.style.left = marq.scrWidth + parseInt(marq.scr.style.left) + marq.realEmptySpace*2 + 'px';
      // alert('div2' + "\n" + marq.scrWidth + "\n" + marq.scr2Width + "\n");
   },

   attachEvent: function(o, e, a){
      if (o.addEventListener) o.addEventListener(e, a, false); // was true--Opera 7b workaround!
      else if (o.attachEvent) o.attachEvent("on" + e, a);
         else return null;
   },

   mouseOver: function(e) {
      clearInterval(marq.timer);
   },

   mouseOut:function() {
      marq.timer= setInterval('marq.move()',marq.options.speed);
   }
}