var PhotoLineClass = function(e) {
	
	this.pic_pos         = 0;
	this.toMove          = true;
	
    this.pic_params = {
        width   : myOptions['pic_width'] + 'px', 
	    height  : myOptions['pic_height'] + 'px', 
	    padding : myOptions['pic_padding'] + 'px',
		margin  : myOptions['pic_margin'] + 'px',
	    border  : myOptions['pic_border'],
	    cursor  : 'pointer'
    };
  
    this.td = {
        backgroundColor : myOptions['bgcolor'], 
	    border          : myOptions['border'] 
    };
  
    this.desc_params = {
        fontFamily      : myOptions['desc_font'], 
	    fontSize        : myOptions['desc_font_size'] + 'px', 
	    color           : myOptions['desc_color'], 
	    textAlign       : myOptions['desc_align'],
	    paddingBottom   : myOptions['desc_paddingBot'] + 'px',
		cssFloat        : 'left',
	    styleFloat      : 'left',
		margin          : '0px 0px 0px 0px'
    };
  
    this.table_params = {
        border      : '0',
	    cellspacing : '0',
	    cellpadding : '0',
	    id          : 'lenta_table'
    };
  
    this.arrows_params = {
        left : {
	        img : {
	            src    : myOptions['left_src'], 
		        width  : myOptions['left_arrow_width'], 
		        height : myOptions['left_arrow_height'], 
	            border : '0px',
				id     : 'link_left',
				style  : 'cursor:pointer; margin-top:40px;'
            },
			src_disable : myOptions['left_src_disable']
	    },
	
	    right : {
	        img : {
	            src    : myOptions['right_src'], 
		        width  : myOptions['right_arrow_width'], 
		        height : myOptions['right_arrow_height'],
	            border : '0px',
				id     : 'link_right',
				style  : 'cursor:pointer;margin-top:40px;'
	        },
			src_disable : myOptions['right_src_disable']
	    }
    };
  
    if(this.table()) {
        this.lenta();
	    this.initScroll(e,this);
    }
};

