/* Funkcje obsługuja pokazywanie / ukrywanie warstw */

function zmien(id) {
	document.getElementById(id).style.display=(document.getElementById(id).style.display=='block')?'none':'block';
}

function zmien2(id) {
	document.getElementById(id).style.display=(document.getElementById(id).style.display=='none')?'block':'none';
}

function ukryj(id){
	document.getElementById(id).style.display='none';
}

function pokaz(id){
	document.getElementById(id).style.display='block';
}

/* Funkcja zwija / rozwija wartwe wraz ze zmiana napisu */

function zwin_rozwin(div, linkid, word_on, word_off){
	zmien2(div);
	document.getElementById(linkid).innerHTML = (document.getElementById(linkid).innerHTML==word_off) ? word_on : word_off;
}

function setCSSclaseName(id, cName){
	var obj = document.getElementById(id);
	if(obj){ obj.className=cName; }
}

/* Funkcja odhacza wszytskie zakliknięte pola typu checkbox */

function uncheckAll(f){
	with (document.forms[f]) {
		elements[0].value++
		var L = elements.length
		//while (L--) elements[L].checked = !elements[L].checked
		while (L--) elements[L].checked = false;
	} 
}

function checkAll(f){
	with (document.forms[f]) {
		elements[0].value++
		var L = elements.length
		//while (L--) elements[L].checked = !elements[L].checked
		while (L--) elements[L].checked = true;
	} 
}

function reversecheck(f){
	with (document.forms[f]) {
		elements[0].value++
		var L = elements.length
		while (L--) elements[L].checked = !elements[L].checked
	} 
}

/* Funkcja zlicza liczbę pozostałych znaków w TEXTAREA */

function zliczaj(output, o_id, maxlen) { 
	if(document.forms[0] && document.getElementById(o_id)){
    with(document.forms[0]) { 

        var tekst = document.getElementById(o_id).value; // cały text z pola textarea 
        var dl_tresc = document.getElementById(o_id).value.length; // długoś tekstu z textarea 	
        //var tekst = elements[textarea].value; // cały text z pola textarea 
        //var dl_tresc = elements[textarea].value.length; // długoś tekstu z textarea 
		//var maxlen = 30; // maxymalna dozwolona długość 
        var prawdziwa = 0; // licznik znaków 
        var entery = 0; 
        var outputObj = document.getElementById(output);
		
        for (i=0; i<dl_tresc; i++) { 
            if (tekst.charAt(i) == "\n") { 

                prawdziwa++; 
                entery++;
 
                if (navigator.appName != "Netscape") 
                    i++; 
            } 
            prawdziwa++; 
        } // koniec for i 
        
        //elements[output].value= maxlen - prawdziwa; // wyświetl komunikat o licznie znaków 
		outputObj.innerHTML = maxlen - prawdziwa;
		
        if (prawdziwa>maxlen) { 
            if (navigator.appName != "Netscape") 
               document.getElementById(o_id).value = document.getElementById(o_id).value.substring(0,maxlen);
            else 
               document.getElementById(o_id).value = document.getElementById(o_id).value.substring(0,maxlen-entery);
    
        //elements[output].value = maxlen - maxlen; 
		outputObj.innerHTML = maxlen - maxlen;
        //alert("Maksymalna długo¶ć to " + maxlen +"!"); 
        } 
    } // koniec with 
	}
} 

/* Funkcja obsługuje przezroczysto¶ci */

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function Fade(obj, final_opacity, krok, milsec) {
    mint.fx.Fade(obj, final_opacity, krok, milsec);
}

/* Funkcja obsługuje pokazywanie się obrazka "trwa wczytywanie" */ 

function loading(gdzie){
	var obj = document.getElementById(gdzie);
	if(obj){
		var txt = '<div id="loading"><span class="loading">&nbsp; &nbsp; &nbsp; &nbsp;trwa wczytywanie</span></div>';
		obj.innerHTML = txt;
	}
}

/* Funkcja wstawia contnet do zadanego DIV */

function wstaw(gdzie, co){
	var obj = document.getElementById(gdzie);
	if(obj){
		var txt = co;
		obj.innerHTML = txt;
	}
}

/* Funkcja otwiera nowe okna */

