// ----------------------------------------------------------------------------------------------------------
	function Class()
	{
		var maxShiftAnim = shiftAnim = intervalAnim = 0;
		var obj	= this;
		var id	= '';
		this.func = function(){};

		this.login = function(id, focusStyle, blurStyle)
		{
			if ($(id))
			{

				var elem = $(id).getElementsByTagName("input");

				for (var i=0; i<elem.length; i++)
				{

					elem[i].onblur =  function()
					{
						chg(id, blurStyle);
						
						if($('login_mail').value == '')
						{
							$('login_mail').value = 'e-mail';
							$('login_pass').value = 'password';
						}
					}

					elem[i].onfocus = function()
					{
						chg(id, focusStyle);
						if ($('login_mail').value == 'e-mail')
						{
							$('login_mail').value = $('login_pass').value = '';
						}
					}
				}
			}
		}('r', '', 'opacity_60');

		this.autoIframeParent = function(frameId)
		{
		        try
		    	{
				if (window.top.$(frameId))
				{
		            		frame = window.top.$(frameId);
		            		innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
		            		objToResize = (frame.style) ? frame.style : frame;
		    	    		objToResize.height = window.top.iframeDataHeight;
		            		objToResize.height = innerDoc.body.scrollHeight + 10;
				}
		        }catch(err){
		                window.status = err.message;
	            	}

		};


	//	type = 0 - действие возможно совершать любое кол-во раз
	//	type = 1 - действие возможно совершить только 1 раз

		this.switcher = function(id, tag, style, styleAll, type, func)
		{
			var parent = $(id);

			if (parent)
			{
				var elems = parent.getElementsByTagName(tag);

				if (elems)
				{
					for (var i=0; i< elems.length; i++)
					{
						elems[i].onclick = function()
						{
							if (this.parentNode.id)
							{
								var elems = $(id).getElementsByTagName(tag);
								var tmpIdF = getId(this.parentNode.id);

								for(var ii=0;  ii< elems.length; ii++)
								{
									var tmpIdS = getId(elems[ii].parentNode.id);

									if (tmpIdF == tmpIdS)
									{
										elems[ii].parentNode.className = this.parentNode.id == elems[ii].parentNode.id ? style : styleAll;
										if (type){elems[ii].parentNode.id = '';}
									}
								}

								if(func){eval(func);}

								return false;
							}
						}
					}
				}
			}
		}


		this.controlForm = function(ctrl, id, tag, param, warning)
		{
			var control = $(ctrl);
			var parent =  $(id);

			if (parent)
			{
				var elems = parent.getElementsByTagName(tag);

				control.onclick = function()
				{
					if(elems)
					{
						if (param=='checked')
						{
							for(var i=0; i<elems.length; i++)
							{
								elems[i].checked = control.checked === true ? 'checked' : '';
							}
						}

						if (param == 'value')
						{
							for(var i=0; i<elems.length; i++)
							{
								if(elems[0].value != elems[i].value) 
								{
									alert (warning);
									return false;
								}
							}
						}
					}
				}
			}
		}



		this.chgArray = function(id, tag, style_all, style_sel)
		{
			if ($(id))
			{
			
				var elem = $(id).getElementsByTagName(tag);

				
				if (elem)
				{
					for (var i=0; i<elem.length; i++)
					{
						elem[i].onclick = function() 
						{
							obj.id = this.id;
							arrChg(elem, style_all);
							chg(this.id, style_sel);

							obj.func();
						};
					}
				}
			}
		};

		this.voteComment = function(id, tag, style_all, style_sel)
		{
			if ($(id))
			{
				var elem = $(id).getElementsByTagName(tag);

				for (var i=0; i<elem.length; i++)
				{
					elem[i].onclick = function()
					{
						var parent = this.parentNode;
						if (parent.id)
						{
							var vote = parent.getElementsByTagName("a");
							for (var ii=0; ii<vote.length; ii++)
							{
								vote[ii].className = style_all;
							}

							this.className = style_sel;
							parent.id = '';
						}

						return false;
					}
				}
			}
		};

		this.chgParent = function(id, tag, style, func)
		{
			if ($(id))
			{
				var elem = $(id).getElementsByTagName(tag);

				for (var i=0; i<elem.length; i++)
				{
					elem[i].onclick = function()
					{
						if (this.parentNode.id)
						{
							if (func)
							{
								eval(func);
							}

							chg(this.parentNode.id, style);
						}
						return false;
					}
				}
			}
		};

		this.chgById = function(id, tag, chgId, style, func)
		{
			if ($(id))
			{
				var elem = $(id).getElementsByTagName(tag);
				for (var i=0; i<elem.length; i++)
				{
					elem[i].onclick = function()
					{
						if ($(chgId+this.id))
						{
							chg(chgId+this.id, style);
							if (func){eval(func);}

							return false;
						}
					}
				}
			}
		};

		this.animation = function(controlId, controlElem, animId, animElem, mS, s, intr, sel)
		{
			if($(controlId) && $(animId))
			{
				var rewind = $(controlId).getElementsByTagName(controlElem);
				var pr_clips = $(animId).getElementsByTagName(animElem);
				
				maxShiftAnim	= mS;
				shiftAnim	= s;
				intervalAnim	= intr;

				for (var i=0; i<rewind.length; i++)
				{
					rewind[i].onclick = function()
					{
						for (var ii=0; ii<pr_clips.length; ii++)
						{
							if (!pr_clips[ii].className)
							{
								var id = getId(pr_clips[ii].id);
								var nextId = id < (pr_clips.length-1) ? (parseInt(id)+1) : 0;
								var prevId = id == 0 ? (pr_clips.length-1) : (parseInt(id)-1);
							}
						}

						if (id)
						{
							var animBlock = this.id == 'next' ? 'i'+nextId : 'i'+prevId;
							var direction = this.id == 'next' ? 1 : 0;

							if ($('pagerAnim'))
							{
								var elems = $('pagerAnim').getElementsByTagName('a');
								for (var iii=0; iii<elems.length; iii++)
								{
									elems[iii].parentNode.className ='';
								}
								elems['p'+nextId].parentNode.className = 'sub_sel';
							}

							moveDiv('i'+id, animBlock, direction, maxShiftAnim, shiftAnim, intervalAnim);
						}
					}
				}
			}
		};
		
        //      добавить в плейлист
                this.addPlaylist = function()
                {

			if ($("clips_list") || $("clips_table") || $("theme_clips"))
			{
            			var animElements = ($("clips_list") 
						    ? 
						    $("clips_list").getElementsByTagName("i") : ($("clips_table") 
							    ? $("clips_table").getElementsByTagName("b") : $("theme_clips").getElementsByTagName("strong")));
		
		                for(var i=0; i<animElements.length; i++)
				{
					var elem = $("clips_list") || $("theme_clips") ? animElements[i] : animElements[i].getElementsByTagName("img")[0];
				
				        elem.onclick = function()
					{
						var id = getId(this.id);
						addElem(id, 1);
    						return false;
					};
				}
			}
/*			else if ($("list") && !thisClipPlaylist)
			{
				$("list").onclick = function()
				{
					var id = clip_id;
					addElem(id, 1);
					return false;
				}
			}
*/
		}();

		this.commentDisplayVote = function(id, tag, style, func)
		{
			if($(id))
			{
				var eventObjs = $(id).getElementsByTagName(tag);

				for (var i=0; i<eventObjs.length; i++)
				{

					if (eventObjs[i].id || eventObjs[i].parentNode.id && eventObjs[i].parentNode.tagName == 'LI')
					{
						eventObjs[i].onmouseover = function()
						{
							var chgId = this.id ? getId(this.id) : getId(this.parentNode.id);

							if($('tr_vote_'+chgId))
							{
								chg('tr_vote_'+chgId, style);
							}

						}

						eventObjs[i].onmouseout = function()
						{
							var chgId = this.id ? getId(this.id) : getId(this.parentNode.id);
							
							if($('tr_vote_'+chgId))
							{
								chg('tr_vote_'+chgId, 'unselect');
							}
						}


					}
				}
			}
		}

		this.commentVote = function(id, tag)
		{
			if ($(id))
			{
				var elems = getChild(tag, id);
				
				for(var i = 0; i < elems.length; i++)
				{
					elems[i].onclick = function()
					{
						var chgId = getId(this.parentNode.parentNode.id);
						
						if (chgId)
						{
                            			        $('rating').value = this.parentNode.className == 'hand_up' ? '+': '-';
							var url_vote = $('frm_vote').action;
							$('frm_vote').action += chgId;
							$('frm_vote').submit();
                                                
							$('rating').value = '';
							$('frm_vote').action = url_vote;
							chg('tr_vote_'+chgId, 'unselect');
							$('tr_vote_'+chgId).id = '';
							if (this.parentNode.className == 'hand_up')
							{
								$('vote_value_'+chgId).innerHTML = $('vote_value_'+chgId).innerHTML != 0 ? parseInt($('vote_value_'+chgId).innerHTML)+1 : '+1';
							}else{
								$('vote_value_'+chgId).innerHTML = $('vote_value_'+chgId).innerHTML != 0 ? parseInt($('vote_value_'+chgId).innerHTML)-1 : '-1';
							}
						}
					}
				}
			}

		}

		this.commentOpen = function(id, tag, style, func)
		{
			if($(id))
			{
				var eventObjs = $(id).getElementsByTagName(tag);

				for(var i=0; i<eventObjs.length; i++)
				{
					eventObjs[i].onclick = function()
					{

						var chgId = getId(this.id);

						for(var i = 0; i < eventObjs.length; i++)
						{
							var closeId = getId(eventObjs[i].id);

							if (chgId != closeId)
							{
								chg('tr_block_'+closeId, '');
							}
						}
					


						if ($('tr_block_'+chgId).className)
						{
							chg('tr_block_'+chgId, '');
						}else{
							chg('tr_block_'+chgId, style);
						}
						
						if(func){eval(func);}
					}
				}
			}
		}


		this.answerOpen = function(id, tag, func)
		{
			if($(id))
			{
				var elems = getChild(tag, id);

				for(var i=0; i<elems.length; i++)
				{
					elems[i].onclick = function()
					{
						if (this.className == 'answer')
						{
					
							var chgId = getId(this.id);

							if ($('tread_answer_'+chgId).className == 'unselect')
							{
								chg('tread_answer_'+chgId, 'tread');
							}else{
								chg('tread_answer_'+chgId, 'unselect');
							}
						
							if(func){eval(func);}
						}
					}
				}
			}
		}

		this.pagination = function(id, tag, style)
		{
			if ($(id))
			{
				var elems = getChild(tag, id);
				var l = elems.length;
						
				for (var i=0; i<l; i++)
				{
					elems[i].onclick = function()
					{
						var chgId = getId(this.parentNode.id);
                        
						for(var i=0; i<l; i++)
						{
							var visId = getId(elems[i].parentNode.id);
                        
							if (visId == parseInt(chgId)-1 || visId == parseInt(chgId)+1 || i == 0 && chgId != 1)
							{
								chg('p'+visId, '');
							}
							else if (visId == chgId)
							{
								chg('p'+visId, style);
							}
							else if (i != 0 && i != (parseInt(l)-1))
							{
								chg('p'+visId, 'unselect');
							}
						}
					}
				}
			}
		}
	} // end class





