var xhttp;
var callFnkt;
var aktXML;
var content;
var  window_width;
///////////////////////
// Allgemeine Funktionen
//////////////////////
 
function init() {
init_ajax();
	
window.onresize = function() {
  if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" &&  getWindowWidth() != window_width) {
        window.location.href = window.location.href;
  }
  
   window_width =  getWindowWidth();
}

 window_width =  getWindowWidth();
 init2();
}

function getWindowWidth () {
	if (document.documentElement.clientWidth) {
		return document.documentElement.clientWidth
	} else {
		return 0;
	}
}

function init_ajax()
{
	if (window.ActiveXObject) {
		try {
			//IE 6
			xhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try {
				//IE 5
				xhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				xhttp = false;
			}
		}
	//Mozilla,Safari,Firefox
	} else if(window.XMLHttpRequest) {
		try {
			xhttp = new XMLHttpRequest();
		}
		catch (e) {
			xhttp = false;
		}
	}
}


function CallbackFkt() 
{
	if( xhttp.readyState == 4 )
	{
		if( xhttp.status != 200) 
        {
        }
        
        else
        {
			aktXML = xhttp.responseXML;

			if(callFnkt) eval(callFnkt + "( )")
        }
     }
}


function getXML(url) 
{
	xhttp.open("GET",url,true);
	xhttp.onreadystatechange = CallbackFkt;
	xhttp.send(null);
}


function hide( ID )
{
	var elem = document.getElementById( ID );
    
	if (!elem) { return }
    
	elem.style.display = "none";
}


function show( ID )
{
	var elem = document.getElementById( ID );
    
	if (!elem) { return }
    
	elem.style.display = "block";
}


function deleteChilds(elementId) 
{
	var elem = document.getElementById(elementId); 

	if (!elem) { return }
 
	else if ( elem.hasChildNodes() ) 
 	{
 		while ( elem.hasChildNodes() ) 
 		{
   			var child = elem.firstChild;
   			elem.removeChild(child);
   		}
  	} else { return }
}


function open_pop(b, h, url, name)
{
	var bildschirmx = screen.availWidth;
	var bildschirmy = screen.availHeight;

	var breite = b;
	var hoehe = h;

	var startx = Math.round(bildschirmx / 2) - (breite / 2);
	var starty = Math.round(bildschirmy / 2) - (hoehe / 2);

	popup = window.open(url, name, "width="+ breite + ", height=" + hoehe
				+ ", status=no, toolbar=no, menubar=no, resizable=yes, scrollbars=yes, screenX=" + startx
				+ ", left=" + startx + ", screenY=" + starty + ", top=" + starty + " ");

	popup.focus();
	
	return false;
}

function clearv( ID )
{
	var elem = document.getElementById( ID );
    
	if (!elem) { return }
    
	elem.value = "";
}

function  search_details(cat, string) 
{
	if(!xhttp) return true;
	
	//auzurufenden funktion
	callFnkt = "change_search_content";

	//neue details holen
	getXML(HTML_PATH_REL + "einkaufen/suchergebnisse.php?cat=" + cat + "&search=" + string + "");

	return false;
}

function change_search_content()
{
	if(typeof aktXML == "undefined")  var text = '<div class="message">Fehler beim Laden!</div>';
	else var text = aktXML.getElementsByTagName('content')[0].firstChild.data;

	document.getElementById("searchcontent").innerHTML = text;	
}	

function clear_ele(obj)
{
	if(obj.value == standard_comment_text)
		obj.value = "";
}

/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}

/* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Safari doesn't support canceling events in the standard way, so we must
 * hard-code a return of false for it to work.
 */
function cancelEventSafari() {
    return false;        
}

/* 
 * Cross-browser style extraction, from the JavaScript & DHTML Cookbook
 * <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html>
 */
function getElementStyle(elementID, CssStyleProperty) {
    var element = document.getElementById(elementID);
    if (element.currentStyle) {
        return element.currentStyle[toCamelCase(CssStyleProperty)];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(element, '');
        return compStyle.getPropertyValue(CssStyleProperty);
    } else {
        return '';
    }
}

/* 
 * CamelCases CSS property names. Useful in conjunction with 'getElementStyle()'
 * From <http://dhtmlkitchen.com/learn/js/setstyle/index4.jsp>
 */
function toCamelCase(CssProperty) {
    var stringArray = CssProperty.toLowerCase().split('-');
    if (stringArray.length == 1) {
        return stringArray[0];
    }
    var ret = (CssProperty.indexOf("-") == 0)
              ? stringArray[0].charAt(0).toUpperCase() + stringArray[0].substring(1)
              : stringArray[0];
    for (var i = 1; i < stringArray.length; i++) {
        var s = stringArray[i];
        ret += s.charAt(0).toUpperCase() + s.substring(1);
    }
    return ret;
}

/*
 * Disables all 'test' links, that point to the href '#', by Ross Shannon
 */
function disableTestLinks() {
  var pageLinks = document.getElementsByTagName('a');
  for (var i=0; i<pageLinks.length; i++) {
    if (pageLinks[i].href.match(/[^#]#$/)) {
      addEvent(pageLinks[i], 'click', knackerEvent, false);
    }
  }
}

/* 
 * Cookie functions
 */
function createCookie(name, value, days) {
    var expires = '';
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = name + '=' + value + expires + '; path=/';
}

function readCookie(name) {
    var cookieCrumbs = document.cookie.split(';');
    var nameToFind = name + '=';
    for (var i = 0; i < cookieCrumbs.length; i++) {
        var crumb = cookieCrumbs[i];
        while (crumb.charAt(0) == ' ') {
            crumb = crumb.substring(1, crumb.length); /* delete spaces */
        }
        if (crumb.indexOf(nameToFind) == 0) {
            return crumb.substring(nameToFind.length, crumb.length);
        }
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, '', -1);
}

/*
 * Clear Default Text: functions for clearing and replacing default text in
 * <input> elements.
 *
 * by Ross Shannon, http://www.yourhtmlsource.com/
 */



function init2() {
    var formInputs = document.getElementsByTagName('input');
    for (var i = 0; i < formInputs.length; i++) {
        var theInput = formInputs[i];
        
        if (theInput.type == 'text' && theInput.className.match(/\bcleardefault\b/)) {  
            /* Add event handlers */          
            addEvent(theInput, 'focus', clearDefaultText, false);
            addEvent(theInput, 'blur', replaceDefaultText, false);
            
            /* Save the current value */
            if (theInput.value != '') {
                theInput.defaultText = theInput.value;
            }
        }
    }
}

function clearDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == target.defaultText) {
        target.value = '';
    }
}

function replaceDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == '' && target.defaultText) {
        target.value = target.defaultText;
    }
}