function popup(adres,myname,w,h,scrollbars) {
	if(screen.width){
		var winl = (screen.width-w)/2;
		var wint = (screen.height-h)/2;
	}else{
		winl = 0;wint =0;
	}

	if (winl < 0) winl = 0;
	if (wint < 0) wint = 0;

	var settings = 'height=' + h + ',';
	settings += 'width=' + w + ',';
	settings += 'top=' + wint + ',';
	settings += 'left=' + winl + ',';
	settings += 'location=0, directories=0, scrollbars='+ (scrollbars?'1':'auto') +', toolbar=0, menubar=0, resizable=1, status=1';
	
	win = window.open(adres,myname,settings);
	win.window.focus();
}

/* Funkcja otwiera okno "powiadom znajomego" */

function powiadom() {
	var lang = 'pl';
	var baseHref = '';
	var url = baseHref + 'includes/powiadom.php?lang='+lang+'&adres=' + escape(document.location.href);
	
	$.colorbox({
		href: url,
		iframe:true,
		width:"600", 
		height:"730",		
		maxWidth:"690", 
		maxHeight:"90%" 
	})
	
}

/* Funckcja sprawdza poprawno¶ć wypełnienia formualrza "poleć znajomemu" */

function sprawdzForm(f){

	if( f.nadawca.value == "" ){
		alert('proszÄ™ podaÄ‡ kto jest nadawcÄ… wiadomoĹ›ci');
		f.nadawca.focus();
		return false;
	}
	
	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
	if( regex.test(f.nadawca_email.value) == false ){
		alert('proszÄ™ wpisaÄ‡ adres e-mail nadawcy lub podaÄ‡ go w prawidĹ‚owej formie');
		f.nadawca_email.focus();
		return false;
	}	

	if( regex.test(f.adresat_email.value) == false ){	
		alert('proszÄ™ wpisaÄ‡ adres e-mail odbiorcy lub podaÄ‡ go w prawidĹ‚owej formie');
		f.adresat_email.focus();
		return false;
	}		
	
}

/* Funkcja sprawdza poprawno¶ć wypełnionego formularza kontaktowego */

function sprawdzKontaktForm(f){
	
	fv = new formValidator();
	
	fv.raiseNormalInput("nadawca", 'inputText');
	fv.raiseNormalInput("nadawca_email", 'inputText');
	fv.raiseNormalInput("temat", 'inputText');
	fv.raiseNormalInput("tresc", 'inputTextArea');
	//fv.raiseNormalInput("obr", 'inputText');
	
	if( fv.isEmpty(f.nadawca.value) ){
		fv.raiseError("proszÄ™ podaÄ‡ kto jest nadawcÄ… wiadomoĹ›ci");
		fv.raiseInput("nadawca", 'inputText_error');
	}
	
	if( fv.isEmpty(f.nadawca_email.value) ){
		fv.raiseError("proszÄ™ podaÄ‡ aktualny adres e-mail");
		fv.raiseInput("nadawca_email", 'inputText_error');
	}	
	
	if( !fv.isEmailAddress(f.nadawca_email.value) ){
		fv.raiseError("podany adres e-mail ma niepoprawnÄ… postaÄ‡");
		fv.raiseInput("nadawca_email", 'inputText_error');
	}	
	
	if( fv.isEmpty(f.temat.value) ){
		fv.raiseError("proszÄ™ wpisaÄ‡ tytuĹ‚");
		fv.raiseInput("temat", 'inputText_error');
	}
	
	if( fv.isEmpty(f.tresc.value) ){
		fv.raiseError("proszÄ™ wpisaÄ‡ treĹ›Ä‡ opowieĹ›ci");
		fv.raiseInput("tresc", 'inputTextArea_error');
	}
	
	/*if( fv.isEmpty(f.obr.value) ){
		fv.raiseError("proszę przepisać kod znajduj±cy się na obrazku");
		fv.raiseInput("obr", 'inputText_error');
	}	*/	
		
	if (fv.numErrors() > 0)	{
		fv.displayErrors();
		fv.remarkInputs();
		fv.markInputs();
		return false;
	}
	else {
		f.submit();
		return true;
	}
	
}

/* Funkcja sprawdza poprawnoÂ¶Ä‡ wpisanego adresu email dla zapisu do newslettera */

