AllClips=new Object();

function showPreview(obj,event){
	if(!event){event=window.event;}

	// Индикатор hover включен
	obj.hover=true;

	// вырезаем ID клипа
	var id=obj.id.substring(1);

	// если превью уже создавалось - просто отображаем его и выходим из функции
	if(obj.parentNode.getElementsByTagName('pre').length!=0&&obj.hover){
		var pre=obj.parentNode.getElementsByTagName('pre')[0];
		obj.parentNode.className="prw";
		// ложное самоприсвоение, чтобы заставить браузер перерисовать экран
		pre.firstChild.data=pre.firstChild.data;
		return;
	}

	// добавляем в хранилище данных превью всех клипов новый клип
    AllClips["clip"+id]=new Object();

	// определяем как null все необходимые нам для отображения превью переменные
	AllClips["clip"+id].content=new Array();
	AllClips["clip"+id].content[0]=null;
	AllClips["clip"+id].FrWidth=null;
	AllClips["clip"+id].FrHeight=null;
	AllClips["clip"+id].FFamily=null;
	AllClips["clip"+id].FSize=null;
	AllClips["clip"+id].LH=null;
	AllClips["clip"+id].FWeight="normal";
	AllClips["clip"+id].FColor="#00000";
	AllClips["clip"+id].BGcolor="#FFFFFF";



	// Загружаем данные клипа черех динамический JS
	o=document.createElement("script");
	o.type="text/javascript";
	o.src="http://asciimator.net/includes/get_previewPro.php?clip_id="+id;
	document.body.appendChild(o);

	addClass(obj.parentNode, 'loading');
	
	// Предзагрузчик: определяем, определены ли уже в памяти нужные нам переменные
	setTimeout(testLoaded,100);
	function testLoaded(){
		if(!(AllClips["clip"+id].content[0]!=null)){
			setTimeout(testLoaded,100);
		}else{
			insertContent();
		}
	}

	// После загрузки данных - вставляем в пустой контейнер контент и задаем ему оформление
	function insertContent(){
		if (navigator.userAgent.match(/MSIE/) && !navigator.userAgent.match(/Opera/)){
			prw_content=AllClips["clip"+id].content[0].replace(/\n/g,'\n\r');
		}else{
			prw_content=AllClips["clip"+id].content[0];
		}
		var prw=document.createTextNode(prw_content);
		var	pre=document.createElement("pre");
		pre.appendChild(prw);

		//pre.id="pre"+id;
		pre.style.width=AllClips["clip"+id].FrWidth*3/5+"em";
		pre.style.height=AllClips["clip"+id].FrHeight*parseInt(AllClips["clip"+id].LH)/100+"em";
		pre.style.fontFamily=AllClips["clip"+id].FFamily;
		pre.style.fontSize=AllClips["clip"+id].FSize/12+"em";
		pre.style.lineHeight=AllClips["clip"+id].LH;
		pre.style.fontWeight=AllClips["clip"+id].FWeight;
		pre.style.color=AllClips["clip"+id].FColor;
		pre.style.backgroundColor=AllClips["clip"+id].BGcolor;
		

		removeClass(obj.parentNode, 'loading');

		obj.parentNode.appendChild(pre);
		if(obj.hover){
			obj.parentNode.className="prw";
		}else{
			obj.parentNode.className="noprw";
		}
	}

}


function hidePreview(obj){
	obj.hover=false;
	if(obj.parentNode.getElementsByTagName('pre').length!=0){
		obj.parentNode.className="noprw";
	}
}


/* for Tags */
function makeCloud(elem, contrast, scale){
	if(elem){

		var tags = elem.getElementsByTagName('a');

		for(i=0; i<tags.length; i++){
			var num = tags[i].innerHTML.split(')')[0].split('(')[1];
			var fs = scale?num/scale:num/2;
			var c = contrast?contrast:1;
			for(j=0; j<c; j++){
				fs = Math.sqrt(fs);
			}
			tags[i].style.fontSize = fs + 'em';

			var str = tags[i].innerHTML;
			var n = str.search(/\(.+\)/g);
			var title = str.substr(n);
			tags[i].title = title;
				
			tags[i].innerHTML = str.replace(/\(.+\)/g, "");
			
		}
	}
}

