// 
var STATIC_HOST;
var maxSizeWord = '';
var maxSizeWordHtml = '';
var maxcountSub = '';
var maxcountExp = '';
var dictMaxCountSub = '';
var dictMaxCountExp = '';
var divAll= '';

var showError = 0;

var wordLeft= new Array();
var wordCenter= new Array();
var wordRight= new Array();
var wordValue = new Array();
var wordStat = new Array();
var wordId = new Array();

var wordSep = '#!#';
var contectWord = false;
var urlHost = '';

var voiceID = 0;
var page = 1;
var countPage=4;
var pMax=5;

var userTester = 0;


// testowe nowego slowa dodawanego 
function testND(divID){

	var text = jQuery('#'+divID).attr('value');
	testVoice(text);

}

// testowane slowa z listy o numerze w talblicy i
function testD(i){

	var text  = wordValue[i];
	testVoice(text);
}

// przeslanie testu i generacj glosu
function testVoice(text) {

	if(text==''){
		return;
	}

         try
            {
             getFlashMovie("hiddenplay").showLoading();
         }catch(e){}

	jQuery.ajax({
		url: '/online/editor.php?genUrl=1&v='+voiceID+'&t='+text,
	});
	return;


	var testFile=escape(''+urlHost+'?l=en&v='+voiceID+'&e=0&t='+Base64.encode(text)+'');

	jQuery("#testDictVoice").html('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="1" height="1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="themovie"><param name="movie" value="'+STATIC_HOST+'/flash/saplayer.swf"/><param name="FlashVars" value="&callback=on&file='+testFile+'" /><param name="wmode" value="transparent" /><param name="swliveconnect" value="true" /><embed wmode="transparent" width="1" height="1" swliveconnect="true" flashvars="&callback=on&file='+testFile+'" src="'+STATIC_HOST+'/flash/saplayer.swf" name="themovie" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>');
}

function soundStarted()
{
        isPlaying = true;
}


function soundEnded()
{
        isPlaying = false;
}

function stopAudioFile()
{
        try
        {
        getFlashMovie("hiddenplay").stopAudio();
        isPlaying = false;
        }catch(e){}

}



function setSpeechUrl(testFile) {
        if(isFlash)
        {
                getFlashMovie("hiddenplay").loadAudio(testFile);
        }
        else if(isMobile())
        {
                window.location = unescape(url);
                return;
        }

}

// jesli sytenza zwrocila blad to wysietlam
function synthEnd( command, errno ) {
	if(command=='SYNTHERR'){
		sErrorNew(errno+' : '+err[errno]);
	}
}

// upload pliku 
function uploadNew(title,browse,send,box){

	jQuery('#infopopup').html('<form id="uploadFormD" action="?dictImport=1&amp;ajax=1&amp;box='+box+'&amp;&dictLang='+jQuery('#langIdHD').attr('value')+'" method="POST" enctype="multipart/form-data"><div class="importd"><div class="dictionary"><div class="head">'+title+'</div><div class="filebutton">'+browse+'</div><input type="submit" value="'+send+'" class="button"/><div class="close" onclick="suploadNewClose();"></div><div class="fileinputs"><input type="file" id="fileD" name="file" accept="text/plain" /><div id="uploadOutputD"/></div><script type="text/javascript">initFileUploads();</script></div></div></form>');

	poz = getCenterWindows('infopopup');
	jQuery('#infopopup').css({left:+poz[0]+"px",top:+poz[1]+"px",visibility:"visible"});

}

// ukrycie popupa z informacje 
function suploadNewClose() {
 jQuery('#infopopup').css({visibility:"hidden"});
}

var hideRuleS = new Object ();
 hideRuleS.stat = 0;

 // popap do dodawania regul wymowy zkrocienie okna  bez pokrywania listy lub na odrwot popupa z lista 