function sprawdzNewsletterEmailForm(f, fieldName){
	
	fv = new formValidator();
	
	fv.raiseNormalInput(fieldName, 'newsletter_input');
	
	if( fv.isEmpty(document.getElementById(fieldName).value) || !fv.isEmailAddress(document.getElementById(fieldName).value) ){
		fv.raiseError("proszÄ™ podaÄ‡ poprawny adres email");
		fv.raiseInput(fieldName, 'newsletter_input_error');
	}	
		
	if (fv.numErrors() > 0)	{
		fv.displayErrors();
		fv.remarkInputs();
		fv.markInputs();
		return false;
	}
	else {
		return false;
	}
	
}


/* Funkcja wysyla zapytanie o zapisanie sie do newslettera */

function newsletterSubmit(f, div, fieldName, id){

	// sprawdzamy poprawnosc adresu e-mail 
	if( sprawdzNewsletterEmailForm(f, fieldName) == false ){
		return false;
	}

	var req = mint.Request();
    req.retryNum = 0; 
	loading(div);
		           
    req.OnSuccess = function() {
		document.getElementById(div).innerHTML = this.responseText;
		$("#NewsletterStatus_"+id).show("slow");
		setTimeout(function() {
			$("#NewsletterStatus_"+id).hide("slow");
		}, 5000);

    }
	req.OnError = function() {
		var error_msg = 'wystÄ…piĹ‚ nieznany bĹ‚Ä…d systemu';
		document.getElementById(div).innerHTML = error_msg;
	}
	req.OnAbort = function() {
		var error_msg = 'wystÄ…piĹ‚ nieznany bĹ‚Ä…d systemu. SprĂłbuj ponownie';
		document.getElementById(div).innerHTML = error_msg;		
	}
	req.OnTimeout = function() {
    	newsletterSubmit(f, div, fieldName)
	}  
	
	$("#NewsletterStatus_"+id).hide();               
    req.SendForm(f, "includes/lib/social/ajax/newsletter_submit.php");	
	
	return false;
}

/* Funkcja regeneruje obrazek zabezpieczeń formularza */

function genNewSecureImage(id, path){

	var rand = Math.round(1000*Math.random());
	var e_img;
	e_img = document.getElementById(id);
	
	if (e_img){
		e_img.setAttribute("src",path+'?count='+rand);	
	}
	
}

/* funkcja obsługuje oddawanie głosu w ankiecie */

function sendVote(the_form, nazwa_pola, div){
	
	/* sprawdzamy czy zaznaczono opcje odpowiedzi */
	for( z=0; z<ankieta_pytania.length; z++){
	
		var statusOK = false;
		var i = document.forms[the_form].elements[ankieta_pytania[z]].length;

		for(a=0; a<i; a++){
			if (document.forms[the_form].elements[ankieta_pytania[z]][a].checked == true ) {
				statusOK = true;
			}
		}
		
		if(statusOK == false){
			alert('sonda - nie wybrano opcji odpowiedzi');
			return false;
		}
	}
	
	/* wysyłamy AJAX z głosami */
	
	var req = mint.Request();
    	           
    req.OnSuccess = function() {
        $(div).innerHTML = this.responseText;
    }
               
    req.SendForm(the_form, "includes/lib/ankiety/vote.php");	
	loading(div);
}

/* Funkcja obsługuje przełącznie widoku z formularza na wyniki */

function showAnkietaRes(div, status, ankieta_ID){

	var req = mint.Request();
    req.AddParam("ankieta_ID", ankieta_ID);
	req.AddParam("status", status);
	 
    req.OnSuccess = function() {
        $(div).innerHTML = this.responseText;
    }
    
	req.Send("includes/lib/ankiety/vote.php", div);
	loading(div);	
}

/* Funkcja zaznacza odpowieni el menu nawigacyjnego profilu */

function setProfilMenu(id, prefix, divname, imgname){
	var obj = document.getElementById(prefix+id);
	if(obj){ obj.className='set'; }
	
	var subdiv = document.getElementById(divname+id);
	if(subdiv){ pokaz(divname+id); }
	
	var vimg = document.getElementById(imgname+id);
	if(vimg){ pokaz(imgname+id); }
}

/* Funkcje zwi±zane z weryfikacj± poprawno¶ci formualrza */