/* ____________________________________________________________________________________________________ */

/* функции для анимации */
    

	var pos = 0;

	function moveDiv(id, nextId, direction, maxShift, shift, interval)
	{
		var elem = $(id);
		var closeElem = nextId ? 1 : 0;

		chg(elem.id, 'opacity_60');

		maxShift	= direction > 0 ? maxShift : -maxShift;
		shift		= direction > 0 ? shift	: - shift;
		
		if (!elem.timerID) {elem.timerID = window.setInterval("cngHPosition("+id+", "+nextId+", "+maxShift+", "+shift+", "+closeElem+", "+interval+", "+direction+")", interval);}
	}

	function cngHPosition(id, nextId, maxS, s, closeElem, interval, direction)
	{
		pos = ((maxS < 0 && (pos + s) > maxS) || (maxS > 0 && (pos + s) < maxS) || maxS == 0 && pos != 0) ? (pos + s) : maxS;
		
		var elem = id;

		if (pos == maxS && elem.timerID)
		{
			window.clearInterval(elem.timerID);
			elem.timerID = '';

			chg(elem.id, (closeElem ? 'unselect' : ''));

			if (nextId)
			{
				pos = -maxS;
				var s = pos < 0 ? s : -s;
				nextId.style.marginLeft = pos+'px';

				moveDiv(nextId.id, 0, direction, 0, s, interval);
			}

		}

		elem.style.marginLeft = pos+'px';
	}

