	function eraseTextForm(myForm){
		for(i=0;i<myForm.elements.length;i++) {
			myForm.elements[i].value="";
			myForm.elements[i].selectedIndex=0;
		}
		myForm.submit();
	}

	function disableForm(myForm){
		myForm.style.display='none';
		showwaitmsg();
	}

	function eraseForm(myForm){
		for(i=0;i<myForm.elements.length;i++) {
			myForm.elements[i].value="";
			myForm.elements[i].selectedIndex=0;
		}
		disableForm(myForm);
		myForm.submit();
	}

	function eraseFormElement (myForm,myElement){
		for(i=0;i<myForm.elements.length;i++) {
			if( myForm.elements[i].name.indexOf(myElement) >= 0 ) {
				myForm.elements[i].value="";
				myForm.elements[i].selectedIndex=0;
			}
		}
		disableForm(myForm);
		myForm.submit();
	}
	function activate(element, value){
		element.style.visibility="visible";
		element.value=value;
		document.getElementById(element.name).style.visibility="visible";
	}
	function showwaitmsg() {
		document.getElementById('searchwaitmsg').style.display='block';
		return(true)
	}

	var answer = false;
	
	function checkAGB(link){
		var cookie = getCookie('AGB');
		var isChromeOrIE = (navigator.userAgent.indexOf("Chrome") > -1 || navigator.userAgent.indexOf("MSIE") > -1);
		if( cookie == null ){ agb = 'false'; } else { agb = cookie; }	
		if( agb == 'false' ){
			if (!isChromeOrIE){
				var answer = window.confirm(unescape("Please carefully read the disclaimer before using any of this data. Your use of this data constitutes your acceptance of the terms and conditions set forth below. If you do not agree to those terms and conditions, please click on Cancel/Abbrechen.\n\nThis information has been provided to you free of charge for your use but remains the sole property of W%FCrth Elektronik eiSos GmbH & Co. KG. While W%FCrth Elektronik eiSos has used reasonable efforts to ensure its accuracy, W%FCrth Elektronik eiSos GmbH & Co. KG. does not guarantee that it is error-free, nor makes any other representation, warranty or guarantee that the information is completely accurate or up-to-date. In many cases, the CAD data has been simplified to remove proprietary detail while maintaining critical interface geometric detail for use by customers. W%FCrth Elektronik eiSos expressly disclaims all implied warranties regarding this information, including but not limited to any implied warranties or merchantability or fitness for a particular purpose.\n\nW%FCrth Elektronik eiSos GmbH & Co. KG will in no case be liable for your use, or the results of your use, of the CAD models or any accompanying written materials. IT IS YOUR RESPONSIBILITY TO VERIFY THE RESULTS OF YOUR USE OF THIS INFORMATION IN YOUR OWN PARTICULAR ENGINEERING AND PRODUCT ENVIRONMENT AND YOU ASSUME THE ENTIRE RISK OF DOING SO OR FAILING TO DO SO.\n\nIn no event will W%FCrth Elektronik eiSos or its contractors, directors, officers, employees, affiliates or distributors be liable for any direct, indirect, special, incidental or consequential damages (including but not limited to, damages for lost business, lost profits, business interruptions and loss of information) arising from your use of, or your inability to use the CAD models or any accompanying written materials, even if W%FCrth Elektronik eiSos has been advised of the possibility of such damages. In no event will W%FCrth Elektronik eiSos' liability to you for any cause whatsoever, and regardless of the form of action, exceed %u20AC250.\n\nNo oral or written information of advice given by W%FCrth Elektronik eiSos or its distributors, agents or employees will operate to create any warranty or guarantee or vary any provision or information herein, and you may not rely on any such information or advice. W%FCrth Elektronik eiSos reserves the right to change any portion of this data at any time without notice."));
			} else {
				var answer = window.confirm(unescape("Please carefully read the disclaimer before using any of this data. Your use of this data constitutes your acceptance of the terms and conditions set forth below. If you do not agree to those terms and conditions, please click on Cancel/Abbrechen.\n\nThis information has been provided to you free of charge for your use but remains the sole property of W%FCrth Elektronik eiSos GmbH & Co. KG. While W%FCrth Elektronik eiSos has used reasonable efforts to ensure its accuracy, W%FCrth Elektronik eiSos GmbH & Co. KG. does not guarantee that it is error-free, nor makes any other representation, warranty or guarantee that the information is completely accurate or up-to-date. In many cases, the CAD data has been simplified to remove proprietary detail while maintaining critical interface geometric detail for use by customers. W%FCrth Elektronik eiSos expressly disclaims all implied warranties regarding this information, including but not limited to any implied warranties or merchantability or fitness for a particular purpose.\n\nW%FCrth Elektronik eiSos GmbH & Co. KG will in no case be liable for your use, or the results of your use, of the CAD models or any accompanying written materials.\n\n (Disclaimer Part 1/2, OK to continue)"));
				if (answer){
					var answer = window.confirm(unescape("IT IS YOUR RESPONSIBILITY TO VERIFY THE RESULTS OF YOUR USE OF THIS INFORMATION IN YOUR OWN PARTICULAR ENGINEERING AND PRODUCT ENVIRONMENT AND YOU ASSUME THE ENTIRE RISK OF DOING SO OR FAILING TO DO SO.\n\nIn no event will W%FCrth Elektronik eiSos or its contractors, directors, officers, employees, affiliates or distributors be liable for any direct, indirect, special, incidental or consequential damages (including but not limited to, damages for lost business, lost profits, business interruptions and loss of information) arising from your use of, or your inability to use the CAD models or any accompanying written materials, even if W%FCrth Elektronik eiSos has been advised of the possibility of such damages. In no event will W%FCrth Elektronik eiSos' liability to you for any cause whatsoever, and regardless of the form of action, exceed %u20AC250.\n\nNo oral or written information of advice given by W%FCrth Elektronik eiSos or its distributors, agents or employees will operate to create any warranty or guarantee or vary any provision or information herein, and you may not rely on any such information or advice. W%FCrth Elektronik eiSos reserves the right to change any portion of this data at any time without notice.\n\n (Disclaimer Part 2/2, OK to accept)"));
				}
			}
			setCookie('AGB', answer);
			return answer;
		}
		return true;
	}
	
	function toggleColumn( cell ){
		//alert("Test");
	}
	
	startList = function() {
		navRoot = document.getElementById("nav_main");
		navul = navRoot.getElementsByTagName("ul");
		navli = navul[0].getElementsByTagName("li");
		for (i=0; i<navli.length; i++) {
			nava = navli[i].getElementsByTagName("a");
			navli[i].onmouseover=function() {
				if( this.className.match("sub$")=="sub" ){ this.className+=" over"; }
				if( this.parentNode.parentNode.className.match("sub$")=="sub" ){ this.parentNode.parentNode.className+=" over"; }
			}
			navli[i].onmouseout=function() {
				if( this.className.match("sub over$")=="sub over" ){ this.className=this.className.replace(/ over/g, ""); }
				if( this.parentNode.parentNode.className.match("sub over$")=="sub over" ){ this.parentNode.parentNode.className=this.parentNode.parentNode.className.replace(/ over/g, ""); }
			}
			for (j=0; j<nava.length; j++) {
				nava[j].onfocus=function() {
					if( this.parentNode.className.match("sub$")=="sub" ){ this.parentNode.className+=" over"; }
					if( this.parentNode.parentNode.parentNode.className.match("sub$")=="sub" ){ this.parentNode.parentNode.parentNode.className+=" over"; }
				}
				nava[j].onblur=function() {
					if( this.parentNode.className.match("sub over$")=="sub over" ){ this.parentNode.parentNode.parentNode.className=this.parentNode.className=this.parentNode.className.replace(/ over/g, ""); }
					if( this.parentNode.parentNode.parentNode.className.match("sub over$")=="sub over" ){ this.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.className.replace(/ over/g, ""); }
				}
			}
		}
	}
	
	function Popup( link ) {
		var img = new Image();
		img.onload = function() {
			var size = "width=" + (img.width + 30) + ",height=" + (img.height + 30);
			var popup = window.open(img.src, "popup", size);
			popup.innerWidth = img.width + 30;
			popup.innerHeight = img.height + 30;
		}  
		img.src = link.href;
		return false;
    }
	
	function addLoadEvent(func) {
		var oldonload = window.onload;
		if (typeof window.onload != 'function') {
			window.onload = func;
		} else {
			window.onload = function() {
				if (oldonload) {
					oldonload();
				}
				func();
			}
		}
	}
	

