/*
	JS-Include
	FUNKTIONS-Bibliothek
	@package:	Adminportal
	@version:	1.0
	@author:	Falko Mueller, Mathias Woller
*/

/* Absolute Position finden */
var xpos = 0;
var ypos = 0;

function findPos(obj)
{	xpos = 0;
	ypos = 0;

	if (obj.offsetParent) {
		do {
			xpos += obj.offsetLeft;
			ypos += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
}

/* Passwortsicherheit */
function pwsContains(strText, strPattern)
{
	for (i = 0; i < strText.length; i++)
	{	if (strPattern.indexOf(strText.charAt(i)) > -1) return true;
	}
	return false;
}

function pwsCheckPass(passwd, showtext)
{	/* ************************************************************
	Author:  Steve Moitozo <god at zilla dot us> -- geekwisdom.com
	License: MIT License (see below)
	---------------------------------------------------------------
	Modified: Falko Müller @ 10-2009 for use with:
				- innerHTML
				- german output
				- graphical Scoremeter
				- dynamical title-attribut
				- multiple char-decrease
	---------------------------------------------------------------
	************************************************************ */

	var intScore   	= 0;	//Std.-Score
	var strVerdict 	= "schwach";	//Std. Text für Passwortstärke
	
	var charSpecial = "[!,@,#,$,%,^,&,*,?,_,~,-,+]";	//Derzeitig genutzte Sonderzeichen -> diese sind direkt in der jeweiligen Prüfung zu ändern/erweitern
	
	/* ***** ab hier nichts mehr ändern, falls keine Kenntnisse vorhanden ***** */
	
	//Passwortlänge berücksichtigen
	if (passwd.length >= 1 && passwd.length <= 4) {
		intScore = (intScore + 3)
	} else if (passwd.length >= 5 && passwd.length <= 7) {
		intScore = (intScore + 6)
	} else if (passwd.length >= 8 && passwd.length <= 13) {
		intScore = (intScore + 12)
	} else if (passwd.length >= 14) {
		intScore = (intScore + 18)
	}
	
	
	//Vorkommen von Buchstaben
		//mind. 1 Kleinbuchstabe
		if (passwd.match(/[a-z]/)) {
			intScore = (intScore+1)
		}
		//mind. 1 Großbuchstabe
		if (passwd.match(/[A-Z]/)) {
			intScore = (intScore+3)
		}
	//Vorkommen von Zahlen
		//mind. 1 Zahl
		if (passwd.match(/\d+/)) {
			intScore = (intScore+3)
		}
		//mind. 3 Zahlen
		if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/)) {
			intScore = (intScore+5)
		}		
	//Vorkommen von Sonderzeichen
		//mind. 1 Sonderzeichen vorhanden
		if (passwd.match(/[!,@,#,$,%,^,&,*,?,_,~,-,+]/)) {
			intScore = (intScore+5)
		}		
		//mind. 2 Sonderzeichen vorhanden
		if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~,-,+].*[!,@,#,$,%,^,&,*,?,_,~,-,+])/)) {
			intScore = (intScore+5)
		}

	
	//Kombinationstest
	//Groß und Kleinbuchstaben
	if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {
		intScore = (intScore+2)
	}		
	//Buchstaben und Zahlen
	if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)) {
		intScore = (intScore+3)
	} 
	//Buchstaben, Zahlen und Sonderzeichen
	if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~,-,+])|([!,@,#,$,%,^,&,*,?,_,~,-,+].*[a-zA-Z0-9])/)) {
		intScore = (intScore+4)
	}


	//Dopplungen abziehen
	//3 gleiche aufeinanderfolgende
	if (passwd.match(/(.)\1{2,}/g)) {
		intScore = (intScore-2);		
	}
	//5 gleiche aufeinanderfolgende
	if (passwd.match(/(.)\1{4,}/g)) {
		intScore = (intScore-5);		
	}
	

	//Stärketext setzen
	if (intScore <= 15) {
	   strVerdict = "sehr schwach"
	} else if (intScore >= 16 && intScore <= 24) {
	   strVerdict = "schwach"
	} else if (intScore >= 25 && intScore <= 34) {
	   strVerdict = "mittelmäßig"
	} else if (intScore >= 35 && intScore <= 44) {
	   strVerdict = "stark"
	} else {
	   strVerdict = "sehr stark"
	}


	//Scoremeter berechnen - bezogen auf 100%
	if (intScore > 50) {
		intScore = 50;
	}
	//Schrittweite berechnen
	sClass = Math.round((intScore * 2) / (100 / 10));

	
	//Prüfung ausgeben
	d = document;
	//d.getElementById("login_name").value = intScore;	
	
	otId = d.getElementById("pwarrow1");
	otId.className = "pwmove" + "-" + sClass;
		otId = d.getElementById("pwarrow2");
		otId.className = "pwmove" + "-" + sClass;
		
	d.getElementById("pwqualitaet").title = "Qualität: " + (strVerdict);
		
	if (showtext == 1) {
		d.getElementById("pwverdict").innerHTML = (strVerdict);
	}	
}