function hideRule(){

	if(hideRuleS.stat==0){
	
		jQuery('#hide').removeClass('up');
		jQuery('#hide').addClass('down');

		jQuery('#dictImport').hide();
		jQuery('#'+divAll+'H').hide();
		jQuery('#idCloseFull').hide();
		jQuery('#idClose').show();
		hideRuleS.aR = jQuery('#add_rules').css("background");
		jQuery('#add_rules').css("background","none");
		hideRuleS.mC = jQuery('#modalContainer').css("height");
		jQuery('#modalContainer').css("height","350px");
		hideRuleS.stat = 1;
	} else {

		jQuery('#hide').removeClass('down');
		jQuery('#hide').addClass('up');

		buildHtmlWordPage(1);

		jQuery('#dictImport').show();
		jQuery('#'+divAll+'H').show();
		jQuery('#idCloseFull').show();
		jQuery('#idClose').hide();
		jQuery('#add_rules').css("background", hideRuleS.aR);
		jQuery('#modalContainer').css("height", hideRuleS.mC);

		hideRuleS.stat = 0;
			
	}

}

// budowanie forumalrza do wyslania saveDict =  1 dodanie nowego / !=1 modyfikacja istniejacego
function submitForm(saveDict,i){

	var centerTmp = new Array();
	var valueTmp = new Array();
	var statTmp = new Array();
	var leftTmp = new Array();
	var rightTmp = new Array();

	if(saveDict==1){
		centerTmp[0] = jQuery('#nkey').attr('value');
		valueTmp[0] = jQuery('#nvalue').attr('value');
		var stat = jQuery('#nstat').attr('checked');
		if(stat==true)
			statTmp[0] = 2;
		else
			statTmp[0] = 1;
		leftTmp[0] = '';
		rightTmp[0] = '';

		if(contectWord!=false){
			centerTmp[0]=contectWord[1];
			centerTmp[1] = contectWord[1];
			valueTmp[1] = valueTmp[0];
			statTmp[1] = statTmp[0];
			leftTmp[1] = contectWord[0];
			rightTmp[1] = contectWord[2];
		}
	} else {
		centerTmp[0] = wordCenter[i];
		valueTmp[0] = wordValue[i];
		statTmp[0] = wordStat[i];
		leftTmp[0] = wordLeft[i];
		rightTmp[0] = wordRight[i];
		jQuery('#wordId').attr('value',wordId[i]);
	}

	var options = {
		beforeSubmit: function(myData) {
			for(var property in myData) {
				var value = myData[property];
				for(var property2 in myData[property]) {
					var value2 = myData[property][property2];
					switch(value2) {
						case 'wordCenter':
							myData[property]['value']= centerTmp.join(wordSep);
							break;
						case 'wordValue':
							myData[property]['value']= valueTmp.join(wordSep);
							break;
						case 'wordStat':
							myData[property]['value']= statTmp.join(wordSep);
							break;
						case 'wordLeft':
							myData[property]['value']= leftTmp.join(wordSep);
							break;
						case 'wordRight':
							myData[property]['value']= rightTmp.join(wordSep);
							break;

					}
				}
			}
		}
	};

	jQuery('#saveDict').attr('value',saveDict);
	jQuery("#dictSave").ajaxSubmit(options);

}

// dodanie nowej reguly do tablicy / medota wywoluje sie rekuracyjnie jest nr!=0 idArray tablica z ID wpisy w bazie
function wordAdd(nr,idArray){

	var wc =jQuery('#nkey').attr('value');

	if(wc=='')
		return false;

	var wl = '';
	var wr = '';

	var count=wordCenter.length;
	if(count>=maxcountSub){
		sErrorNew(dictMaxCountSub);
		return ;
	}

	if(contectWord!=false){
		wc = contectWord[1];
		if(nr==1){
			wl = contectWord[0];
			wr = contectWord[2];
			contectWord=false;
		}
	} 
 
	if(!validator(wc))
		return;

	for (var i = 0; i < count; i++) {
		if(wordCenter[i]==wc && wordLeft[i]==wl && wordRight[i]==wr){
			wordDel(i,wordId[i]);
			break;
		}
	}

	var stat = jQuery('#nstat').attr('checked');
	if(stat==true){
		 wordStat.unshift(2);
	} else {
		 wordStat.unshift(1);
	}

	wordCenter.unshift(wc);
	wordValue.unshift(jQuery('#nvalue').attr('value'));
	wordLeft.unshift(wl);
	wordRight.unshift(wr);
	wordId.unshift(idArray[nr]);

	if(contectWord!=false){
		jQuery('#nkey').attr("disabled", false);
		wordAdd(1,idArray);
		contectWord=false;
	}

	jQuery('#nkey').attr('value','');
	jQuery('#nvalue').attr('value','');
	jQuery('#nstat').attr('checked','');

	jQuery('#infoSave').show();
	setTimeout(function () { jQuery('#infoSave').hide(); }, 3000);	

	if(hideRuleS.stat==0){
		buildHtmlWordPage(1);
	}

	contectWord=false;
}