/* for User Profile */
function makeSelectors(){
	var date = document.getElementById('bday');
	var month = document.getElementById('bmonth');
	var year = document.getElementById('byear');
	var option;
	var optionData;

	if(date && month && year){
		option = document.createElement('option');
		optionData = document.createTextNode('Day');
		option.value = '0';
		option.appendChild(optionData);
		date.appendChild(option);
		
		for(var i=1; i<=31; i++){
			option = document.createElement('option');
			optionData = document.createTextNode(i);
			option.appendChild(optionData);
			date.appendChild(option);
			option.value = i;
			if(bday_number && parseInt(bday_number) == i){
				option.selected = true;
			}
		}
		
		option = document.createElement('option');
		optionData = document.createTextNode('Month');
		option.value = '0';
		option.appendChild(optionData);
		month.appendChild(option);

		for(var i=1; i<=12; i++){
			option = document.createElement('option');
			optionData = document.createTextNode(i);
			option.appendChild(optionData);
			month.appendChild(option);
			option.value = i;
			if(bmonth_number && parseInt(bmonth_number) == i){
				option.selected = true;
			}
		}

		option = document.createElement('option');
		optionData = document.createTextNode('Year');
		option.value = '0';
		option.appendChild(optionData);
		year.appendChild(option);
		
		for(var i=1920; i<=2020; i++){
			option = document.createElement('option');
			optionData = document.createTextNode(i);
			option.appendChild(optionData);
			year.appendChild(option);
			option.value = i;
			if(byear_number && parseInt(byear_number) == i){
				option.selected = true;
			}
		}
	}
}

/* for ascii2gif */
var ascii2gif_isloaded = false;
function showAscii2Gif(){
	if(matchClass($('ascii2gif_box'),'nodisplay')){
		hideAllOptions();
		removeClass($('ascii2gif_box'),'nodisplay');
		addClass($('ascii2gif_switcher'), 'on');

		if(!ascii2gif_isloaded){
			var head = document.getElementsByTagName('head')[0];
			var link = document.createElement('link');
			link.rel = "StyleSheet";
			link.type = "text/css";
			link.href = "/css/colorPicker.css";
			head.appendChild(link);
			
			var script = document.createElement('script');
			script.type = "text/javascript";
			script.src = "/js/colorPicker.js";
			head.appendChild(script);
			
/*
			link = document.createElement('link');
			link.rel = "StyleSheet";
			link.type = "text/css";
			link.href = "/css/ascii2gif.css";
			head.appendChild(link);
*/			
			script = document.createElement('script');
			script.type = "text/javascript";
			script.src = "/js/ascii2gif.js";
			head.appendChild(script);
			
			ascii2gif_isloaded = true;
		}

	} else {
		showDefaultOptions();
	}

	$('ascii2gif_switcher').blur();

}

/* for player */
function show_player(){
	if(matchClass($('clip_player'), 'nodisplay')){
		hideAllOptions();
		removeClass($('clip_player'),'nodisplay');
		removeClass($('clip_outer'),'nodisplay');
		addClass($('player_switcher'), 'on');

		if(theClip != 'undefined') theClip.clearEvents(); // удаляем onclick c клипа
	
		$('clip_outer').hint = $('clip_outer').title;
		$('clip_outer').title = "";
		$('clip').style.cursor = "default";

	} else {
		showDefaultOptions();
		
		if(theClip != 'undefined') theClip.initEvents(); // возвращаем onclick клипу

		$('clip_outer').title = $('clip_outer').hint;
		$('clip').style.cursor = "crosshair";
	}
	
	$('player_switcher').blur();
}

function hideAllOptions(){
	addClass($('clip_outer'),'nodisplay');
	addClass($('ascii2gif_box'),'nodisplay');
	addClass($('clip_player'),'nodisplay');
	removeClass($('ascii2gif_switcher'), 'on');
	removeClass($('player_switcher'), 'on');
}

function showDefaultOptions(){
	hideAllOptions();
	removeClass($('clip_outer'),'nodisplay');
}


/* Show ACIImation onair */
var ClipsOnAir = {};
function showAnimation(id){
	if(!ClipsOnAir['clip' + id]){
		ClipsOnAir['clip' + id] = new ASCIImation('clip' + id, id);
	} else {
		ClipsOnAir['clip' + id].stop();
		ClipsOnAir['clip' + id] = null;

		var clip = $('clip' + id);
		clip.innerHTML = "&nbsp;";
		removeClass(clip.parentNode, 'loaded');
	}
}