/* ____________________________________________________________________________________________________ */


			addElem = function(id, t)
			{
				var cntPlaylist = parseInt(getId(window.top.$('pl_cnt').innerHTML), 10)+1;

				if (t == 1)
				{
                    			chg('playlist_add_'+id, 'unselect');
			                chg('playlist_added_'+id, '');
				}else{
					thisClipPlaylist = 1;
				}

				window.top.$('pl_cnt_shdw').innerHTML = window.top.$('pl_cnt').innerHTML = cntPlaylist;

				window.top.$('frm_playlist').action = '/playlist.php?clip='+id+'&kind=add';
				window.top.$('frm_playlist').submit();
			}


/*------------------------------------------------------------------------------------------------------*/

	function $(id)
	{
		return document.getElementById(id);
	}


	function getChild(tag, id)
	{
		if (tag)
			return elems = !id ? document.getElementsByTagName(tag) : $(id).getElementsByTagName(tag);
		else
			return false;
	}
						    

	function chgParam(id, param, chg)
	{
		switch (param)
		{
			case 'innerHTML':
				$(id).innerHTML = chg;
				break;

			case 'src':
				$(id).src = chg;
				break;

			case 'width':
				$(id).style.width = chg+'px';
				break;

			case 'id':
				$(id).id = chg;
				break;

			case 'value':
				$(id).value = chg;
				break;			
		}
	}



	function chg(id, val)
	{
		$(id).className = val;
	}


	function arrChg(arr, style)
	{
		for (var i=0; i<arr.length; i++)
		{

			chg(arr[i].id, style);

		}
	}
						

	// определяем наличие в массиве  arr значения val
	// одномерный массив
	function index_of (arr, val)
	{
		for (i=0; i<arr.length; i++)
		{
			if (arr[i] == val)
				return val;
		}

		return false;
	}




	// получаем цифровую составляющую id элемента
	function getId(id)
	{
	
		return id.replace(/\D+/g, '', id);
			
	}
			
																				

	// получаем параметры из url
	function parseUrl(part, param, level)
	{
		
		var result = '';
		var url = level == 'top' ? window.top.location : window.location;
			
		switch (part)
		{

			case 'get':
				var srch = url.search.replace('?', '');
				srch = srch.split("&");

				for (i in srch)
				{
				        if (srch[i].replace(param+'=', '').length != srch[i].length)
					{
					        result = srch[i].replace(param+'=', '');
					}
				}
				break;

			case 'hash':
				result = url.hash == param ? 1 : 0;
				break;

		}
		return result;

	}


	function create_object (id, obj, w, h, insert)
	{
		var s1 = new SWFObject(obj, id, w, h,'8');
		s1.write(insert);
	}

/* _____________________________________________________________________del________________________________________________________________ */

	// МЮ ЯЙНКЭЙН БШЯНЙН ОПНЯЛЮРПХБЮЕЛ ПНДХРЕКЕИ
	var cnt_parent = 3;

	// ХЫХЛ ЕЯРЭ КХ ОЮПЕМР Я id 
	function view_parent(t, cnt)
	{

		var p = t;
		var id = false;

		while (cnt)
		{
			if (p.parentNode)
			{
				p = p.parentNode;

				if (p.id)
				{
					id = p.id;
					break;
				}
			}
			else
				break;

			cnt--;
		}


		return id;
	}


	// получаем значение переменной из $_GET. [!] только цифры.
        function getSearch(getParam)
        {
		var getVal = null;
                var srch = top.location.search.replace('?', '');
                srch = srch.split("&");

		for (i in srch)
		{
	                if (srch[i].replace(getParam+'=', '').length != srch[i].length)
	            		getVal = getId(srch[i]);
	        }
	        return getVal;
	}