function pwsGeneratePass(plength)
{	var keylist="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_+";
	var newpw = '';
	
		for (i=0; i<plength; i++)
		{	newpw += keylist.charAt(Math.floor(Math.random() * keylist.length));
		}
	
	document.getElementById("passwort1").value = newpw;
}

/* Detailbox ein-/ausblenden */
function toggleBox(id, picid)
{	if (id != "") {
		var obj = document.getElementById(id);
		
		if (picid != "") {
			var picobj = document.getElementById(picid);
		}
		
		if (obj.style.display == "none") {
			obj.style.display = "";
			
			if (picobj) {
				picobj.src = "images/entrynavi_info_close.gif";
			}
		} else {
			obj.style.display = "none";
			
			if (picobj) {
				picobj.src = "images/entrynavi_info.gif";
			}
		}
	}
}


/* Detailboxen ein-/ausblenden */
boxStatus = 0;
function toggleBoxes(sbeg, picsbeg, picmulti)
{	if (sbeg != "") {
		var obj = document.getElementsByTagName("*");
		var regex = new RegExp("^.*" + sbeg + ".*$");
		
		var picobj = obj;
		var picregex = new RegExp("^.*" + picsbeg + ".*$");
		
		if (picmulti != "") {
			var picmultiobj = document.getElementById(picmulti);
		}
		
		if (boxStatus == 0) {
			var status = "";
			var picstatus = "images/entrynavi_info_close.gif";
			
			boxStatus = 1;
		} else {
			var status = "none";
			var picstatus = "images/entrynavi_info.gif";
			
			boxStatus = 0;
		}
		
		for (i=0; i < obj.length; i++) {
			if (obj[i].id.match(regex)) {
					obj[i].style.display = status;
					obj[i].style.display = status;
			}
		}
		for (i=0; i < picobj.length; i++) {
			if (picobj[i].id.match(picregex)) {
					picobj[i].src = picstatus;
					picmultiobj.src = picstatus;
			}
		}
	}
}


/* Anzahl der Zeichen in Feld prüfen */
function zeichenanzahl(obj, countobj, maxLength)
{	var text = document.getElementById(obj).value;
  	var laenge = text.length;
  	var rest = maxLength - laenge;

  	if (rest < 0) {
		document.getElementById(obj).value = text.substr(0, maxLength);
    	rest = 0;
  	}
    
	document.getElementById(countobj).value = rest;
}


/* Anzahl und Liste der gewählten Select-Einträge auslesen */
function showOptionStatus(obj, trenner, output)
{	if (trenner == "") {
		trenner = ", ";
	} else {
		trenner = trenner + " ";
	}
	
	if (obj != "") {
		d = document.getElementById(obj);
		str = "";
		
		for (var i = 0; i < d.length; i++)
		{	if (d.options[i].selected == true) {
				str += d.options[i].text + trenner;
			}
		}
		
		if (str.length > trenner.length && output != "") {
			str = str.substr(0, (str.length - trenner.length));
			
			//str = '<table cellpadding="0" cellspacing="0" border="0"><tr><td width="1%">Akt. Auswahl:&nbsp;</td><td>' + str + '</td></tr></table>';
			document.getElementById(output).innerHTML = "Aktuelle Auswahl:<br />" + str;
		}
	} else {
		return false;
	}
}


/* Löschbestätigung */
function dbdelete(url, titel)
{	if (url != "") {
		text = "Soll dieser Eintrag wirklich entfernt werden?";
			if (titel != undefined && titel != "") {
				text += "\n(Eintrag: " + titel + ")";
			}
			
		erg = confirm(text);
		
		if (erg == true) {
			location.href = url;
		}		
	}
}


/* Subnavi-Klickzustand */
function setNavPoint(id)
{	if (id != "") {
		self.location.href = "index.php?navid=" + id;
	}
}


/* Focus setzen in Input-Feld */
function setFocus(id, noval)
{	if (id != "") {
		var tmp = document.getElementById(id);
			tmp.focus();
			
			if (noval != 1 || noval != "1") {
				tmp.value = tmp.value;
			}
	}
}


/* Logincountdown zeigen */
function showLoginCounter(sek)
{	d = document
		lc = d.getElementById("logincounter");
			fu = d.getElementById("username");
			fp = d.getElementById("password");
			fs = d.getElementById("absenden");
	
	if (lc) {
		if (sek > 0) {
			//Formularfelder deaktivieren
			if (fu && fp) {
				fu.disabled = true;
				fp.disabled = true;
				fs.disabled = true;
			}
			
			lc.innerHTML = "Warten Sie noch " + sek + " sek. bis zum n&auml;chsten Versuch.";
			
			//Counter neu starten
			sek = sek - 1;
				setTimeout("showLoginCounter(" + sek + ")", 1000);
		} else {
			//Formularfelder wieder aktivieren
			if (fu && fp) {
				fu.disabled = false;
				fp.disabled = false;
				fs.disabled = false;
				
				fp.focus();
			}
			
			lc.innerHTML = "Bitte versuchen Sie es erneut.";
		}
	}
}


