var dane = new Array();
/**
* Slango.pl
* Virtual Input Script
* All rights reserved.
*/
function init(){//inicjuje inputa
	var temp_img= new Image();
	temp_img.src="/img/kursor.png";
	temp_img.src="/img/kursor_off.png";
	temp_img.src="/img/alfabet.png";
	
	$('#napis').removeAttr('disabled');
	
	dane.actual = new Array();
	dane.keys = new Array();
	dane.container = new Array();
	dane.timer = null;
	dane.timer2= null;
	dane.debug = false;
	
	dane.container.max = 0;
	dane.container.id = new Array();
	
	dane.keys.shift = 0;
	dane.keys.alt = 0;
	
	dane.actual.chars = 0;
	dane.actual.lines = 1;
	dane.actual.cursor = 0;
	dane.actual.focus = 0;
	dane.actual.container = 0;
	dane.actual.iid = -1;
	
	dane.button = new Array();
	dane.button.left = $('#button').offset().left;
	dane.button.top  = $('#button').offset().top;
	
	//first container (0)
	var cid = addContainer(1,0);
	$('#slango').append(dane.container.id[cid].obj);
	
	//cursor_0
	var temp = $("<div/>");
	temp.attr('id','cursor_0')
		.attr('class','cur_holder')
		.click(setcursor);
	$('#'+dane.container.id[cid].id).append(temp);
}
function s_reset(){//czysci wirtualnego inputa
	$('#slango').animate({opacity: 0.01}, 300,'linear',function(){
		$('#slango>div').remove();
		cloud_extend(1);
		$('#slango').css('opacity','1');
		init();
		setfocus();
	});
	$('#button').fadeIn("fast");
	$('#slango_message').fadeOut(300, function(){$('#menu_emots').fadeIn('normal');});
}
function d(v){//debug
	if(dane.debug)alert(v);
}
function addContainer(init,isspace){//dodaj kontener na koncu
	var id = dane.container.max;
	if(init!=1) id++;
	if(isspace || init == 1)
		isspace =1;
	else
		isspace =0;
	dane.container.id[id] = new Array();
	dane.container.id[id].id = 'cont_'+id;
	dane.container.id[id].count = 0;
	dane.container.id[id].pos = 0;
	dane.container.id[id].chars = new Array();
	dane.container.id[id].space = isspace;
	dane.container.id[id].word = '';
	dane.container.id[id].image = 0;

	var temp = $("<div/>");
	temp.attr('id', dane.container.id[id].id)
		.attr('class','word_container');
	dane.container.id[id].obj = temp;
	dane.container.max = id;
	dane.actual.container = id;
	if(init!=1){
		$('#cont_'+(id-1)).after(temp);
	}
	return id;
}
function insertContainerAt(id, isspace){
	if(isspace)
		isspace =1;
	else
		isspace =0;
	var t = new Array();
	t.id = 'cont_100';
	t.count = 0;
	t.pos = 0;
	t.chars = new Array();
	t.space = isspace;
	t.word = '';
	t.image = 0;
	
	dane.container.id.insertat(t, id);

	var temp = $("<div/>");
	temp.attr('id', dane.container.id[id].id)
		.attr('class','word_container');
	dane.container.id[id].obj = temp;
	
	$(dane.container.id[id].id).before(temp);
	sortconts();
	
	dane.actual.container = id;
	return id;
}
function joinContainers(id_to, id_from){
	$('#'+dane.container.id[id_from].id+' >div').each(function(){
		dane.container.id[id_to].obj.append(this);
	});
	dane.container.id[id_to].word += dane.container.id[id_from].word;
	removeContainer(id_from, 1);
	sortcursors();
}
function removeContainer(cont_id, char_flag){ //usuwa kontener cont_id / char_flag = 0 => nie odejmuj liczby znakow
	if(!char_flag) dane.actual.chars -= dane.container.id[cont_id].count;
	dane.container.id[cont_id].obj.remove();
	dane.container.id.remove(cont_id);
	dane.container.max--;
	sortconts();
}
function splitContainer(id,pos){
	insertContainerAt(id+1);
	dane.container.id[id].obj.after(dane.container.id[id+1].obj);
	sortconts();
	dane.container.id[id].chars = dane.container.id[id].chars.slice(0,pos);
	var j = 0;
	$('#'+dane.container.id[id].id+' >div').each(function(i){
		if(i>=2*pos){
		dane.container.id[id+1].obj.append(this);
		}
	});
	dane.container.id[id+1].word = dane.container.id[id].word.substring(pos);
	dane.container.id[id].word = dane.container.id[id].word.substring(0,pos);
	sortconts();
	sortcursors();
}
function insertChar(code){//wstawia znak do aktualnego containera
	if(dane.container.max==0) addContainer();
	if(dane.actual.container==0){
		if(dane.container.id[1].image==1){
			var cid = insertContainerAt(1);
			dane.container.id[0].obj.after(dane.container.id[cid].obj);
			sortconts();
		}
		dane.actual.container = 1;
		dane.container.id[1].pos=0;
	}
	var cont_id = dane.actual.container;
	if(dane.container.id[cont_id].space==1){
		if(cont_id==dane.container.max){//ostatni kontener
			var cid = addContainer(0);
			sortconts();
			cont_id = dane.actual.container;
		}
		else{//kontener w srodku
			if(dane.container.id[cont_id+1].space==1){//nastepna jest spacja?
				var cid = insertContainerAt(cont_id+1);
				$('#'+dane.container.id[cid-1].id).after(dane.container.id[cid].obj);
				sortconts();
			} else { // dodajemy do nast kontenera
				dane.actual.container = cont_id+1;
				dane.container.id[cont_id+1].pos=0;
			}
		}
	cont_id = dane.actual.container;
	}
	// **********sprawdzanie przejscia do 2giej linni
	var in_width = dane.container.id[cont_id].obj.width();
	if(in_width+font[code][1]>575) return false; //1 container wiekszy niz szerokosc pola? XD
	
	in_width = dane.container.id[dane.container.max].obj.offset().left + dane.container.id[dane.container.max].obj.width();
	var in_limit = $('#slango').offset().left+$('#slango').width()-7;
	
	if(dane.actual.lines==2 && (in_width+font[code][1])>=in_limit){
		if(dane.container.id[dane.container.max].obj.offset().top!=$('#slango').offset().top){ // jesli nie w pierwszej linni
			return false;
		}
	}
	// **************************************************
	var cont_pos = dane.container.id[cont_id].pos;

	var temp = $("<div/>");
	temp.attr('class','character');
	temp.attr('id', 'txt_'+cont_id+'_'+(100));
	temp.attr('style','background-position: -'+font[code][0]+'px 0px; width: '+font[code][1]+'px;');
	//wstaw
	var t_word = dane.container.id[cont_id].word;
	if(dane.container.id[cont_id].count==cont_pos){// na koniec
		$('#cont_'+cont_id).append(temp);
		t_word+=font[code][2];
	} else if(cont_pos==0){// na poczatek
		$('#cont_'+cont_id).prepend(temp);
		t_word = font[code][2] + dane.container.id[cont_id].word;
	} else { // przed kolejny element
		$('#txt_'+cont_id+'_'+(cont_pos)).before(temp);
		t_word = t_word.substring(0,cont_pos)+font[code][2]+t_word.substring(cont_pos);
	}
	dane.container.id[cont_id].word = t_word;
	//sortuj znaki
	sortchars(cont_id);
	//dodaj cursor:
	temp.after(makecursor(100));
	sortcursors();
	//ustaw wskazniki
	dane.actual.chars++;
	clearcursor();
	dane.actual.cursor++;
	slango_autocomplete(dane.actual.container);
}
function makecursor(id){ //utworz kursor
	var temp = $("<div/>");
	temp.attr('id','cursor_'+id);
	temp.attr('class','cur_holder');
	temp.click(setcursor);
	return temp;
}
function clearcursor(){ //usun zaznaczenie kursora
	$('#cursor_'+dane.actual.cursor).attr('class','cur_holder');
}
function sortcursors(){//sortuje kursory
	clearcursor();
	$('#slango > * > div[id^=\'cursor_\']').each(function(i){
		this.id = 'cursor_'+i;
	});
}
function sortconts(){//sortuje kontenery
	var max = 0;
	$('#slango > div[id^=\'cont_\']').each(function(i){
		this.id = 'cont_'+i;
		max=i;
	});
	dane.container.max = max;
	for(var i=0;i<=max;i++){
		dane.container.id[i].id = dane.container.id[i].obj.attr('id');
		sortchars(i);
	}
}
function sortchars(container){ //sortuje znaki w danym kontenerze
	var s = '#slango > #cont_'+container+' > div[id^=\'txt_\']';
	var count = 0;
	$(s).each(function(i){
		this.id = 'txt_'+container+'_'+i;
		dane.container.id[container].chars[i]=this.id;
		count++;
	});
	dane.container.id[container].count = count;
}
function setfocus(){//ustaw focus na inputa (+ przenies kursor na koniec?)
   if($('#napis').attr('disabled')) return;
   $('#napis').focus();
   dane.actual.focus=1;
   //key_end();
}
function blink(){//miga kursorem
	var id='#cursor_'+dane.actual.cursor; //id kursora
	
	if($(id).attr('class')=='cur_normal' && dane.actual.focus==1){
		$(id).attr('class', 'cur_blink');
	} else {
		$(id).attr('class', 'cur_normal');
	}
	if($(id).attr('class')=='cur_normal' && dane.actual.focus==0){
		$(id).attr('class', 'cur_blink');
	}
}
function setcursor(){ //przemieszcza kursor
	var data = this.id.split('_');
	clearcursor()
	dane.actual.cursor = parseInt(data[1]);
	$('#cursor_'+dane.actual.cursor).attr('class', 'cur_normal');
	correctpos();
	setfocus();
}
function correctpos(){//ustawia prawidlowe dane dla pozycji kursora
	var parent = $('#cursor_'+dane.actual.cursor).parent().attr('id');
	var s = '#'+parent+' > div[id^=\'cursor_\']';
	var t = 0;
	$(s).each(function(e){
		if(this.id=='cursor_'+dane.actual.cursor){
			t = e+1;
		}
	});
	if(t==0) d('Nie znaleziono kursora!');
	else {
		dane.actual.container = parseInt(parent.split('_')[1]);
		dane.container.id[dane.actual.container].pos = t;
	}
	cloud_check();
}
function key_backspace(){ //obsluga backspace
	var cont_id = dane.actual.container;
	var pos = dane.container.id[cont_id].pos;
	if (cont_id==0) return false; //nie pracujemy na poczatku
	
	if (pos==dane.container.id[cont_id].count){//na koncu containera
		var join = false;
		var space1 = 0, space2 = 0, space3 = 0, tend = 1;
		space1 = dane.container.id[cont_id-1].space;
		space2 = dane.container.id[cont_id].space;
		if(cont_id<dane.container.max){//nie na koncu tekstu
			tend = 0;
			space3 = dane.container.id[cont_id+1].space;
		}
		if(space1==0 && space2==1 && space3==0 && tend==0) join = true;
		
		if(pos==0){//pusty container 
			removeContainer(cont_id);
			if(join) joinContainers(cont_id-1,cont_id);
			dane.actual.cursor--;
			sortcursors();
			correctpos();
		} else {
			$('#cursor_'+dane.actual.cursor).remove();
			$('#'+dane.container.id[cont_id].chars[pos-1]).remove();
			dane.container.id[cont_id].chars.remove(-1);//usun ustatni element
			dane.container.id[cont_id].count--;
			if(space2==0){
				var t_word = dane.container.id[cont_id].word;
				t_word = t_word.substring(0,t_word.length-1);
				dane.container.id[cont_id].word = t_word;
			}
			dane.actual.cursor--;
			dane.actual.chars--;
			sortcursors();
			if(pos==1){// usuwamy jedyny znak
				removeContainer(cont_id);
				if(join) joinContainers(cont_id-1,cont_id);
			} else {// sa jeszcze znaki - sortujemy
				sortchars(cont_id);
			}
		}
		
	} else { // gdzies w srodku
		$('#cursor_'+dane.actual.cursor).remove();
		$('#'+dane.container.id[cont_id].chars[pos-1]).remove();
		dane.container.id[cont_id].chars.remove(pos-1);
		dane.container.id[cont_id].count--;
		t_word = dane.container.id[cont_id].word;
		t_word = t_word.substring(0,pos-1)+t_word.substring(pos);
		dane.container.id[cont_id].word = t_word;
		dane.actual.cursor--;
		dane.actual.chars--;
		sortcursors();
		sortchars(cont_id);
	}
	correctpos();
	slango_autocomplete(dane.actual.container);
	return false;
}
function key_delete(){//obsluga delete
	var cont_id = dane.actual.container;
	var pos = dane.container.id[cont_id].pos;
	if(cont_id==0) pos = 0;
	
	if(pos==dane.container.id[cont_id].count && cont_id==dane.container.max)
		return false; //po co delete na koncu?
	
	if (pos==dane.container.id[cont_id].count){//na koncu containera
		if(dane.container.id[cont_id+1].space==1){//kolejny kontener to spacja?
			if(dane.container.id[cont_id].space==1){//jestesmy w spacji, kasujemy nastepna spacje
				$('#cursor_'+(dane.actual.cursor+1)).remove();
				sortcursors();
				removeContainer(cont_id+1);
			}else{//jestesmy w kontenerze tekstowym
				$('#cursor_'+(dane.actual.cursor+1)).remove();
				sortcursors();
				removeContainer(cont_id+1);
				if(dane.container.max!=cont_id){//jest jeszcze kontener po prawej
					if(dane.container.id[cont_id+1].space==0){
						joinContainers(cont_id, cont_id+1);//joinujemy 2 kontenery tekstowe
					}
				}
			}
		} else {//kolejny kontener to pole tekstowe
			if(dane.container.id[cont_id].space==1){//jestesmy w spacji
				$('#cursor_'+(dane.actual.cursor+1)).remove();
				$('#'+dane.container.id[cont_id+1].chars[0]).remove();
				dane.container.id[cont_id+1].chars.remove(0);
				dane.container.id[cont_id+1].count--;
				dane.container.id[cont_id+1].word = dane.container.id[cont_id+1].word.substring(1);
				dane.actual.chars--;
				sortcursors();
				if(dane.container.id[cont_id+1].count==0){
					removeContainer(cont_id+1);
				} else {
					sortchars(cont_id+1);
				}
			}
		}
	} else { //gdzies w srodku
		$('#cursor_'+(dane.actual.cursor+1)).remove();
		$('#'+dane.container.id[cont_id].chars[pos]).remove();
		dane.container.id[cont_id].chars.remove(pos);
		dane.container.id[cont_id].count--;
		var t_word = dane.container.id[cont_id].word;
		t_word = t_word.substring(0,pos)+t_word.substring(pos+1);
		dane.container.id[cont_id].word = t_word;
		dane.actual.chars--;
		sortcursors();
		sortchars(cont_id);
	}
	correctpos();
	slango_autocomplete(dane.actual.container);
	return false;
}
function key_home(){  //obsluga home
	clearcursor();
	dane.actual.cursor = 0;
	correctpos();
	slango_ac_clear();
	return false;
}
function key_end(){   //obsluga end
	clearcursor();
	dane.actual.cursor = dane.actual.chars;
	correctpos();
	slango_ac_clear();
	return false;
}
function key_left(){  //obsluga lewo
	if(dane.actual.cursor==0) return false;
	clearcursor();
	dane.actual.cursor--;
	correctpos();
	slango_ac_clear();
	return false;
}
function key_right(){ //obsluga prawo
	if(dane.actual.cursor==dane.actual.chars) return false;
	clearcursor();
	dane.actual.cursor++;
	correctpos();
	slango_ac_clear();
	return false;
}
function key_up(){
	var id='#cursor_'+dane.actual.cursor; //id kursora
	if($(id).offset().top<200) return key_home();
	var pl = $(id).offset().left;

	for(var i = 0; i<dane.actual.chars; i++){
		var obj = $('#cursor_'+i);
		if(obj.offset().top>=200){
			if(i-1<0) $('#cursor_'+(i-1)).click();
			break;
		}
		var pl1 = obj.offset().left;
		if(pl1<pl){
			var obj2 = $('#cursor_'+(i+1));
			if(obj2.offset().top>=200){ // aktualny (obj) jest szukanym
				obj.click();
				break;
			}
			var pl2 = obj2.offset().left;
			if(pl2>pl){//mam obj i obj2 miedzy ktorymi jest aktualny
				if(pl2-pl>pl-pl1){
					obj.click();
					break;
				}else{
					obj2.click();
					break;
				}
			}
		}
	}
	slango_ac_clear();
	return false;
}
function key_down(){
	var id='#cursor_'+dane.actual.cursor; //id kursora
	if(dane.actual.lines==1 || $(id).offset().top>200) return key_end();
	var pl = $(id).offset().left;

	for(var i = 0; i<dane.actual.chars; i++){
		var obj = $('#cursor_'+i);
		if(obj.offset().top<200){
			continue;
		}
		var pl1 = obj.offset().left;
		if(pl1<pl){
			if((i+1)>dane.actual.chars){ // aktualny (obj) jest szukanym
				obj.click();
				break;
			}
			var obj2 = $('#cursor_'+(i+1));
			var pl2 = obj2.offset().left;
			if(pl2>pl){//mam obj i obj2 miedzy ktorymi jest aktualny
				if(pl2-pl>pl-pl1){
					obj.click();
					break;
				}else{
					obj2.click();
					break;
				}
			}
		}else{
			var obj2 = $('#cursor_'+(i-1));
			if(obj2.offset().top<200){
				$('#cursor_'+(i-1)).click();
				break;
			}
		}
	}
	slango_ac_clear();
	return false;
}
function key_space(){
	if(dane.container.max==0 || dane.actual.container==0) return false;
	var cont_id = dane.actual.container;
	if(dane.container.id[cont_id].space==1 && dane.container.id[cont_id].image==0) return false;
	var pos = dane.container.id[cont_id].pos;
	// **********sprawdzanie przejscia do 2giej linni
	var in_width = dane.container.id[dane.container.max].obj.offset().left + dane.container.id[dane.container.max].obj.width();
	var in_limit = $('#slango').offset().left+$('#slango').width()-7;
	if(dane.actual.lines==2 && (in_width+font[32][1])>=in_limit){
		if(dane.container.id[dane.container.max].obj.offset().top!=$('#slango').offset().top){ // jesli nie w pierwszej linni
			return false;
		}
	}
	// **************************************************
	if(pos==dane.container.id[cont_id].count){//na koncu kontenera
		if(dane.actual.container==dane.container.max){//na koncu tekstu
			var id = addContainer(0,1);
			sortconts();
			var temp = $("<div/>");
			temp.attr('class','character');
			temp.attr('id', 'txt_'+id+'_0');
			temp.attr('style','background-position: 0 0; width: '+font[32][1]+'px;');
			$('#cont_'+id).append(temp);
			dane.container.id[id].pos = 1;
			dane.container.id[id].chars[0] = temp.attr('id');
			dane.container.id[id].count = 1;
			dane.container.id[id].obj.append(makecursor(100));
			dane.actual.chars++;
			sortcursors();
			clearcursor();
			slango_parse(id-1);
			dane.actual.cursor++;
			correctpos();
		}else{//w srodku
			var id = insertContainerAt(cont_id+1,1);
			$('#'+dane.container.id[id-1].id).after(dane.container.id[id].obj);
			sortconts();
			var temp = $("<div/>");
			temp.attr('class','character');
			temp.attr('id', 'txt_'+id+'_0');
			temp.attr('style','background-position: 0 0; width: '+font[32][1]+'px;');
			$('#cont_'+id).append(temp);
			dane.container.id[id].pos = 1;
			dane.container.id[id].chars[0] = temp.attr('id');
			dane.container.id[id].count = 1;
			dane.container.id[id].obj.append(makecursor(100));
			dane.actual.chars++;
			sortcursors();
			clearcursor();
			slango_parse(id-1);
			dane.actual.cursor++;
			correctpos();
		}
	}else{//w srodku kontenera
		splitContainer(cont_id,pos);
		var id = insertContainerAt(cont_id+1,1);
		$('#'+dane.container.id[id-1].id).after(dane.container.id[id].obj);
		sortconts();
		var temp = $("<div/>");
			temp.attr('class','character');
			temp.attr('id', 'txt_'+id+'_0');
			temp.attr('style','background-position: 0 0; width: '+font[32][1]+'px;');
		$('#cont_'+id).append(temp);
		dane.container.id[id].pos = 1;
		dane.container.id[id].chars[0] = temp.attr('id');
		dane.container.id[id].count = 1;
		dane.container.id[id].obj.append(makecursor(100));
		dane.actual.chars++;
		sortcursors();
		clearcursor();
		slango_parse(id+1);
		slango_parse(id-1);
		dane.actual.cursor++;
		correctpos();
		
	}
	slango_autocomplete(dane.actual.container);
	return false;
}
function key_dummy(name){
	d(name);
	return false;
}
function slango_parse(container){
	if(container) var cont_id=container;
	else var cont_id = dane.actual.container;
	if(dane.container.id[cont_id].count==0) return false;
	var word = dane.container.id[cont_id].word;
	word = word.toLowerCase();
	var w=-1;
	for(var i=0;i<words.length;i++){
		if(word==words[i][0]) w = i;
	}
	if(w==-1)return false;
	
	var selector = '#'+dane.container.id[cont_id].id+' [id^=\'cursor_\']:first';
	dane.actual.cursor = parseInt($(selector).attr('id').split('_')[1]);
	dane.actual.chars  -= dane.container.id[cont_id].count-1;
	dane.container.id[cont_id].count = 1;
	dane.container.id[cont_id].pos = 1;
	dane.container.id[cont_id].chars = new Array('txt_'+cont_id+'_0');
	dane.container.id[cont_id].image = 1;
	dane.container.id[cont_id].space = 1;
	
	var src = words[w][1];
	
	var img = $("<div/>");
	img.attr('id','txt_'+cont_id+'_0');
	img.attr('class','img_slango');
	img.css('background-image','url('+src+')');
	
	$('#temp_wc').text(word.replace('_',' '));
	
	var podpis = $('<div/>');
	podpis.attr('class','podpis');
	podpis.text(word.replace('_',' '));
	if($('#temp_wc').width()<=50)
		podpis.css('width','50px');
	else
		podpis.css('width',$('#temp_wc').width()+'px');
	
	img.append(podpis);
	
	var cur = makecursor(100);

	dane.container.id[cont_id].obj.empty();
	dane.container.id[cont_id].obj.append(img);
	dane.container.id[cont_id].obj.append(cur);
	sortcursors();
	correctpos();
	slango_ac_clear();
}
function slango_emot(word){//dodaj emotke do inputa
	$('#napis').focus();
	var cont_id = dane.actual.container;
	var pos = dane.container.id[cont_id].pos;
	// **********sprawdzanie przejscia do 2giej linni
	var in_width = dane.container.id[dane.container.max].obj.offset().left + dane.container.id[dane.container.max].obj.width();
	var in_limit = $('#slango').offset().left+$('#slango').width()-7;
	if(dane.actual.lines==2 && (in_width+50)>=in_limit){
		if(dane.container.id[dane.container.max].obj.offset().top!=$('#slango').offset().top){ // jesli nie w pierwszej linni
			return false;
		}
	}
	// **************************************************
	if(pos==dane.container.id[cont_id].count){//na koncu kontenera
		if(dane.actual.container==dane.container.max){//na koncu tekstu
			var id = addContainer(0,1);
			sortconts();
			var temp = $("<div/>");
			temp.attr('class','img_slango');
			temp.attr('id', 'txt_'+id+'_0');
			$('#cont_'+id).append(temp);
			dane.container.id[id].pos = 1;
			dane.container.id[id].chars[0] = temp.attr('id');
			dane.container.id[id].count = 1;
			dane.container.id[id].obj.append(makecursor(100));
			dane.container.id[id].word = word;
			dane.actual.chars++;
			sortcursors();
			clearcursor();
			slango_parse(id);
		}else{//w srodku
			var id = insertContainerAt(cont_id+1,1);
			$('#'+dane.container.id[id-1].id).after(dane.container.id[id].obj);
			sortconts();
			var temp = $("<div/>");
			temp.attr('class','img_slango');
			temp.attr('id', 'txt_'+id+'_0');
			$('#cont_'+id).append(temp);
			dane.container.id[id].pos = 1;
			dane.container.id[id].chars[0] = temp.attr('id');
			dane.container.id[id].count = 1;
			dane.container.id[id].obj.append(makecursor(100));
			dane.container.id[id].word = word;
			dane.actual.chars++;
			sortcursors();
			clearcursor();
			slango_parse(id);
		}
	}else{//w srodku kontenera
		splitContainer(cont_id,pos);
		var id = insertContainerAt(cont_id+1,1);
		$('#'+dane.container.id[id-1].id).after(dane.container.id[id].obj);
		sortconts();
		var temp = $("<div/>");
		temp.attr('class','img_slango');
		temp.attr('id', 'txt_'+id+'_0');
		$('#cont_'+id).append(temp);
		dane.container.id[id].pos = 1;
		dane.container.id[id].chars[0] = temp.attr('id');
		dane.container.id[id].count = 1;
		dane.container.id[id].obj.append(makecursor(100));
		dane.container.id[id].word = word;
		dane.actual.chars++;
		sortcursors();
		clearcursor();
		slango_parse(id+1);
		slango_parse(id-1);
		slango_parse(id);
	}
	return false;
}
function cloud_extend(mode){
	if(mode==2){
		$('#content_top').css('background-image', 'url(/img/content_top_formularz2.png)');
		$('#content_back').css('background-image', '');
		$('#content_back').css('height', '263px');
		$('#content_top').css('height', '263px');
		dane.actual.lines=2;
		$('#button_blank').css('top','-50px');
	} else {
		$('#content_back').css('background-image', 'url(/img/content_top_formularz.png)');
		$('#content_top').css('background-image', '');
		$('#content_back').css('height', '175px');
		$('#content_top').css('height', '175px');
		dane.actual.lines=1;
		$('#button_blank').css('top','0px');
	}
}
function cloud_check(){
	var mode = 2;
	var itop = dane.container.id[dane.container.max].obj.offset().top!=$('#slango').offset().top;
	if($('#content_top').css('height')=='175px') mode = 1;
	     if( itop == true  && mode == 1) cloud_extend(2);
	else if( itop == false && mode == 2) cloud_extend(1);
}
function slango_autocomplete(cont_id){ //sprawdzanie dostępnych słów podczas pisania
	slango_ac_clear();
	if(dane.container.id[cont_id].count < 3) return;
	var word = dane.container.id[cont_id].word.toLowerCase();
	var result = Array();
	var rcount = 0;
	
	for(var i=0; i<words.length; i++){
		if(words[i][0].indexOf(word) == 0){
			result[rcount] = words[i][0];
			rcount++;
			if(rcount > 4) {break};
		}
	}
	if(rcount==0) return;
	
	for(var i=0;i<rcount;i++){
		var n = $('<div/>');
		n.attr('id','acomplete_'+i);
		n.attr('class','acomplete');
		n.attr('word',result[i]);
		n.text(result[i]);
		n.click(function(){
			slango_selectauto(this);
		});
		$('#slango_autocomplete').append(n);
	}
}
function slango_ac_clear(){
	var t = $("#slango_autocomplete");
	$('*',t).remove();
}
function slango_selectauto(o){
	var word = $(o).attr('word');
	dane.container.id[dane.actual.container].word = word;
	slango_parse(dane.actual.container);
	var t = $("#slango_autocomplete");
	$('*',t).remove();
	setfocus();
}
function slango_send(){
	if(!$('#napis').attr('disabled')){
		if(dane.actual.chars==0)return;
		
		var word = '';
		for(var i=1;i<=dane.container.max;i++)
			word += dane.container.id[i].word + ' ';
		word = word.replace(/^\s+|\s+$/g, '');
		if(word=='') return;
			
		$('#napis').attr('disabled','disabled');
		dane.actual.focus=0;
		$('#button').fadeOut("normal");
		$('#slango').animate({opacity: 0.4}, 1000);
		
		word = Base64.encode(word);
		dane.actual.oldtext = word;
		$.get('/ajax/gen1', {word: word}, slango_resp1, 'text');
		return false;
	}
}
function slango_resp1(data, textStatus){
	if(textStatus=='success'){
		if(data=='666') return goto_login();
		var resp = data.split('^^^');
		dane.actual.iid = parseInt(resp[0]);
		var temp=$('#slango_message');
		if(temp.length == 0){
			temp = $('<div/>');
			temp.html(resp[1]);
			temp.attr('class', 'slango_message');
			temp.attr('id', 'slango_message');
			temp.hide();
			temp.appendTo('#slango_menu');
		}else{
			temp.html(resp[1]);
			temp.hide();			
		}
		
		swfobject.embedSWF('/img/ani1.swf','swf_ani1','40','40','8.0.0');
		$('#menu_emots').fadeOut(1000, function(){temp.fadeIn('slow');});
		$.get('/ajax/genspawn', {id: dane.actual.iid}, slango_resps, 'text');
	}
}
function slango_resp2(data, textStatus){
	if(textStatus=='success'){
		if(data=='666') return goto_login();
		var resp = data.split('^^^');
		var state = parseInt(resp[0]);
		if(state==1){//ok
			clearInterval(dane.timerr);
			var uri = resp[1];
			var t_row = $('<div/>');
			t_row.attr('class', 'slango_last_row');
			t_row.hide();
			var t_img = $('<img/>');
			t_img.load(function(i){
				imgl_vc(this);
			});
			t_img.attr('class','slango_last_img');
			t_img.attr('src', uri);
			var t_desc = $('<div/>');
			t_desc.attr('class','slango_last_links');
			t_desc.html(resp[2]);
			var t_br = $('<br/>');
			t_br.attr('clear','all');
			var hrbreak = $('<div/>');
			hrbreak.attr('class','hrbreak');
			hrbreak.prependTo('#slango_last');
			
			t_row.append(t_img);
			t_row.append(t_desc);
			t_row.append(t_br);
			t_row.prependTo('#slango_last');
			
			$('#slango_message').html('Gotowe.<br /><div class="ok_button" onclick="s_reset();">&nbsp;</div>');
			t_row.slideDown();
		}
	}
}
function slango_resps(data, textStatus){
	if(textStatus=='success'){
		if(data=='666') return goto_login();
		if(data=='0')
			dane.timerr = setInterval('slango_ajaxcheck()',3000);
	}
}
function slango_ajaxcheck(){
	$.get('/ajax/gen2', {id: dane.actual.iid}, slango_resp2, 'text');
}
function goto_login(){

	var temp = $('#slango_message');
	if(temp.length==0){
		temp = $('<div/>');
		temp.attr('class', 'slango_message');
		temp.attr('id', 'slango_message');
		temp.hide();
		temp.appendTo('#slango_menu');
		$('#menu_emots').fadeOut(1000, function(){temp.fadeIn('slow');});
	}
	setcookie('oldtext',dane.actual.oldtext);
	temp.html('Aby skorzystać z serwisu musisz <a href="/login" title="Wbij na konto">wbić na konto</a>!');
}
function imgl_vc(o){ //centruj w pionie opisy obrazkow(slangow)+opcje
	var roz = $(o).height();
	$('.slango_last_links',$(o).parent()).css('margin-top',(roz/2)-37+'px');
	
	var options = $('<div/>');
	options.attr('class','options');
	options.css('top', $(o).parent().offset().top+'px');
	options.appendTo($(o).parent());
    $(o).parent().bind("mouseenter",function(o){
		//$('.options',this).fadeIn('fast');
    }).bind("mouseleave",function(o){
		//$('.options',this).fadeOut('fast');
    });

	$(o).contextMenu('myMenu1', {
	  menuStyle: {
        width: '150px'
      },
	  onShowMenu: function(e, menu) {
		$('li',menu).mouseover( function() {
			if(this.id=='delete') return true;
			if(this.id=='direct'){
				clip.setText($(e.target).attr('src'));
			} else if(this.id=='htmlcp'){
				clip.setText($('.slango_last_links>.input_pole>.input_srodek>input[name^=\'html_\']',$(e.target).parent()).attr('value'));
			} else if(this.id=='bbccp'){
				clip.setText($('.slango_last_links>.input_pole>.input_srodek>input[name^=\'bbc\']',$(e.target).parent()).attr('value'));
			}
			else clip.setText( 'error' );
			if (clip.div) {
				clip.receiveEvent('mouseout', null);
				clip.reposition(this);
			}
			else clip.glue(this);
			clip.receiveEvent('mouseover', null);
			return true;
		} );
        return menu;
      },
      bindings: {
        'direct': function(t) {
          //alert('doschowka');
        },
        'htmlcp': function(t) {
		  //alert('html');
        },
        'bbccp': function(t) {
          //alert('bbc');
        },
        'delete': function(t) {
          alert('Brak');
        }
      }
    });
}
$(function(){ // na starcie
	init(); //inicjuj

	dane.timer = setInterval('blink()',750); //miganie kursora
	setfocus();
	
	$('#slango').click(setfocus);
	
	$(document).keydown(function(event){
		if (event.keyCode == 8) {
			return false;
		}
	});
	
	$('#napis').keyup(function (e){ //keyup do zerowania flag shift i alt
		if(e.which==16){
			dane.keys.shift = 0;
			return true;
			}
		if(e.which==18 || e.which==17){
			dane.keys.alt = 0;
			return true;
			}
		return false;
	});
	$('#napis').keydown(function(e){ //lapanie klawiszy
		var kod = e.which;
		
		if(kod==16){ //shift
			dane.keys.shift = 1;
			return true;
		}
		if(kod==18){ //alt
			dane.keys.alt = 1;
			return true;
		}
		if(kod==116) return true; //F5 - refresh
		
		// *** Klawisze specjalne ***
		if (kod == 32) return key_space();
		if (kod == 13) return slango_parse();
		if (kod == 8 ) return key_backspace();
		if (kod == 46) return key_delete();
		if (kod == 36) return key_home();
		if (kod == 35) return key_end();
		if (kod == 37) return key_left();
		if (kod == 39) return key_right();
		if (kod == 38) return key_up();
		if (kod == 40) return key_down();
		// *** koniec klawiszy specjalnych ***
		
		// *** Litery i symbole ***
		var ckod = 0;
		
		if(dane.keys.shift==0 && dane.keys.alt==0 && (kod>=65 && kod<=90) ) ckod=kod+200; //(kody od 269 do 290)
		if(dane.keys.shift==0 && dane.keys.alt==1 && (kod>=65 && kod<=90) ) ckod=kod+250; //(kody od 315 do 340)
		if(dane.keys.shift==1 && dane.keys.alt==0 && (kod>=65 && kod<=90) ) ckod=kod+000; //(kody od 069 do 090)
		if(dane.keys.shift==1 && dane.keys.alt==1 && (kod>=65 && kod<=90) ) ckod=kod+300; //(kody od 365 do 390)
		
		if(dane.keys.shift==0 && dane.keys.alt==0 && (kod>=42 && kod<=61) ) ckod=kod+000; //(kody od 048 do 061)
		if(dane.keys.shift==1 && dane.keys.alt==0 && (kod>=48 && kod<=61) ) ckod=kod+100; //(kody od 148 do 161)
		
		if(dane.keys.shift==0 && dane.keys.alt==0 && (kod>=186 && kod<=223) ) ckod=kod+000; //(kody od 186 do 223)
		if(dane.keys.shift==1 && dane.keys.alt==0 && (kod>=186 && kod<=223) ) ckod=kod+220; //(kody od 406 do 443)
		
		if(dane.keys.shift==0 && dane.keys.alt==0 && (kod>=96 && kod<=111) ) ckod=kod+000; //(kody od 096 do 111)
		if(dane.keys.shift==1 && dane.keys.alt==0 && (kod>=96 && kod<=111) ) ckod=kod+350; //(kody od 446 do 461)
		
		if(ckod==0)return false;
		
		if(typeof(font[ckod])=="undefined") return false; //nie mamy takiego znaku

		//Wypisz znak na input
		insertChar(ckod);
		correctpos();
		return false;
		});

	$('#button').mousemove(function(e){
		/****wyslij****/
		var r = 51;
		var a = (dane.button.left + r)-e.pageX;
		var b = (dane.button.top + r)-e.pageY;
		var c = a*a+b*b;
		var l = Math.floor(Math.sqrt(c));
		
		if(l>41){
			$('#button').css('background-position','0 0');
		}else{
			$('#button').css('background-position','0 -99px');
		}
		});
		/**************/
	});