function formValidator(){
	
	// tablica do przechowywania wiadomo¶ci o błędach
	this.errorList = new Array;
 	this.errorFieldList =  new Array;
	this.NormalFieldList = new Array
	
	// metody obiektu
	this.isEmpty = isEmpty;	
	this.isMinLength = isMinLength;
	this.isNumber = isNumber;	
	this.isAlphabetic = isAlphabetic;	
	this.isAlphaNumeric = isAlphaNumeric;	
	this.isWithinRange = isWithinRange;	
	this.isEmailAddress = isEmailAddress;	
	this.isChecked = isChecked;	
	this.isData = isData;
 
	this.raiseError = raiseError;	
	this.raiseInput = raiseInput;
	this.raiseNormalInput = raiseNormalInput
	this.numErrors = numErrors;	
	this.displayErrors = displayErrors;	
	this.markInputs = markInputs;	
	this.remarkInputs = remarkInputs;	

}
 
// sprawdza, czy podana warto¶ć jest pusta, lub zawiera tylko białe znaki
function isEmpty(val){
	if (val.match(/^s+$/) || val == "")	{
		return true;
	}
	else {
		return false;
	}	
}
 
// sprawdza, czy podana wartosc zawiera minimum okre¶lon± liczbę znaków
function isMinLength(val, min){
	if (val.length < min){
		return true;
	}
	else{
		return false;
	}	
} 
 
// sprawdza, czy podana wartosc jest liczb±
function isNumber(val){
	if (isNaN(val))	{
		return false;
	}
	else{
		return true;
	}	
}
 
// sprawdza, czy wszystkie znaki s± literami
function isAlphabetic(val){
	if (val.match(/^[a-zA-Z]+$/)){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy przesłane dane zawieraj± tylko litery i cyfry
function isAlphaNumeric(val){
	if (val.match(/^[a-zA-Z0-9]+$/)){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy podana warto¶ć mie¶ci się w zakresie okre¶lonym przez zmienne min i max
function isWithinRange(val, min, max){
	if (val >= min && val <= max){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy użytkownik wprowadził poprawny adres email
function isEmailAddress(val){
	if (val.match(/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/)){
		return true;
	}
	else{
		return false;
	}	
}

// sprawdza, czy użytkownik wprowadził poprawny format daty
function isData(val){
	if (val.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/)){
		return true;
	}
	else{
		return false;
	}	
}
 
// sprawdza, czy pole jest zaznaczone
function isChecked(obj){
	if (obj.checked){
		return true;
	}
	else{
		return false;
	}	
}
 
// wy¶wietla wszystkie błędy
// pętla przez wszystkie elementy tablicy wywołuj±ca poszczególne okna dialogowe
function displayErrors(){
	var msg = '';
	for (x=0; x<this.errorList.length; x++)	{
		//alert("Error: " + this.errorList[x]);
		msg += "BĹ‚Ä…d: " + this.errorList[x]+"\n";
	}
	if( msg != "" ){
		var txt = "";
		txt += "-----------------------\n";
		txt += msg;	
		txt += "-----------------------\n";
		alert(txt);
		
	
	}
}

// zazancza wszystkie pola które zostały Ľle wypełnione  
function markInputs(){
	for (x=0; x<this.errorFieldList.length; x++)	{
		var obj = document.getElementById(this.errorFieldList[x][0]);
		obj.className = this.errorFieldList[x][1];
	}
}

// odznacza wszystkie pola które zostały Ľle wypełnione przy poprzednim sprawdzaniu
function remarkInputs(){
	for (x=0; x<this.NormalFieldList.length; x++)	{
		var obj = document.getElementById(this.NormalFieldList[x][0]);
		obj.className = this.NormalFieldList[x][1];
	}	
} 
 
// dodaje bł±d do listy
function raiseError(msg){
	this.errorList[this.errorList.length] = msg;
}
 
 // dodaje pole do listy
function raiseInput(id, class_error){
	this.errorFieldList[this.errorFieldList.length] = new Array(id, class_error);
}

// dodaje pole do listy wszystkich inputow 
function raiseNormalInput(id, class_normal){
	this.NormalFieldList[this.NormalFieldList.length] = new Array(id, class_normal);
}
 
// zwraca ilo¶ć błędów w tablicy
function numErrors(){
	return this.errorList.length;
}

/* Funkcja sprawdza czy nie przekroczono limitu zakliknietych checkboxow */

function checkNumberOfChecked(f, zakres, current){
	var limit = zakres+1;
	with (document.forms[f]) {
		elements[0].value++
		var L = elements.length
		var i = 0;
		while (L--){
			if(elements[L].checked){
				i++;
				if(i == limit){
					alert('osi±gnięto limit dozwolonych zaznaczeń');
					document.forms[f].elements[current].checked = false;
					break;
					return false;
				}
			}

		}
	} 
}