// aryWarez ist global, muss man der Funktion nicht übergeben
var aryWarez;
function initArticles(){
	var cooWarez = getCookie('Warenkorb');
	if (cooWarez == null){
		aryWarez = new Object();
	} else {
		aryWarez = unserialize(cooWarez);
	}
	
	for (var i in aryWarez){
		if( document.getElementById("art"+aryWarez[i]['artnr']) != null ){
			document.getElementById("art"+aryWarez[i]['artnr']).parentNode.setAttribute('onClick', "deleteArticle('"+aryWarez[i]['artnr']+"', '"+aryWarez[i]['name']+"')");
			document.getElementById("art"+aryWarez[i]['artnr']).src = document.getElementById("art"+aryWarez[i]['artnr']).src.replace( /plus/g, "minus" );
		}
	}

}

function addArticle( artnr, name ){
	if( document.getElementById("art"+artnr) != null ){
		document.getElementById("art"+artnr).setAttribute('onClick', "deleteArticle('"+artnr+"', '"+name+"')");
		document.getElementById("art"+artnr).src = document.getElementById("art"+artnr).src.replace( /plus/g, "minus" );
	}
	aryWarez[artnr] = {"artnr":artnr,"name":escape(name),"amntMuster":1,"amntAngebot":0};
	setCookie('Warenkorb', serialize(aryWarez) , 30, '/', '.we-online.de', '');	
	return false;
}

