/* Bilder vorladen */
var img_b40     = new Image();
var img_b80     = new Image();
var img_b130    = new Image();
var img_bgr     = new Image();
var img_go      = new Image();
var img_win_max = new Image();
var img_win_min = new Image();
img_b40.src     = "/images/buttons/b_40x17.gif";
img_b80.src     = "/images/buttons/b_80x17.gif";
img_b130.src    = "/images/buttons/b_130x17.gif";
img_bgr.src     = "/images/bg.gif";
img_go.src      = "/images/go.gif";
img_win_min.src = "/images/icons/icon_win-min.gif";
img_win_max.src = "/images/icons/icon_win-max.gif";

var ajaxCache = []; // Cache für AJAX-Antworten

/* DOM Type bestimmen */
var is_regexp = (window.RegExp) ? true : false;
var Fobjects  = [];
var DOMtype   = '';

if (document.getElementById) {
	DOMtype = "std";
} else if (document.all) {
	DOMtype = "ie4";
} else if (document.layers) {
	DOMtype = "ns4";
}

// Browser ermitteln
var userAgent = navigator.userAgent.toLowerCase();
var is_opera  = (userAgent.indexOf('opera') != -1);
var is_saf    = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var is_webtv  = (userAgent.indexOf('webtv') != -1);
var is_ie     = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4    = ((is_ie) && (userAgent.indexOf('msie 4.') != -1));
var is_moz    = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon    = (userAgent.indexOf('konqueror') != -1);
var is_ns     = ((userAgent.indexOf('compatible') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4    = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_mac    = (userAgent.indexOf('mac') != -1);
var css_cursor = (is_ie ? 'hand' : 'pointer');

// Cookie setzen
function set_cookie(name, wert, tage) {
    try {
        var ablauf = "";
    	if (tage) {
    		var date = new Date();
    		date.setTime(date.getTime() + (tage*24*60*60*1000));
    		ablauf = "; expires=" + date.toGMTString();
    	}
    	document.cookie = name + "=" + wert + ablauf + "; path=/";
	} catch(e) {}
}

// Cookie lesen
function get_cookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i=0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)== ' ') {
            c = c.substring(1,c.length);
        }
		if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
	}
	return null;
}

// Cookie entfernen
function remove_cookie(name) {
	set_cookie(name, "", -1);
}

/* Objekt bestimmen */
function fetch_object(idname, forcefetch) {
	if (forcefetch || typeof(Fobjects[idname]) == "undefined") {
		switch (DOMtype) {
			case "std": Fobjects[idname] = document.getElementById(idname); 
			break;
			case "ie4": Fobjects[idname] = document.all[idname];
			break;
			case "ns4": Fobjects[idname] = document.layers[idname];
			break;
		}
	}
	return Fobjects[idname];
}


/* Alias zu fetch_object() */
function $(idname) {
    return fetch_object(idname);
}


/* Ansicht ein-ausschalten */
function display_switch(idname) {
	var obj = fetch_object(idname);
	var iid = (idname + "_icon");
	var iob = fetch_object(iid);
	if (obj) {
	    if (null == obj.getAttribute('style')) { obj.setAttribute('style', ''); }
		if (obj.style.display == "none") {
			obj.style.display = "";
		} else {
			obj.style.display = "none";
		}
	}

	if (iob) {
		if (iob.className == "iconShow") {
			iob.className  = "iconHide";
			check_onoff_cookie(idname, 'off');
		} else {
			iob.className  = "iconShow";
			check_onoff_cookie(idname, 'on');
		}
	}
	return false;
}

Array.prototype.in_array = function(theVal) {
	var x = this;
	for (var arrKey in x) { if (x[arrKey] == theVal) { return true; } }
	return false;
}


function check_onoff_cookie(theId, theVal) {
	try {
		var groupOn = ['sbox'];
		var groupOff = ['newsbox', 'httpbl', 'proxytest'];
		var myTest = theId.split('_');

		if (theVal == 'on' && groupOn.in_array(myTest[0])) {
		        remove_cookie(theId);
		        return false;
		} else if (theVal == 'off' && groupOff.in_array(myTest[0])) {
		        remove_cookie(theId);
		        return false;
		}
		set_cookie(theId, theVal);
		return false;
	} catch (e) {
		set_cookie(theId, theVal);
	}
}



/* Fenster oeffnen V1*/
function openwindow(url, wname) {
	window.open(url, wname, 'scrollbars=1,resizable=no,width=500,height=300,status=0,menubar=0');
}


/* Fenster oeffnen V2*/
function imagewindow(url, wname, w, h) {
	var wwidth  = "width="  +w ;
	var wheight = "height=" +h ;
	window.open(url, wname, 'scrollbars=no,resizable=no,status=0,menubar=0' +wwidth +',' +wheight);
}

/******************/
// ersetze HTML Inhalt mit Daten aus AJAX-Request
function loadAjaxContent(SourceUrl, theTitle) {
  if (theTitle) { document.title = 'D0X.de | ' + theTitle; }

  if (ajaxCache[SourceUrl]) {
    $('colum_pagecenter').innerHTML = ajaxCache[SourceUrl];
    return false;
  }

  var data = sendXMLHttpRequest(SourceUrl, setAjaxContent);
  window.scroll(0,0);
  return false;
}

// Helper-Function (callback) für loadAjaxContent()
function setAjaxContent(req, url) {
  var obj = $('colum_pagecenter');
  if (req.responseText) {
    obj.innerHTML = req.responseText;
    ajaxCache[url] = req.responseText;
  }
  reloadTopBanner();
  return false;
}

// TopBanner per Ajax neu laden
function reloadTopBanner(req) {
  var obj = $('header_col_right');
  if (!req) {
    sendXMLHttpRequest('/product-info.php?rand=' + Math.random(), reloadTopBanner);
  } else {
      obj.innerHTML = '<img src="/images/product-info.gif" alt="Product Information" style="border:none 0px; width:8px; height:60px;">' +
                      req.responseText + '&nbsp;';
  }
}

// AJAX - einfache Methode um externe Daten zu erhalten
function sendXMLHttpRequest(url, callback, postData) {
	var req = createXMLHttpObject();
	if (!req) { return false; }
	// var randomnumber  = Math.floor(Math.random() * 100000) + 1;
	req.onreadystatechange = function() {
		if (req.readyState != 4) { return false; }
		if (req.status != 200 && req.status != 304) { return false; }
		callback(req, url);
	};
	
	var method = (postData) ? "POST" : "GET";	
	if (method == 'GET') {
	    req.open(method, url, true);
	    req.setRequestHeader('User-Agent','XMLHTTP/1.0');
      req.send(null);
    } else if (methode == 'POST') {
        req.open(method, url, true);
        req.setRequestHeader('User-Agent','XMLHTTP/1.0');
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.send(postData);
    }
    return req;
}

// AJAX - Methoden um ein XMLHttpd-Objekt zu erstellen
function XMLHttpFactories() {
	return [
		function() { return new XMLHttpRequest(); },
		function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
		function() { return new ActiveXObject("Msxml3.XMLHTTP"); },
		function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
	];
}

// AJAX - XMLHttpd-Objekt erstellen
function createXMLHttpObject() {
	var xmlhttp = false;
	var factories = XMLHttpFactories();
	for (var i=0; i < factories.length; i++) {
		try {
			xmlhttp = factories[i]();
		} catch (e) {
			continue;
		}
		break;
	}
	return xmlhttp;
}

