// JavaScript Document
$(document).ready(function(){
	// Scrollable
	$('.scrollable').scrollable({size:1, circular:true}).autoscroll();
	$('.p_scrollable').scrollable({size:5});
	// DropDown Blocks
	dropped=false;
	$('.dd_link').click(function(){$(this).parent().find('.dd_block:first').fadeToggle(function(){if(!dropped){dropped=$(this);}else{dropped=false;}});return false;});
	$('.dd_block').mouseleave(function(){$(this).fadeOut(600, function(){dropped=false;});});
	$('.hide_all').click(function(){$(this).parent().fadeOut(function(){dropped=false;});});
	// Fading hovered images
	$('.n_image img').live('mouseover', function(){$(this).animate({'opacity':0.75}, 300, function(){$(this).animate({'opacity':1}, 300);});});
	// PrettyPhoto init for user content
	$('a.video, a.photo').attr('rel', 'prettyPhoto[]');
	// PrettyPhoto
	$("a[rel^='prettyPhoto']").prettyPhoto();
	// Catalog Full Range
	$('.plus').live('click', function(){
		id=$(this).attr('rel'); var self=$(this); var block=$('#partition_'+id);
		fadeLoader(self);
		var getRange=new AJAXInteraction(queryLink+REQ+"&ft=range&id="+id+"&num=0&rnd="+ Math.random(), 
		function(require){
			if(require){
				block.html(require);
				catLastLineItm(block);
				$('html, body').animate({scrollTop:block.position().top-35}, 'fast');
				self.removeClass('plus'); self.addClass('minus');
				fadeLoader(self);
			}
		});
		getRange.doGet();
	});
	$('.minus').live('click', function(){
		id=$(this).attr('rel'); var self=$(this); var block=$('#partition_'+id);
		fadeLoader(self);
		var getRange=new AJAXInteraction(queryLink+REQ+"&ft=range&id="+id+"&num=4&rnd="+ Math.random(), 
		function(require){
			if(require){
				document.getElementById('partition_'+id).innerHTML=require;
				self.removeClass('minus'); self.addClass('plus');
				fadeLoader(self);
			}
		});
		getRange.doGet();
	});
	// Catalog Object Images Previews
	coip=false; // is action now
	$('.preview_imgs a').live('mousemove', function(){
		if($(this).hasClass('active') || coip)return;
		coip=true;
		href=$(this).attr('rev'); wh=href.substr(href.indexOf('?')+1,7);
		rev=$(this).attr('href');
		rel=$(this).attr('rel');
		width=wh.substr(0, wh.indexOf('=')); height=wh.substr(wh.indexOf('=')+1, 3);
		var imageLink=$('.view_image a:first');
		imageLink.fadeOut(220, function(){imageLink.css('backgroundImage', 'url('+href+')'); imageLink.attr({'href':rev}); imageLink.fadeIn(250, function(){coip=false;});});
		$(this).parent().children('a').removeClass('active');
		$(this).addClass('active');
		return false;
	});
	// Preload Preview Images
	preloadImages();
	// Sliding Table Head // Also Table Odd/Even Lines
	defPos=false; STH('thead'); $(document).scroll(function(){STH('thead');}); $(document).resize(function(){defPos=false; STH('thead');});	
	// catalog_objects->cat_item_>fourth element
	catLastLineItm('.catalog_objects');
	
	// easyTip
	var tip=false;
	$('body').append("<div id=\"easyTip\" style=\"position:absolute; display:none; padding:0.5em 1em; box-shadow: 0 0 8px black; color:#333; background:#FFF; border:1px solid #000; border-radius:1ex;\"></div>");
	$("[rev^='easyTip']").live('hover', function(e){
		var mX=e.pageX+7; var mY=e.pageY+7;
		var tip_text=$(this).attr('tip');
		if(!tip_text || tip_text==""){tip_text=$(this).attr('title'); if(tip_text=="")return;}
		if(!tip){tip=true; $('#easyTip').css({left:mX+'px', top:mY+'px'});}else{tip=false;}
		$('#easyTip').html(tip_text).fadeToggle();
	});
	
	// POPUP
	if(!readCookie('popup') && PID==1 && showPopUp==1){$('.popup').fadeIn();}
	$('.close_ppp').live('click', function(){$('.popup').fadeOut(); document.cookie='popup=1; path=/;'; return false;});
	
});

// AjaxLoader Fading
function fadeLoader(obj){
	var target=$(obj).parent().find('.aj_loader:last');
	if(target.css('display')=='none'){target.css('display', 'inline-block');}else{target.css('display', 'none');}
}

// Catalog Blocks Range Last Lines
function catLastLineItm(block){
	if(typeof block == 'undefined'){var blocks=$('.catalog_items');}else{var blocks=$(block);}
	for(i=0; i<blocks.length; i++){
		items=$(blocks[i]).find('.cat_item');
		for(j=0; j<items.length; j++){
			if((j+1)%4==0){$(items[j]).addClass('last');}
		}
	}
}
// Preload Preview Images
function preloadImages(){
	links=$('.preview_imgs a');
	for(i=0; i<links.length; i++){
		var img = new Image();
		img.src = $(links[i]).attr('href');
	}
}
// Sliding Table Head
function STH(blockName){
	if($(blockName).length>1)return;
	var block=$(blockName+':first');
	if(block.length<=0)return;
	th_pos=block.position().top;
	if(!defPos){
		defPos=th_pos; // Setting default thead position
		 // Setting each td width as calculated inner width, and odd/even class.
		var trs=block.parent().find('tr'); oddeven=false;
		for(i=0; i<trs.length; i++){ // Each tr
			if(!oddeven || oddeven=='odd'){oddeven='even'}else{oddeven='odd';}
			var tr=$(trs[i]);
			var tds=tr.children('td');
			if(tr.parent().is('thead')){oddeven=false;}
			for(j=0; j<tds.length; j++){ // Each td
				var td=$(tds[j]);
				td.wrapInner(document.createElement("p"));
				td.attr('width', td.innerWidth());
				if(oddeven)td.addClass(oddeven);
			}
		}
	}
	doc_top=$(document).scrollTop();
	first_tb_tr_height=$('tbody tr:first').innerHeight();
	if(doc_top>defPos+first_tb_tr_height){block.css({'position':'fixed', 'top':'0', 'width':block.parent().innerWidth()});}else{block.css('position', 'relative');}
	
}