/* Checkboxen markieren */
function setCheckBoxes(myBoxes, mySelector)
{	if (myBoxes && mySelector) {
		var myForm = mySelector.form.name;
		var myTmp = myBoxes;
		var mySelector = mySelector.name;
			var df = document.forms[myForm];
		
		//var myBoxes = df.elements[myBoxes];
		var myBoxes = document.getElementsByName(myBoxes);
		
			//if (myBoxes.length > 0) {
				for (var i=0; i<myBoxes.length; i++)
				{ 
					if (df.elements[mySelector].checked == true) {
						myBoxes[i].checked = true;
					} else {
						myBoxes[i].checked = false;
					}
				}
			/*} else {
				//prüfen ob ein Element da ist
				de = document.getElementsByName(myTmp)[0];
					if (de) {
						if (df.elements[mySelector].checked == true) {
							alert("true: " + de.name);
							de.checked = true;
						} else {
							alert("false");
							de.checked = false;
						}
					}
			}*/
	}
}


/* Standard-JS */
function MM_openBrWindow(theURL,winName,features) 
{ 	window.open(theURL,winName,features);
}

/* Liest Value aus Optionsfeld aus und fügt den Inhalt zum Input-Feld hinzu */
function getFeldinhalt(id, wert) 
{	if (wert != "" && wert != 0) {
		var f = document.getElementById(id);
		
		if (f) {
			if (f.value != "") {
				f.value = f.value + ", ";
			}
			
			f.value = f.value + wert;
		}
	}
}

/* neue, verbesserte Auslesefunktion von getFeldinhalte - alte ersetzen !!! */
/* Liest Value aus Optionsfeld aus und fügt den Inhalt zum Input-Feld hinzu */
function getOptWerte(id, objwert, multiple) 
{	if (typeof(objwert) == "object") {
		var wert = objwert.options[objwert.selectedIndex].value;
	} else {
		var wert = objwert;
	}
	
	if (wert != "" && wert != 0) {
		var f = document.getElementById(id);
		
		if (f) {
			if (multiple == 1) {
				if (f.value != "") {
					f.value = f.value + ", ";
				}
				
				f.value = f.value + wert;
			} else {
				f.value = wert;
			}
		}
	}	 
}


function showTermin(id_div, array, id_lkw)
{	if (id_div != "") {
		var op = "";

		if (array[id_lkw] != "" && id_lkw > 0) {			
			op += '<table cellpadding="0" cellspacing="0" border="0" class="innerTableTerminlist">';
				op += array[id_lkw];
			op += '</table>';
			
			document.getElementById(id_div).innerHTML = op;
		} else {
			document.getElementById(id_div).innerHTML = op;
		}
	}
}

function deactivateTime(felder, eigenesFeld)
{
	var idFelder = felder;

	if (idFelder.length > 0 && eigenesFeld)
	{
		var idFelderArray = idFelder.split(' ');
		var anzahlFelder = idFelderArray.length;

		for (var i = 0; i < anzahlFelder; i++)
		{
			if (eigenesFeld.checked == true)
			{
				document.getElementById(idFelderArray[i]).disabled = true;
			}
			else
			{
				document.getElementById(idFelderArray[i]).disabled = false;
			}
		}
	}
}



//jquery
$.fn.infiniteCarousel = function () {

    function repeat(str, num) {
        return new Array( num + 1 ).join( str );
    }
  
  
    return this.each(function () {
        var $wrapper = $('> div', this).css('overflow', 'hidden'),
            $slider = $wrapper.find('> ul'),
            $items = $slider.find('> li'),
            $single = $items.filter(':first'),
            
            singleWidth = $single.outerWidth(), 
            visible = Math.ceil($wrapper.innerWidth() / singleWidth),
            currentPage = 1,
            pages = Math.ceil($items.length / visible);            


        // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
        if (($items.length % visible) != 0) {
            $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
            $items = $slider.find('> li');
        }

        // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
        $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
        $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
        $items = $slider.find('> li'); // reselect
        
        // 3. Set the left position to the first 'real' item
        $wrapper.scrollLeft(singleWidth * visible);
        
        // 4. paging function
        function gotoPage(page) {
            var dir = page < currentPage ? -1 : 1,
                n = Math.abs(currentPage - page),
                left = singleWidth * dir * visible * n;
            
            $wrapper.filter(':not(:animated)').animate({
                scrollLeft : '+=' + left
            }, 500, function () {
                if (page == 0) {
                    $wrapper.scrollLeft(singleWidth * visible * pages);
                    page = pages;
                } else if (page > pages) {
                    $wrapper.scrollLeft(singleWidth * visible);
                    // reset back to start position
                    page = 1;
                } 

                currentPage = page;
            });                
            
            return false;
        }
        
        
        // 5. Bind to the forward and back buttons
        $('#artikelslider a#slideleft').click(function () {
            return gotoPage(currentPage - 1);                
        });
        
        $('#artikelslider a#slideright').click(function () {
            return gotoPage(currentPage + 1);
        });

        // create a public interface to move to a specific page
        $(this).bind('goto', function (event, page) {
            gotoPage(page);
        });
    });
};

$(document).ready(function () {
  $('#sliderarea').infiniteCarousel();
});