PhotoLineClass.prototype = {
  
    table : function() {
		
		var tbl = document.createElement('table');
	    var row = tbl.insertRow(0);
	    
		for(var i in this.table_params) { 
	        tbl.setAttribute(i,this.table_params[i]);
	    }
	    for(var c = 0; c < 3; c++) {
	        row.insertCell(c).setAttribute('valign','middle');
	        tbl.rows[0].cells[c].setAttribute('align','left');
	    } 
	
	    var left_img  = this.mkarrow('left');
	    var right_img = this.mkarrow('right');
	    tbl.rows[0].cells[0].appendChild(left_img);
	    tbl.rows[0].cells[2].appendChild(right_img);
	    
		for(var i in this.td) {
	        tbl.rows[0].cells[1].style[i] = this.td[i];
     	}
	    
		var replace_node = document.getElementById('lenta_DIV');
	    if(replace_node) {
	        replace_node.parentNode.replaceChild(tbl,replace_node);
	        return true;
	    }
	    else {
	        alert("Ошибка!\nВставьте <div id='lenta_DIV'></div> на страницу для отображения ленты!");
	        return false;
	    }
    },
  
    mkarrow : function(dir) {
        
		var img = new Image();
	    
		for(var i in this.arrows_params[dir]['img']) {
	        img.setAttribute(i,this.arrows_params[dir]['img'][i]);
	    }
        if(dir == 'left') {
		    this.addEvent(img, 'click', function() { lenta.previous(); } );	
		}
		else if(dir == 'right') {
		    this.addEvent(img, 'click', function() { lenta.next(); } );	
		}
	    return img;
    },
	
	addEvent : function(obj, evnt, func) {
	    if(obj.addEventListener) {
		    obj.addEventListener(evnt, func, false);	
		}
		
		if(obj.attachEvent) {
		    obj.attachEvent('on' + evnt, func);	
		}
	},
  
    lenta : function() {
        
		lenta_DIV = document.createElement('div');
	    lenta_DIV.id = 'lenta_DIV';
		lenta_DIV.align = 'left';
	    var i,c,z,pic_len = myOptions['photos'].length;
	    lenta_DIV.style.overflow = 'hidden';
	    lenta_DIV.style.width = ((myOptions['all_pics'] * parseInt(this.pic_params['width'])) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['padding']) + parseInt(this.pic_params['margin'])) * 2 * myOptions['all_pics'])  + 'px';
	  
	  for(z = 0; z < pic_len; z++) {
	       (img = new Image()).src = myOptions['pic_dir'] + myOptions['photos'][z];
	   
	       for(var c in this.pic_params) {
	           img.style[c] = this.pic_params[c];
	       }
	  
	       if(z > myOptions['all_pics'] - 1) {
			   img.style.marginRight = '-' + (parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['padding']) + parseInt(this.pic_params['margin'])) * 2) + 'px';
			   img.style.visibility = 'hidden';
	       }
	  
	       var a = document.createElement('a');
	       a.title = myOptions['titles'][z];
	       a.target = '_blank';
	       a.href = myOptions['pic_dir'] + myOptions['big_photos'][z];
	       /* HR Blackout */
	       if(myOptions['Blackout']) {
	           a.className = 'blackout';
           }
	       /* HR Blackout */
	       a.appendChild(img);
	       lenta_DIV.appendChild(a);
	    }
	
	    if(myOptions['Blackout']) {
	        document.write("<script language='javascript' src='" + myOptions['Blackout_src'] + "'><\/script>");
        }
	    
		document.getElementById('lenta_table').rows[0].cells[1].appendChild(lenta_DIV);
  	    // заканчиваем содание ленты с фото
		
	    desc_DIV = document.createElement('div');
	    desc_DIV.id = 'desc_DIV';
	    desc_DIV.style.width = ((myOptions['all_pics'] * parseInt(this.pic_params['width'])) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['padding']) + parseInt(this.pic_params['margin'])) * 2 * myOptions['all_pics'])  + 'px';
	    desc_DIV.style.overflow = 'hidden';
	
	    for(var i = 0; i < pic_len; i++) {
	        var div = document.createElement('div');
	        div.style.width = (parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) * 2) + 'px';
           
			for(var a in this.desc_params) {
		        div.style[a] = this.desc_params[a];
	        }
	        
			if(i > myOptions['all_pics'] - 1) {
	            div.style.marginRight = '-' + (parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['padding']) + parseInt(this.pic_params['margin'])) * 2) + 'px';
	        }
			

	        var title = document.createTextNode(myOptions['titles'][i]);
	        div.appendChild(title);
	        desc_DIV.appendChild(div);
	    }
	    document.getElementById('lenta_table').rows[0].cells[1].appendChild(desc_DIV);
  },
  
    next : function() {
	    
		if(this.toMove) {
            if(this.pic_pos + myOptions['all_pics'] <= myOptions['photos'].length - 1) {
			    this.toMove = false;
                this.last_pic = this.pic_pos + myOptions['all_pics'];
                this.lenta_imgs = document.getElementById('lenta_DIV').getElementsByTagName('img');
	            this.titles = document.getElementById('desc_DIV').getElementsByTagName('div');
	            setTimeout(function() {
				    lenta.move('left');
				}, 10);
	        }
	    }
    },
  
    previous : function() {
	    
		if(this.toMove) {
            if(this.pic_pos > 0) {
			    this.toMove = false;
	            this.pic_pos--;
                this.last_pic = this.pic_pos + myOptions['all_pics'];
                this.lenta_imgs = document.getElementById('lenta_DIV').getElementsByTagName('img');
	            setTimeout(function() {
					    lenta.move('right');
					}, 10);
	        }
	    }
    },
  
    move : function(dir) {
        
		var first_pic   = this.lenta_imgs[this.pic_pos];
        var last_pic    = this.lenta_imgs[this.last_pic];
        var first_title = this.titles[this.pic_pos];
        var last_title  = this.titles[this.last_pic];
		
		last_pic.style.visibility = 'visible';

        if(dir == 'left') {
	        if(this.lenta_imgs[this.pic_pos].style.marginLeft) {
				var img = document.getElementById('link_left');
		        if(img.src.indexOf(this.arrows_params[dir]['src_disable']) != -1) {
				    img.src = this.arrows_params[dir]['img']['src'];
					img.style.cursor = 'pointer';
				}
	            first_pic.style.marginLeft = (parseInt(first_pic.style.marginLeft) - myOptions['step']) + 'px';
		        last_pic.style.marginRight = (parseInt(last_pic.style.marginRight) + myOptions['step']) + 'px';

		        first_title.style.marginLeft = (parseInt(first_title.style.marginLeft) - myOptions['step']) + 'px';
		        last_title.style.marginRight = (parseInt(last_title.style.marginRight) + myOptions['step']) + 'px';
		        var diff = (parseInt(this.pic_params['width']) + parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) - Math.abs(parseInt(first_pic.style.marginLeft));
				if(diff <= myOptions['step']) {
					
		            first_pic.style.marginLeft = '-' + ((parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) * 2) - parseInt(this.pic_params['margin'])) + 'px';
		            last_pic.style.marginRight = this.pic_params['margin'];	
		  
		            first_title.style.marginLeft = '-' + (parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) * 2) + 'px';
		            last_title.style.marginRight = '0px';
		            
		            this.toMove = true;
		            this.pic_pos++;
                    var lnk = document.getElementById('link_right');
					if((this.last_pic + 1) == this.lenta_imgs.length) {
						lnk.src = this.arrows_params['right']['src_disable'];
						lnk.style.cursor = 'auto';
					}	                
		        }
		        else {
		            setTimeout(function() {
					    lenta.move('left');
					}, myOptions['speed']);
		        }
	        }
	    }
	    else if(dir == 'right') {
	        if(last_pic.style.marginRight) {
				var img = document.getElementById('link_right');
		        if(img.src.indexOf(this.arrows_params[dir]['src_disable']) != -1) {
				    img.src = this.arrows_params[dir]['img']['src'];
					img.style.cursor = 'pointer';
				}
	            first_pic.style.marginLeft = (parseInt(first_pic.style.marginLeft) + myOptions['step']) + 'px';
		        last_pic.style.marginRight = (parseInt(last_pic.style.marginRight) - myOptions['step']) + 'px';
		
		        first_title.style.marginLeft = (parseInt(first_title.style.marginLeft) + myOptions['step']) + 'px';
		        last_title.style.marginRight   = (parseInt(last_pic.style.marginRight) - myOptions['step']) + 'px';
		        var diff = (parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) * 2) - Math.abs(parseInt(last_pic.style.marginRight));

		        if(diff <= myOptions['step']) {
		            first_pic.style.marginLeft = this.pic_params['margin'];
		            last_pic.style.marginRight = '-' + ((parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) * 2) - parseInt(this.pic_params['margin'])) + 'px';
		  
		            first_title.style.marginLeft = '0px';
		            last_title.style.marginRight = '-' + (parseInt(this.pic_params['width']) + (parseInt(this.pic_params['border']) + parseInt(this.pic_params['margin']) + parseInt(this.pic_params['padding'])) * 2) + 'px';
		            
					last_pic.style.visibility = 'hidden';
		            this.toMove = true;
					var lnk = document.getElementById('link_left');
					if(this.pic_pos == 0) {
						lnk.src = this.arrows_params['left']['src_disable'];
						lnk.style.cursor = 'auto';	
					}
		        }
		        else {
		            setTimeout(function() {
					    lenta.move('right');
					}, myOptions['speed']);
		        }
	        }
	    }
	    else {
	        alert("Ошибка!\nДиректория не определена!");
	    }
    },
  
    getMousePos : function(e) {
	    
		this.mouseX = this.mouseY = 0;
	    var e = e || window.event;
		
		if(document.attachEvent) {
	        this.mouseX = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
		    this.mouseY = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);			
	    }
	    else if(document.addEventListener) {
		    this.mouseX = e.clientX + window.scrollX;
		    this.mouseY = e.clientY + window.scrollY;
	    }
    },
  

    getObjPos : function(elem) {  

        var box = elem.getBoundingClientRect()  
    
	    var body = document.body  
        var docElem = document.documentElement  
    
	    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop  
        var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft  
    
	    var clientTop = docElem.clientTop || body.clientTop || 0  
        var clientLeft = docElem.clientLeft || body.clientLeft || 0  
    
	    var top  = Math.round(box.top +  scrollTop - clientTop);
        var left = Math.round(box.left + scrollLeft - clientLeft);  
	
	    this.objX = left;
	    this.objY = top;

    }, 


  
    initScroll : function(e,obj) {
        var lenta_DIV = document.getElementById('lenta_DIV');
		var objWidth  = parseInt(lenta_DIV.style.width);
		var objHeight = document.getElementById('lenta_table').clientHeight;
		
        if(document.attachEvent) {
	        document.attachEvent('onmousewheel', function(e){		
				var e = e || window.event;	
		        obj.getObjPos(lenta_DIV); 
		        obj.getMousePos(e);	

			    if((obj.mouseX >= obj.objX && obj.mouseX <= obj.objX + objWidth) && (obj.mouseY >= obj.objY && obj.mouseY <= obj.objY + objHeight)) {	
				
				    e.preventDefault ? e.preventDefault() : e.returnValue = false;						  
				  
				    if(e.wheelDelta < 0) {
					    obj.next();  
				    }
				    else {
					    obj.previous();  
				    }
			    }									  
		    });	  
	    }
	  
	    if(document.addEventListener) {
	        document.addEventListener('DOMMouseScroll', function(e){
			    var e = e || window.event;	
		        obj.getObjPos(lenta_DIV); 
		        obj.getMousePos(e);
			    if((obj.mouseX >= obj.objX && obj.mouseX <= obj.objX + objWidth) && (obj.mouseY >= obj.objY && obj.mouseY <= obj.objY + objHeight)) {
				    e.preventDefault ? e.preventDefault() : e.returnValue = false;
													  
				    if(e.detail > 0) {
					    obj.next();  
				    }
				    else {
					    obj.previous();  
				    }
			    }								  
		    }, false);	  
	    }
    }
  
};

var lenta = new PhotoLineClass();