// Standart Functions //
// Read Cookie
function readCookie(name){  
    var cookiename = name + "=";  
    var ca = document.cookie.split(';');  
    for(var i=0;i < ca.length;i++){  
        var c = ca[i];  
        while (c.charAt(0)==' ') c = c.substring(1,c.length);  
        if (c.indexOf(cookiename) == 0) return c.substring(cookiename.length,c.length);  
    }  
    return null;  
}  

// Dinamic form changes
function saveFormContents(frm){
	inps=frm.getElementsByTagName('input'); txta=frm.getElementsByTagName('textarea'); ToCookie='';
	for(i=0; i<inps.length; i++){v=inps[i].value; if(v=='' || v=='NA' || v=='0'){continue;} ToCookie+=escape(inps[i].name)+'='+escape(v)+':';}
	for(i=0; i<txta.length; i++){v=txta[i].value; if(v=='' || v=='NA' || v=='0'){continue;} ToCookie+=escape(txta[i].name)+'='+escape(v)+':';}
	document.cookie=frm.id+"="+ToCookie+"; path=/";
	return true;
}
function restoreFormContents(frm){
	cookie=readCookie(frm);
	inps=document.getElementById(frm).getElementsByTagName('input');txta=document.getElementById(frm).getElementsByTagName('textarea');
	if(cookie && frm){
		cookies=cookie.split(':');
		for(i=0; i<cookies.length; i++){
			cook=cookies[i].split('='); cn=unescape(cook[0]); cv=unescape(cook[1]); if(cn==''){continue;}
			for(j=0; j<inps.length; j++){if(inps[j].name==cn){inps[j].value=cv; break;}}
			for(k=0; k<txta.length; k++){if(txta[k].name==cn){txta[k].value=cv; break;}}
		}
	}
}
// Dinamic form changes END!

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars(){
	var vars = [], hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		for(var i = 0; i < hashes.length; i++){
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}
	return vars;
}

// Include
function include(url) {
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript')
  script.setAttribute('src', url);
  document.getElementsByTagName('head').item(0).appendChild(script);
}
// AJAX responseText func
function AJAXInteraction(url, callback) {
	var req = init();
	req.onreadystatechange = processRequest;
	function init(){
		if(window.XMLHttpRequest){return new XMLHttpRequest();}
		else
		if(window.ActiveXObject){return new ActiveXObject("Microsoft.XMLHTTP");}
	}
	function processRequest() {
	  if (req.readyState == 4) {
		if (req.status == 200) {
		  if (callback) callback(req.responseText);
		}
	  }
	}
	this.doGet = function() {
	  req.open("GET", url, true);
	  req.send(null);
	}
}

/* NESHI 1.4.1 - Easy Show/Hide (replacements) Images */
/* TODO: 
		img changes, i mean not div bg;
		ability to pause;
		change pic forcibly;
		fix for different sizes images;
		resize block, if it`s nessessary?
*/
// Author: Snail <snail408@gmail.com>
function NESHI(imgsSrcs, blockId, chTime, firstASfirst){
	if(imgsSrcs.length==null)return;
	fadeSpeed=1600;
	if(isNaN(parseFloat(chTime))){chTime=5;}
	chTime=chTime*1000-fadeSpeed;
	if(!blockId || blockId.length<1){blockId="NESHI";}
	if(isNaN(parseFloat(firstASfirst))){firstASfirst=1;} // if FIRST change image should be like SECOND image in array, else FIRST change will be as 'firstASfirst'
	/*!parametrs finished!*/
	
	var block=$('#'+blockId);
	var face=block.children('div:first');
	var mirror=$(document.createElement('div'));
	block.prepend(mirror);
	
	var total=imgsSrcs.length; var emptyPos=Array();
	if(firstASfirst>total){firstASfirst=1;}
	for(var i=0; i<total; i++){
		if(imgsSrcs[i].length<5){emptyPos.push(i);} // For Clear Empty Elements in Array
		(new Image()).src=imgsSrcs[i]; // PreLoadImages
		if(i==firstASfirst)mirror.css('backgroundImage', 'url('+imgsSrcs[i]+')');
	}
	emptyPos=emptyPos.reverse(); for(var i=0; i<emptyPos.length; i++){imgsSrcs.splice(emptyPos[i], 1);} // Clearing...

	total=imgsSrcs.length; fm=true; imgAct=1;
	NESHI_Loop = setInterval(function(){
		imgAct++;
		if(imgAct==total){imgAct=0;}
		if(fm){
			fm=false;
			face.fadeOut(fadeSpeed, function(){
				mirror.css('z-index', 2);
				$(this).css({'z-index':1, 'opacity':1, 'backgroundImage':'url('+imgsSrcs[imgAct]+')', 'display':'block'});
			});
		}
		else{
			fm=true;
			mirror.fadeOut(fadeSpeed, function(){
				face.css('z-index', 2);
				$(this).css({'z-index':1, 'opacity':1, 'backgroundImage':'url('+imgsSrcs[imgAct]+')', 'display':'block'});
			});
		}
	}, chTime);
}
/* End OF NESHI */
