//
function countForm(FormName){
	var ctr = 0;
	var formEle = document.getElementById(FormName);
	if(formEle != null){
		for(i = 0; i < formEle.length; i++){
			var ele = formEle.elements[i];
				ctr += ele.value.length;
		}
	}
	return ctr;
}

function hashForm(FormName){
	var ctr = "";
	var formEle = document.getElementById(FormName);
	if(formEle != null){
		for(i = 0; i < formEle.length; i++){
			var ele = formEle.elements[i];
			ctr += ele.value;
		}
	}
	ctr = MD5(ctr);
	return ctr;
}

function makeCounter(site, maxSite, size, counterId){
	var counter = document.getElementById(counterId);
	counter.innerHTML ='';
	if((site != 1)&&(site != null)){
		var zur = document.createElement('a');
		zur.setAttribute('href','#');
		zur.setAttribute('onclick',"getOverview('1');");
		zur.innerHTML = "|<-- ";
		counter.appendChild(zur);
		
		var zur = document.createElement('a');
		zur.setAttribute('href','#');
		zur.setAttribute('onclick',"getOverview('"+(site-1)+"');");
		zur.innerHTML = "<-- ";
		counter.appendChild(zur);
	}

	var r = 3;
	if(maxSite != "0"){
		var temp = Math.ceil(maxSite / 2);
		if(temp < r)r = temp;
	}
	var r2 = r * 2;
	var st = site - r;
	if(st < 1)st = 1;
	for(var i = 0; i <= r2; i++){
		var ps = st + i;
		if(ps <= toint(maxSite)){
			
			if(site != ps){
				var anker = document.createElement('a');
				anker.setAttribute('href','#');
				anker.setAttribute('onclick','getOverview(\''+ps+'\');');
				anker.innerHTML = " "+ps+" ";
			}else{
				var anker = document.createElement('span');
				anker.innerHTML = ".."+ps+"..";
			}
			counter.appendChild(anker);
			
		}else{
			break;
		}
	}
	
	
	if(site != maxSite){
		var weit = document.createElement('a');
		weit.setAttribute('href','#');
		var temp = site;
		temp++;
		weit.setAttribute('onclick','getOverview(\''+temp+'\');');
		weit.innerHTML = " -->";
		counter.appendChild(weit);
		
		var weit = document.createElement('a');
		weit.setAttribute('href','#');
		var temp = site;
		temp++;
		weit.setAttribute('onclick','getOverview(\''+maxSite+'\');');
		weit.innerHTML = " -->|";
		counter.appendChild(weit);
	}
	
	var sum_of_item = document.createElement('p');
	sum_of_item.innerHTML = '(Gesamt: '+size+')';
	counter.appendChild(sum_of_item);
}

function win_open(name){
	var layer=document.getElementById(name);
		//layer.style.visibility = 'visible';
		if(layer != null)layer.className = "cont_visible";
	}

//
function win_close(name){
	var layer=document.getElementById(name);
		//layer.style.visibility = 'hidden';
		//layer.style.width = '1px';
		//layer.style.overflow = 'hidden';
		//layer.style.position = 'absolute';
		if(layer != null)layer.className = "cont_hidden";

	}

function to_link(to){
	 window.location.href= to;
}

function to_linko(to){
	 opener.location.href= to;
}

function ask_save(to){
	Check = confirm('Wirklich die Seite wechseln?\nNicht gespeicherte Daten gehen verloren.');
	if (Check == true)
	 window.location.href= to;

}


function to_linkM(to,message){
	Check = confirm(message);
	if (Check == true)
	 window.location.href= to;

}

function toSubmitM(message, formId){
	Check = confirm(message);
	if (Check == true)
	 document.getElementById(formId).submit();

}

function toint(text){
	text = ++text;
	text = --text;
	return text;
}