// zmiana rekorody z pozycji i z tablicy  type = k - klucz type = w - wartosc, value wartosc nowa
function wordEdit(i,type,value){

	if(!validator(value))
		return false;

	var count=wordCenter.length;
	if(type=='k'){
		for (var j = 0; j < count; j++) {
			if(wordCenter[j]==value && j!=i){
				sErrorNew(wordExist);
				return false;
			}
		}
	}

	if(type=='k'){
		wordCenter.splice((i),1,value);
	}

	if(type=='w'){
		wordValue.splice((i),1,value);
	}

	submitForm(2,i);
  buildHtmlWord();
	return true;	
}

// usuniecie z tablicy wiersza z pozycji i oraz ID z bazy
function wordDel(i,id){

	showError=0;
	wordCenter.splice(i,1);
	wordLeft.splice(i,1);
	wordRight.splice(i,1);
	wordValue.splice(i,1);
	wordStat.splice(i,1);
	wordId.splice(i,1);

	ajaxCall('delDict=1&id='+id+'&dictLang='+jQuery('#langIdHD').attr('value'),false);
	buildHtmlWordPage(1);
}



function addSpecialChars(string){
	if(!validator(string))
		return '';

	return string.replace(/"/g,'&quot;');
}

// sprawdzam dlugosc stringu do wyswietlenei jesli za dlugi skracam
function sizeString(string){
	if(!validator(string))
		return '';

	if(string.length>maxSizeWordHtml)
		return string.substr(0,maxSizeWordHtml)+'...';

	return string;
}

// zmiana wartosci w tablicy wordStat na poztcji i 
function matchExactly(i){
	wordStat.splice(i,1,1);
}

// zmiana wartosci w tablicy wordStat na poztcji i
function matchAll(i){
	wordStat.splice(i,1,2);
}

// zmiana wartosci checkbox na pozycji i 
function match(i){

 var value = jQuery('#c'+i).attr('checked');

 if(value==true){
	 matchAll(i);
 } else {
	 matchExactly(i);
 }

 submitForm(2,i);

}

// glowna funkcja buduajca HTML na stronie z lista wyrazen
function buildHtmlWord(){
	var countAll=wordCenter.length;
	var html ='';
	var bindc = '';

	var param='';
  
	var start = ((page-1)* countPage);
	var end = (page * countPage);

	if(countAll!=0){
		for (var i = start; i < end; i++) {
			if(wordCenter[i]==null)
				continue;

		html += '<div class="tablecontent"><div class="tabletr"><div class="td1" id="k'+i+'">';
		if(wordLeft[i]!='' || wordRight[i]!=''){
			 html += '<span class="textred">*</span> ';
		} 
	
		html += htmlspecialchars(sizeString(wordCenter[i]))+'</div><div class="td2" id="w'+i+'">'+htmlspecialchars(sizeString(wordValue[i]))+'&nbsp;</div><div class="td3"><div class="play" onclick="testD('+i+');"></div></div><div class="td4"><input class="check" id="c'+i+'" type="checkbox" onClick="match('+i+');" '+((wordStat[i]==2)? 'checked="checked"' : '')+'/></div><div class="td4"><a href="javascript:wordDel('+i+','+wordId[i]+'); void null;"><div class="recycle"></div></a></div></div></div>';

			bindc += 'jQuery(\'#k'+i+'\').bind(\'click\', function () { getInput('+i+',\'k\');}); jQuery(\'#w'+i+'\').bind(\'click\', function () { getInput('+i+',\'w\');});';
		 
			if(userTester!=0){
			bindc += ' jQuery(\'#k'+i+'\').bind(\'mouseover\',function () { dictToolTipShow('+i+',\'k\');});  jQuery(\'#k'+i+'\').bind(\'mouseout\',function () { dictToolTipHide();}); jQuery(\'#w'+i+'\').bind(\'mouseover\',function () { dictToolTipShow('+i+',\'w\');});  jQuery(\'#w'+i+'\').bind(\'mouseout\',function () { dictToolTipHide();});';
			}
		}

		html +='<script type="text/javascript">jQuery(document).ready(function(){'+bindc+'})</script>';
	}

	html +='<div class="dicttooltip" id="dicttooltip"></div>';
	jQuery('#'+divAll+'W').html(html);
	jQuery('#dicttooltip').hide();

	var htmlPage = navigationPage(countAll,countPage,pMax,page,param);
	jQuery('#'+divAll+'P').html(htmlPage);
	jQuery('#nkey').focus()

}

// wyswietlenie podpowiedzi calego kontekstu po najechnaiu na wartosc na pozycji i
function dictToolTipShow(i,type){

	if(type=='k'){
	jQuery('#dicttooltip').html('<span class="textred">'+wordLeft[i]+'</span>'+wordCenter[i]+'<span class="textred">'+wordRight[i]+'</span>');
	} else {
		jQuery('#dicttooltip').html(wordValue[i]);
	}

  var node = document.getElementById(type+i);
  var poz = findObjectPosition(node);

	jQuery('#dicttooltip').css({left:+poz[0]-160+"px",top:+poz[1]-110+"px"});
	jQuery('#dicttooltip').show();
}


// schowanie podpowiedzi
function dictToolTipHide(){
	  jQuery('#dicttooltip').hide();
}

//budowanie linku z inputa na pozycji id / type = k klucz / w= wartosc 
function buildLink(id,type){

	var value = jQuery('#'+type+id+'m').attr('value');

	if(type=='k' && value==''){
		sErrorNew(emptyValue);
		showError=1;
		return false;
	}

	if(!save(id,type,value)){
		showError=1;
		return false;
	}

	buildHtmlWord();

	showError = 0;
	return true;
}

// budowanie inputa w formularzu na pozycji id / type = k klucz / w= wartosc
function getInput(id,type){

	if(showError==1)
		return false;

	if(type=='k'){
		var oldv = wordCenter[id];
	} else {
		var oldv = wordValue[id];	
	}

	var IE = (document.all && !window.opera)?true:false;

	var html ='<input type="text" size="22" maxlength="'+maxSizeWord+'" id="'+type+id+'m" name="'+type+id+'m" value="'+oldv+'"/>';
  var bindc ='jQuery(\'#'+type+id+'m\').bind(\'blur\', function () { buildLink('+id+',\''+type+'\');});';

	if(IE){	
		bindc +='jQuery(\'#'+type+id+'m\').bind(\'keydown\', function (event) { checkKeyW(event,'+id+',\''+type+'\'); });';
	} else {
		bindc +='jQuery(\'#'+type+id+'m\').bind(\'keypress\', function (event) { checkKeyW(event,'+id+',\''+type+'\'); });';
	}

	bindc +='jQuery(\'#'+type+id+'\').unbind(\'mouseover\');';

	html += '<script type="text/javascript">jQuery(document).ready(function(){'+bindc+'})</script>';
	jQuery('#'+type+id).html(html);
	
	dictToolTipHide();
	jQuery('#'+type+id+'m').focus();

}

// zapis wartosci z pozycji id type pola oraz wartosci 
function save(id,type,value){

	if(!wordEdit(id,type,value))
		return false;

	return true;
}

// wylapywanie przechodzenia miedzy polami na podstawie kliknica lub enter / tab
function checkKeyW(event,id,type){

	var keycode;

	if (event.which) 
		keycode = event.which;
	else // ie
		keycode = event.keyCode;

	if (keycode==13 || keycode==9){

		if(!buildLink(id,type)){
			return false;
		}

		if(keycode==13 || keycode==9){
			if(type=='k'){
				getInput(id,'w');
				jQuery('#w'+id+'m').focus();
			}
			else{
				if(type=='k'){
					getInput(id,'w');
					jQuery('#w'+id+'m').focus();
				}
				else {
					if(type=='w' && (wordCenter[id+1]!=undefined || id!=0)){
						getInput((id+1),'k');
						jQuery('#k'+(id+1)+'m').focus();
					}
				}
			} 
		} // end 9
		event.preventDefault();
		event.stopPropagation();
		return false
	} // if

	return true;
}

// budowanie strony o okresonym numerze
function buildHtmlWordPage(nr){

	page = nr;
	buildHtmlWord();
}


// budowanie nawigacji 
// wartosci  =  liczba ogolna wszystkich rekordow / ile na stronie / maksymlanie ile stron w nawigacji / nr strony / inne parametry do linktu
function navigationPage(countAll,countPage,pMax,page,param){

	var html ='';

	if(countAll <= countPage){
		return html;
	}

	var nr_start = 1;
	var end = 0;
	var start = 0;
	var ilePage = pMax;

	if(param!=''){
		param +='&amp;';
	}

	var ilePageAll = Math.ceil(countAll/countPage);

	if(ilePageAll>pMax){
		if(page<ilePageAll){
			end=1;
		}

		if(page>1){
			start=1;
		}

		var pMaxPol = Math.floor(pMax/2);
		nr_start += page-1-pMaxPol;
		if(nr_start<1)
			nr_start=1;

		ilePage=nr_start+pMax-1;

		if((ilePageAll-nr_start)<pMax){
			nr_start -= pMax-(ilePageAll-nr_start)-1;
		}
	}

	if(ilePage >= ilePageAll){
		end = 0;
		ilePage = ilePageAll;
	}

	if(nr_start < 2){
		start = 0;
	}

	if(page!=1){
		html += '<a href="javascript:buildHtmlWordPage('+(page-1)+'); void null;">&laquo;</a>';
	}

	if(start!=0){
		html += '<a href="javascript:buildHtmlWordPage('+(nr_start-1)+'); void null;">...</a>';
	}

	for(i=nr_start;i<=ilePage;i++){
		if(page==i){
			html += '<a href="javascript:buildHtmlWordPage('+i+'); void null;" class="current">'+i+'</a>';
		} else
			html += '<a href="javascript:buildHtmlWordPage('+i+'); void null;">'+i+'</a>';
	}

	if(end!=0){
		html += '<a href="javascript:buildHtmlWordPage('+i+'); void null;">...</a>';
	}

	if(page!=ilePage){
		html += '<a href="javascript:buildHtmlWordPage('+(page+1)+'); void null;">&raquo;</a>';
	}

	return html;
}


// z testku wycie slowa glownego oraz konteksto lewy oraz prawy
function getContentWord(idTextArea){

	var maxWord=250;
	var element = document.getElementById(idTextArea);
	var start = 0;
	var selStart = element.selectionStart;
	var selEnd = element.selectionEnd;
	var text =  jQuery('#'+idTextArea).attr('value');

	if (document.selection) {

		element.focus();
		var selection = document.selection;
		var range = selection.createRange();

		if(range.text.length==0){
			selStart = 0;
			selEnd = 0;
		} else {
			selStart = text.indexOf(range.text);
			selEnd = selStart + range.text.length;
		}

	}	

	if ( selStart == selEnd || selStart>=text.length)
		return false;

	text = replaceAllEnter(text);
	var word = text.substring(selStart,selEnd);

	if(word.length>maxWord){
		selEnd -= word.length-maxWord;
		word = word.substring(0,maxWord);
	}

	if(selStart-maxWord>0){
		start = selStart-maxWord;
	}

	var wordS = text.substring(start,selStart);
	
	start = selEnd;
	if(selEnd+maxWord>text.length){
	  selEnd = text.length;
	} else {
		selEnd += maxWord;
	}

	element.selectionStart = 0;
	element.selectionEnd = 0;

	var wordE = text.substring(start,selEnd);
	var wynArray = new Array(wordS,word,wordE);
	return wynArray;
}