function deleteArticle( artnr, name ){
	if( document.getElementById("art"+artnr) != null ){
		document.getElementById("art"+artnr).setAttribute('onClick', "addArticle('"+artnr+"', '"+name+"')");
		document.getElementById("art"+artnr).src = document.getElementById("art"+artnr).src.replace( /minus/g, "plus" );
	}
	delete( aryWarez[artnr] );
	setCookie('Warenkorb', serialize(aryWarez) , 30, '/', '.we-online.de', '');	
	return false;
}

function serialize (mixed_value) {
    // Returns a string representation of variable (which can later be unserialized)  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/serialize
    // +   original by: Arpad Ray (mailto:arpad@php.net)
    // +   improved by: Dino
    // +   bugfixed by: Andrej Pavlovic
    // +   bugfixed by: Garagoth
    // +      input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
    // +   bugfixed by: Russell Walker (http://www.nbill.co.uk/)
    // +   bugfixed by: Jamie Beck (http://www.terabit.ca/)
    // +      input by: Martin (http://www.erlenwiese.de/)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // -    depends on: utf8_encode
    // %          note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %          note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *     example 1: serialize(['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
    // *     example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
    // *     returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'
    var _getType = function (inp) {
        var type = typeof inp, match;
        var key;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            match = cons.match(/(\w+)\(/);
            if (match) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            mixed_value = this.utf8_encode(mixed_value);
            val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            /*
            if (type == "object") {
                var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
                if (objname == undefined) {
                    return;
                }
                objname[1] = this.serialize(objname[1]);
                val = "O" + objname[1].substring(1, objname[1].length - 1);
            }
            */
            var count = 0;
            var vals = "";
            var okey;
            var key;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function") { 
                    continue; 
                }
                
                okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
                vals += this.serialize(okey) +
                        this.serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
        case "undefined": // Fall-through
        default: // if the JS object has a property which contains a null value, the string cannot be unserialized by PHP
            val = "N";
            break;
    }
    if (type != "object" && type != "array") {
        val += ";";
    }
    return val;
}
 