/*Hilfsfuntionen*/
function print_r(theObj){
	var text = '';
	if(theObj.constructor == Array ||theObj.constructor == Object){
		text += '<ul>';
		for(var p in theObj){
			 if(theObj[p].constructor == Array||theObj[p].constructor == Object){
				text += "<li>["+p+"] => "+typeof(theObj)+"</li>";
				text += "<ul>";
				print_r(theObj[p]);
				text += "</ul>";
			} else {
				text +="<li>["+p+"] => "+theObj[p]+"</li>";
			}
		}
		text +="</ul>";
	}
	return text;
}

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}


function htmlspecialchars (string, quote_style, charset, double_encode) {
    // Convert special characters to HTML entities  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/htmlspecialchars    // +   original by: Mirek Slugen
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Nathan
    // +   bugfixed by: Arno
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // +      input by: Mailfaker (http://www.weedem.fr/)
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // +      input by: felix    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // %        note 1: charset argument not supported
    // *     example 1: htmlspecialchars("<a href='test'>Test</a>", 'ENT_QUOTES');
    // *     returns 1: '&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;'
    // *     example 2: htmlspecialchars("ab\"c'd", ['ENT_NOQUOTES', 'ENT_QUOTES']);    // *     returns 2: 'ab"c&#039;d'
    // *     example 3: htmlspecialchars("my "&entity;" is still here", null, null, false);
    // *     returns 3: 'my &quot;&entity;&quot; is still here'
    var optTemp = 0, i = 0, noquotes= false;
    if (typeof quote_style === 'undefined' || quote_style === null) {        quote_style = 2;
    }
    string = string.toString();
    if (double_encode !== false) { // Put this first to avoid double-encoding
        string = string.replace(/&/g, '&amp;');    }
    string = string.replace(/</g, '&lt;').replace(/>/g, '&gt;');
 
    var OPTS = {
        'ENT_NOQUOTES': 0,        'ENT_HTML_QUOTE_SINGLE' : 1,
        'ENT_HTML_QUOTE_DOUBLE' : 2,
        'ENT_COMPAT': 2,
        'ENT_QUOTES': 3,
        'ENT_IGNORE' : 4    };
    if (quote_style === 0) {
        noquotes = true;
    }
    if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags        quote_style = [].concat(quote_style);
        for (i=0; i < quote_style.length; i++) {
            // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
            if (OPTS[quote_style[i]] === 0) {
                noquotes = true;            }
            else if (OPTS[quote_style[i]]) {
                optTemp = optTemp | OPTS[quote_style[i]];
            }
        }        quote_style = optTemp;
    }
    if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
        string = string.replace(/'/g, '&#039;');
    }    if (!noquotes) {
        string = string.replace(/"/g, '&quot;');
    }
 
    return string;
}

function sleep(milliSeconds){
    var startTime = new Date().getTime(); // get the current time
   while (new Date().getTime() < startTime + milliSeconds); // hog cpu
}

function is_array(input){
    return typeof(input)=='object'&&(input instanceof Array);
  }
  
function rawurlencode(str) {
// http://kevin.vanzonneveld.net
// +   original by: Brett Zamir (http://brett-zamir.me)
// +      input by: travc
// +      input by: Brett Zamir (http://brett-zamir.me)
// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// +      input by: Michael Grier
// +   bugfixed by: Brett Zamir (http://brett-zamir.me)
// +      input by: Ratheous
// +      reimplemented by: Brett Zamir (http://brett-zamir.me)
// +   bugfixed by: Joris
// +      reimplemented by: Brett Zamir (http://brett-zamir.me)
// %          note 1: This reflects PHP 5.3/6.0+ behavior
// %        note 2: Please be aware that this function expects to encode into UTF-8 encoded strings, as found on
// %        note 2: pages served as UTF-8
// *     example 1: rawurlencode('Kevin van Zonneveld!');
// *     returns 1: 'Kevin%20van%20Zonneveld%21'
// *     example 2: rawurlencode('http://kevin.vanzonneveld.net/');
// *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
// *     example 3: rawurlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
// *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'

str = (str+'').toString();

// Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
// PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
																replace(/\)/g, '%29').replace(/\*/g, '%2A');
}

function winopen(url,name, w, h){
	window.open(url,name,'width='+w+', height='+h+', status=yes, scrollbars=yes, resizable=no, menubar=no');	
}