function unserialize (data) {
    // Takes a string representation of variable and recreates it  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/unserialize
    // +     original by: Arpad Ray (mailto:arpad@php.net)
    // +     improved by: Pedro Tainha (http://www.pedrotainha.com)
    // +     bugfixed by: dptr1988
    // +      revised by: d3x
    // +     improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +        input by: Brett Zamir (http://brett-zamir.me)
    // +     improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     improved by: Chris
    // +     improved by: James
    // +        input by: Martin (http://www.erlenwiese.de/)
    // +     bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     improved by: Le Torbi
    // +     input by: kilops
    // +     bugfixed by: Brett Zamir (http://brett-zamir.me)
    // -      depends on: utf8_decode
    // %            note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %            note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *       example 1: unserialize('a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}');
    // *       returns 1: ['Kevin', 'van', 'Zonneveld']
    // *       example 2: unserialize('a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}');
    // *       returns 2: {firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'}
    var that = this;
    var utf8Overhead = function(chr) {
        // http://phpjs.org/functions/unserialize:571#comment_95906
        var code = chr.charCodeAt(0);
        if (code < 0x0080) {
            return 0;
        }
        if (code < 0x0800) {
             return 1;
        }
        return 2;
    };
 
 
    var error = function (type, msg, filename, line){throw new that.window[type](msg, filename, line);};
    var read_until = function (data, offset, stopchr){
        var buf = [];
        var chr = data.slice(offset, offset + 1);
        var i = 2;
        while (chr != stopchr) {
            if ((i+offset) > data.length) {
                error('Error', 'Invalid');
            }
            buf.push(chr);
            chr = data.slice(offset + (i - 1),offset + i);
            i += 1;
        }
        return [buf.length, buf.join('')];
    };
    var read_chrs = function (data, offset, length){
        var buf;
 
        buf = [];
        for (var i = 0;i < length;i++){
            var chr = data.slice(offset + (i - 1),offset + i);
            buf.push(chr);
            length -= utf8Overhead(chr); 
        }
        return [buf.length, buf.join('')];
    };
    var _unserialize = function (data, offset){
        var readdata;
        var readData;
        var chrs = 0;
        var ccount;
        var stringlength;
        var keyandchrs;
        var keys;
 
        if (!offset) {offset = 0;}
        var dtype = (data.slice(offset, offset + 1)).toLowerCase();
 
        var dataoffset = offset + 2;
        var typeconvert = function(x) {return x;};
 
        switch (dtype){
            case 'i':
                typeconvert = function (x) {return parseInt(x, 10);};
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case 'b':
                typeconvert = function (x) {return parseInt(x, 10) !== 0;};
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case 'd':
                typeconvert = function (x) {return parseFloat(x);};
                readData = read_until(data, dataoffset, ';');
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 1;
            break;
            case 'n':
                readdata = null;
            break;
            case 's':
                ccount = read_until(data, dataoffset, ':');
                chrs = ccount[0];
                stringlength = ccount[1];
                dataoffset += chrs + 2;
 
                readData = read_chrs(data, dataoffset+1, parseInt(stringlength, 10));
                chrs = readData[0];
                readdata = readData[1];
                dataoffset += chrs + 2;
                if (chrs != parseInt(stringlength, 10) && chrs != readdata.length){
                    error('SyntaxError', 'String length mismatch');
                }
 
                // Length was calculated on an utf-8 encoded string
                // so wait with decoding
                readdata = that.utf8_decode(readdata);
            break;
            case 'a':
                readdata = {};
 
                keyandchrs = read_until(data, dataoffset, ':');
                chrs = keyandchrs[0];
                keys = keyandchrs[1];
                dataoffset += chrs + 2;
 
                for (var i = 0; i < parseInt(keys, 10); i++){
                    var kprops = _unserialize(data, dataoffset);
                    var kchrs = kprops[1];
                    var key = kprops[2];
                    dataoffset += kchrs;
 
                    var vprops = _unserialize(data, dataoffset);
                    var vchrs = vprops[1];
                    var value = vprops[2];
                    dataoffset += vchrs;
 
                    readdata[key] = value;
                }
 
                dataoffset += 1;
            break;
            default:
                error('SyntaxError', 'Unknown / Unhandled data type(s): ' + dtype);
            break;
        }
        return [dtype, dataoffset - offset, typeconvert(readdata)];
    };
    
    return _unserialize((data+''), 0)[2];
}
 

 
function getCookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

function setCookie( name, value, expires, path, domain, secure){
var today = new Date();
today.setTime( today.getTime() );
 
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
 
document.cookie = name + "=" + escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
( ( path ) ? ";path=" + path : "" ) + 
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
 
}

function utf8_decode ( str_data ) {
    // Converts a UTF-8 encoded string to ISO-8859-1  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/utf8_decode
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +      input by: Aman Gupta
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Norman "zEh" Fuchs
    // +   bugfixed by: hitwork
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: utf8_decode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
    var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;
    
    str_data += '';
    
    while ( i < str_data.length ) {
        c1 = str_data.charCodeAt(i);
        if (c1 < 128) {
            tmp_arr[ac++] = String.fromCharCode(c1);
            i++;
        } else if ((c1 > 191) && (c1 < 224)) {
            c2 = str_data.charCodeAt(i+1);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
 
    return tmp_arr.join('');
}

function utf8_encode ( argString ) {
    // Encodes an ISO-8859-1 string to UTF-8  
    // 
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/utf8_encode
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +   improved by: Yves Sucaet
    // +   bugfixed by: Onno Marsman
    // +   bugfixed by: Ulrich
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
    var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
 
    var utftext = "";
    var start, end;
    var stringl = 0;
 
    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;
 
        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n+1;
        }
    }
 
    if (end > start) {
        utftext += string.substring(start, string.length);
    }
 
    return utftext;
}

