
var marked_row = new Array; 

function sf()
{
	if(document.searchfield != null){document.searchfield.searchstring.focus();}
}

function close_warning()
{
	parent.document.getElementById('load_warning').style.display = 'none';
}

function open_pdf_2_elkat(pSessID)
{
	window.open("shopvorschau.php?submode=pdf2elkat&mode=pdfoutput&SessID=" + pSessID  ,"Vorschau", "toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=1000,height=650,resizable=1,help=no,edge=Sunken");
}

function open_pdf_download(pSessID)
{
	window.open("shopvorschau.php?mode=pdfoutput&SessID=" + pSessID  ,"Vorschau", "toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=1000,height=650,resizable=1,help=no,edge=Sunken");
}

function openvorschau(pSessID)
{
	window.open("shopvorschau.php?SessID=" + pSessID  ,"Vorschau", "toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=1000,height=650,resizable=1,help=no,edge=Sunken");
}

function ABmailen(clID, aID, pSessID)
{
	window.open("abmailen_popup.php?SessID=" + pSessID + "&clID=" + clID + "&aID="+ aID ,"Check", "toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=500,height=350,resizable=0,help=no,edge=Sunken");
}

function MailAccount(clID, pSessID)
{
	window.open("mailaccount_popup.php?SessID=" + pSessID + "&clID="+ clID ,"Check", "toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=650,height=650,resizable=0,help=no,edge=Sunken");
}

function CloseMailAccount(clID,pSessID)
{
	window.dialogArguments.sInput1 ='admin_crmclient.php?SessID=' + pSessID + '&pageform=2';
	opener.location.href=window.dialogArguments.sInput1;
	
}

function ShowArt(pCtrl,pSessID)
{
	exDateTime=document.getElementById(pCtrl).value;
	window.open("chooseart_popup.php?source="+pCtrl+"&SessID=" + pSessID + "&datestamp="+ exDateTime,"Artikel","toolbar=0,status=0,scrollbars=yes,status=yes,menubar=0,fullscreen=no,width=800,height=600,resizable=1,help=no,edge=Sunken");
}

function CheckClient(clemail, pSessID)
{
	window.open("checkclient_popup.php?SessID=" + pSessID + "&clemail="+ clemail ,"Check", "toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=300,height=150,resizable=0,help=no,edge=Sunken");
}

function QuickCalc(pSessID)
{
	window.open("quickcalc_popup.php?SessID=" + pSessID + "&datestamp="+ exDateTime,"Berechnung","toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=600,height=770,resizable=0,help=no,edge=Sunken,scrollbary=yes");
}

function ShowBackup(pSessID)
{
	window.open("backup_popup.php?SessID=" + pSessID + "&datestamp="+ exDateTime,"Datensicherung","toolbar=0,status=0, status=yes,menubar=0,fullscreen=no,width=350,height=200,resizable=0,help=no,edge=Sunken");
}

function returnItem(pCtrl,pValue)
{
	window.opener.document.getElementById(pCtrl).value = pValue;
	window.opener.document.absenden.doit.value = 'refreshangebot'
	window.opener.document.absenden.target='';
	window.opener.document.absenden.submit();
	window.close();
}

function ShowCal(pCtrl,pSessID)
{
	exDateTime=document.getElementById(pCtrl).value;
	window.open("choosedate_popup.php?source="+pCtrl+"&SessID=" + pSessID + "&datestamp="+ exDateTime,"KALENDER","toolbar=0,status=0, status=no,menubar=0,fullscreen=no,width=195,height=280,resizable=0,help=no,edge=Sunken");
}

function ShowCal2(pCtrl,pSessID,pID)
{
	exDateTime=document.getElementById(pCtrl).value;
	window.open("choosedate_popup.php?ID="+pID+"&REFERER=EXTERNAL_ALERT&source="+pCtrl+"&SessID=" + pSessID + "&datestamp="+ exDateTime,"KALENDER","toolbar=0,status=0, status=no,menubar=0,fullscreen=no,width=195,height=280,resizable=0,help=no,edge=Sunken");
}

function ShowCal9(pCtrl,pSessID,pID)
{
	exDateTime=document.getElementById(pCtrl).value;
	window.open("choosedate_popup.php?ID="+pID+"&REFERER=EXTERNAL_ALERT2&source="+pCtrl+"&SessID=" + pSessID + "&datestamp="+ exDateTime,"KALENDER","toolbar=0,status=0, status=no,menubar=0,fullscreen=no,width=195,height=280,resizable=1,help=no,edge=Sunken");
}

// UPLOAD FUNKTIONS
function uploadsubmit()
{
	document.form_upload.submit();
} 

function set_quality(wert)
{
	document.form_upload.IMAGE_QUALITY.value = wert;
} 
function set_resolution(wert)
{
	document.form_upload.IMAGE_RESOLUTION.value = wert;
} 
 
function popup(file, windowname, breite, hoehe)
{
	var wstat
	var ns4up = (document.layers) ? 1 : 0
	var ie4up = (document.all) ? 1 : 0
	var xsize = screen.width
	var ysize = screen.height
	var breite=420
	var hoehe=600
	var xpos=(xsize-breite-5)
	var ypos=0
	wstat=window.open(file,name, "scrollbars=yes,status=no,toolbar=no,location=no,directories=no,resizable=no,menubar=no,width="+breite+",height="+hoehe+",screenX="+xpos+",screenY="+ypos+",top="+ypos+",left="+xpos)
}

function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3

    // 3.3 ... Opera changes colors set via HTML to rgb(r,g,b) format so fix it
    if (currentColor.indexOf("rgb") >= 0) 
    {
        var rgbStr = currentColor.slice(currentColor.indexOf('(') + 1,
                                     currentColor.indexOf(')'));
        var rgbValues = rgbStr.split(",");
        currentColor = "#";
        var hexChars = "0123456789ABCDEF";
        for (var i = 0; i < 3; i++)
        {
            var v = rgbValues[i].valueOf();
            currentColor += hexChars.charAt(v/16) + hexChars.charAt(v%16);
        }
    }

    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor == ''
        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        if (theAction == 'over' && thePointerColor != '') {
            newColor              = thePointerColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
            // Garvin: deactivated onclick marking of the checkbox because it's also executed
            // when an action (like edit/delete) on a single item is performed. Then the checkbox
            // would get deactived, even though we need it activated. Maybe there is a way
            // to detect if the row was clicked, and not an item therein...
            // document.getElementById('id_rows_to_delete' + theRowNum).checked = true;
        }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
             && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
        if (theAction == 'out') {
            newColor              = theDefaultColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
            // document.getElementById('id_rows_to_delete' + theRowNum).checked = true;
        }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        if (theAction == 'click') {
            newColor              = (thePointerColor != '')
                                  ? thePointerColor
                                  : theDefaultColor;
            marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                  ? true
                                  : null;
            // document.getElementById('id_rows_to_delete' + theRowNum).checked = false;
        }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5

    return true;
} // end of the 'setPointer()' function

/*
 * Sets/unsets the pointer and marker in vertical browse mode
 *
 * @param   object    the table row
 * @param   interger  the row number
 * @param   string    the action calling this script (over, out or click)
 * @param   string    the default background color
 * @param   string    the color to use for mouseover
 * @param   string    the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 *
 * @author Garvin Hicking <me@supergarv.de> (rewrite of setPointer.)
 */
function setVerticalPointer(theRow, theRowNum, theAction, theDefaultColor1, theDefaultColor2, thePointerColor, theMarkColor) {
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;

    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        domDetect    = false;
    } // end 3

    var c = null;
    // 5.1 ... with DOM compatible browsers except Opera
    for (c = 0; c < rowCellsCnt; c++) {
        if (domDetect) {
            currentColor = theCells[c].getAttribute('bgcolor');
        } else {
            currentColor = theCells[c].style.backgroundColor;
        }

        // 4. Defines the new color
        // 4.1 Current color is the default one
        if (currentColor == ''
            || currentColor.toLowerCase() == theDefaultColor1.toLowerCase()
            || currentColor.toLowerCase() == theDefaultColor2.toLowerCase()) {
            if (theAction == 'over' && thePointerColor != '') {
                newColor              = thePointerColor;
            } else if (theAction == 'click' && theMarkColor != '') {
                newColor              = theMarkColor;
                marked_row[theRowNum] = true;
            }
        }
        // 4.1.2 Current color is the pointer one
        else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
                 && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
            if (theAction == 'out') {
                if (c % 2) {
                    newColor              = theDefaultColor1;
                } else {
                    newColor              = theDefaultColor2;
                }
            }
            else if (theAction == 'click' && theMarkColor != '') {
                newColor              = theMarkColor;
                marked_row[theRowNum] = true;
            }
        }
        // 4.1.3 Current color is the marker one
        else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
            if (theAction == 'click') {
                newColor              = (thePointerColor != '')
                                      ? thePointerColor
                                      : ((c % 2) ? theDefaultColor1 : theDefaultColor2);
                marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                      ? true
                                      : null;
            }
        } // end 4

        // 5. Sets the new color...
        if (newColor) {
            if (domDetect) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            }
            // 5.2 ... with other browsers
            else {
                theCells[c].style.backgroundColor = newColor;
            }
        } // end 5
    } // end for

     return true;
 } // end of the 'setVerticalPointer()' function

/**
 * Checks/unchecks all tables
 *
 * @param   string   the form name
 * @param   boolean  whether to check or to uncheck the element
 *
 * @return  boolean  always true
 */
 
 function setCheckboxes(the_form, do_check)
{
    var elts      = (typeof(document.forms[the_form].elements['selected_db[]']) != 'undefined')
                  ? document.forms[the_form].elements['selected_db[]']
                  : (typeof(document.forms[the_form].elements['selected_tbl[]']) != 'undefined')
          ? document.forms[the_form].elements['selected_tbl[]']
          : document.forms[the_form].elements['selected_fld[]'];
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;

    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
            elts[i].checked = do_check;
        } // end for
    } else {
        elts.checked        = do_check;
    } // end if... else

    return true;
} // end of the 'setCheckboxes()' function
// added 2004-05-08 by Michael Keck <mail_at_michaelkeck_dot_de>
//  - this was directly written to each td, so why not a function ;)
//  setCheckboxColumn(\'id_rows_to_delete' . $row_no . ''\');

function setCheckboxColumn(theCheckbox){
    if (document.getElementById(theCheckbox)) {
        document.getElementById(theCheckbox).checked = (document.getElementById(theCheckbox).checked ? false : true);
        if (document.getElementById(theCheckbox + 'r')) {
            document.getElementById(theCheckbox + 'r').checked = document.getElementById(theCheckbox).checked;
        }
    } else {
        if (document.getElementById(theCheckbox + 'r')) {
            document.getElementById(theCheckbox + 'r').checked = (document.getElementById(theCheckbox +'r').checked ? false : true);
            if (document.getElementById(theCheckbox)) {
                document.getElementById(theCheckbox).checked = document.getElementById(theCheckbox + 'r').checked;
            }
        }
    }
}

function check_and_mark(elemente, von, bis)
{
	if(document.getElementById(elemente).checked==false)
	{
		setCheckboxesRange('liste', false, 'zeile', von, bis);
		document.getElementById(elemente).checked=false;
	}
	else
	{
		setCheckboxesRange('liste', true, 'zeile', von, bis);
		document.getElementById(elemente).checked=true;
	}
	
	
}

function setCheckboxesRange(the_form, do_check, basename, min, max)
{
    for (var i = min; i < max; i++) {
        if (typeof(document.forms[the_form].elements[basename + i]) != 'undefined') {
            document.forms[the_form].elements[basename + i].checked = do_check;
        }
        if (typeof(document.forms[the_form].elements[basename + i + 'r']) != 'undefined') {
            document.forms[the_form].elements[basename + i + 'r'].checked = do_check;
        }
    }

    return true;
} // end of the 'setCheckboxesRange()' function´
var arrOldValues;

function SelectAllList(CONTROL){
for(var i = 0;i < CONTROL.length;i++){
CONTROL.options[i].selected = true;
}
}

function DeselectAllList(CONTROL){
for(var i = 0;i < CONTROL.length;i++){
CONTROL.options[i].selected = false;
}
}


function FillListValues(CONTROL){
var arrNewValues;
var intNewPos;
var strTemp = GetSelectValues(CONTROL);
arrNewValues = strTemp.split(",");
for(var i=0;i<arrNewValues.length-1;i++){
if(arrNewValues[i]==1){
intNewPos = i;
}
}

for(var i=0;i<arrOldValues.length-1;i++){
if(arrOldValues[i]==1 && i != intNewPos){
CONTROL.options[i].selected= true;
}
else if(arrOldValues[i]==0 && i != intNewPos){
CONTROL.options[i].selected= false;
}

if(arrOldValues[intNewPos]== 1){
CONTROL.options[intNewPos].selected = false;
}
else{
CONTROL.options[intNewPos].selected = true;
}
}
}


function GetSelectValues(CONTROL){
var strTemp = "";
for(var i = 0;i < CONTROL.length;i++){
if(CONTROL.options[i].selected == true){
strTemp += "1,";
}
else{
strTemp += "0,";
}
}
return strTemp;
}

function GetCurrentListValues(CONTROL){
var strValues = "";
strValues = GetSelectValues(CONTROL);
arrOldValues = strValues.split(",")
}

function toggle(id)
{
	el = document.getElementById(id);
	var display = el.style.display ? '' : 'none';
	el.style.display = display;
}

function display(id)
{
	el = document.getElementById(id);
	el.style.display = '';
}
function hide(id)
{
	el = document.getElementById(id);
	el.style.display = 'none';
}

function getfilename( fileurl )
{
  return fileurl.substr( fileurl.lastIndexOf('/') + 1 );
}


function togglesrcimg(id)
{
	if(getfilename(document.getElementById('src_'+id).src) == 'pfeil_more.gif')
	{
		document.getElementById('src_'+id).src = 'images/pfeil_less.gif';

	}
	else
	{
		document.getElementById('src_'+id).src = 'images/pfeil_more.gif';

	}

}

function toggleimg(id)
{
	el1 = document.getElementById(id);
	var display = el1.style.display ? '' : 'none';
	
	el1.style.display = display;
	if(getfilename(document.getElementById('img_'+id).src) == 'folder-expanded.gif')
	{
		document.getElementById('img_'+id).src = 'images/treeview/folder.gif';
	
	}
	else
	{
		document.getElementById('img_'+id).src = 'images/treeview/folder-expanded.gif';
	
	}
}

function isEmail(string) {
if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1){
	document.emailtool.submit();}
else{
	alert("Die eingegebene Email-Adresse\n\n" + string+ "\n\nist ungültig. Bitte geben Sie eine gültige Emailadresse ein");}
}


function fillmasearch()
{
	document.masearch.elements[1].value = document.masearch.elements[0].value;
	document.masearch.elements[2].value = document.masearch.elements[0].value;
	document.masearch.elements[3].value = document.masearch.elements[0].value;
	document.masearch.elements[4].value = document.masearch.elements[0].value;
	document.masearch.elements[5].value = document.masearch.elements[0].value;
	document.masearch.elements[6].value = document.masearch.elements[0].value;
	document.masearch.elements[7].value = document.masearch.elements[0].value;
	document.masearch.elements[8].value = document.masearch.elements[0].value;	
}

function makevisible(cur,which){ 
strength=(which==0)? 1 : 0.5 

if (cur.style.MozOpacity) 
cur.style.MozOpacity=strength 
else if (cur.filters) 
cur.filters.alpha.opacity=strength*100 
}

function hideLoadMessage() {
	document.getElementById('load_message').style.display = 'none';
}
function showLoadMessage() {
	document.getElementById('load_message').style.display = 'block';
}


var menu;
function getwindow()
{
	var d = document, v = window, w, h, l, t;
	if( typeof v.innerWidth === 'number' )
	{  w = v.innerWidth;  h = v.innerHeight;  l = v.pageXOffset;  t = v.pageYOffset; }
	else if( ( v = d.documentElement ) &&   typeof v.clientWidth === 'number' &&   v.clientWidth !== 0 || ( v = d.body ) )
	{  w = v.clientWidth;  h = v.clientHeight;  l = v.scrollLeft;  t = v.scrollTop; }
	return {w: w, h: h, l: l, t: t};
}

function getmouse(e)
{
	e = e || window.event || {};
	var moux, mouy, w = getwindow(),   minx = w.l,   miny = w.t,   maxx = w.w + w.l,   maxy = w.h + w.t;
	if( typeof e.pageX === 'number' )
	{    moux = e.pageX;    mouy = e.pageY;  }
	else
	{    moux = e.x + w.l;    mouy = e.y + w.t;  }
	return {moux: moux, mouy: mouy};
}

function showMenu (evt)
{

  var mpos = getmouse();
  if (document.all) {
    document.all.contextMenu.style.pixelLeft = mpos.moux;
    document.all.contextMenu.style.pixelTop = mpos.mouy;
    document.all.contextMenu.style.visibility = 'visible';
    return false;
  }
  else if (document.layers) {
    if (evt.which == 3) {
      document.contextMenu.left = evt.x;
      document.contextMenu.top = evt.y;
      document.contextMenu.onmouseout =
        function (evt) { this.visibility = 'hide'; };
      document.contextMenu.visibility = 'show';
      return false;
    }
  }
  return true;
}

//Global variables
var winCal;
var dtToday=new Date();
var Cal;
var docCal;
var MonthName=["Januar", "Februar", "März", "April", "Mai", "Juni","Juli", "August", "September", "Oktober", "November", "Dezember"];
var WeekDayName=["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"];	
var exDateTime;//Existing Date and Time

//Configurable parameters
var cnTop="200";//top coordinate of calendar window.
var cnLeft="500";//left coordinate of calendar window
var WindowTitle ="DateTime Picker";//Date Time Picker title.
var WeekChar=2;//number of character for week day. if 2 then Mo,Tu,We. if 3 then Mon,Tue,Wed.
var CellWidth=20;//Width of day cell.
var DateSeparator=".";//Date Separator, you can change it to "/" if you want.
var TimeMode=24;//default TimeMode value. 12 or 24

var ShowLongMonth=true;//Show long month name in Calendar header. example: "January".
var ShowMonthYear=true;//Show Month and Year in Calendar header.
var MonthYearColor="#808080";//Font Color of Month and Year in Calendar header.
var WeekHeadColor="#aaaaaa";//Background Color in Week header.
var SundayColor="#ffffff";//Background color of Sunday.
var SaturdayColor="#fafafa";//Background color of Saturday.
var WeekDayColor="#ffffff";//Background color of weekdays.
var FontColor="#000000";//color of font in Calendar day cell.
var TodayColor="#ffffc4";//Background color of today.
var SelDateColor="#ffffff";//Backgrond color of selected date in textbox.
var YrSelColor="#ffffff";//color of font of Year selector.
var ThemeBg="";//Background image of Calendar window.
//end Configurable parameters
//end Global variable

function NewCal(pCtrl,pFormat,pShowTime,pTimeMode)
{
	Cal=new Calendar(dtToday);
	if ((pShowTime!=null) && (pShowTime))
	{
		Cal.ShowTime=true;
		if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24')))
		{
			TimeMode=pTimeMode;
		}		
	}	
	if (pCtrl!=null)
		Cal.Ctrl=pCtrl;
	if (pFormat!=null)
		Cal.Format=pFormat.toUpperCase();
	
	exDateTime=document.getElementById(pCtrl).value;
	if (exDateTime!="")//Parse Date String
	{
		var Sp1;//Index of Date Separator 1
		var Sp2;//Index of Date Separator 2 
		var tSp1;//Index of Time Separator 1
		var tSp1;//Index of Time Separator 2
		var strMonth;
		var strDate;
		var strYear;
		var intMonth;
		var YearPattern;
		var strHour;
		var strMinute;
		var strSecond;
		//parse month
		Sp1=exDateTime.indexOf(DateSeparator,0)
		Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));
		
		if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY"))
		{
			strMonth=exDateTime.substring(Sp1+1,Sp2);
			strDate=exDateTime.substring(0,Sp1);
		}
		else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY"))
		{
			strMonth=exDateTime.substring(0,Sp1);
			strDate=exDateTime.substring(Sp1+1,Sp2);
		}
		if (isNaN(strMonth))
			intMonth=Cal.GetMonthIndex(strMonth);
		else
			intMonth=parseInt(strMonth,10)-1;	
		if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12))
			Cal.Month=intMonth;
		//end parse month
		//parse Date
		if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1))
			Cal.Date=strDate;
		//end parse Date
		//parse year
		strYear=exDateTime.substring(Sp2+1,Sp2+5);
		YearPattern=/^\d{4}$/;
		if (YearPattern.test(strYear))
			Cal.Year=parseInt(strYear,10);
		//end parse year
		//parse time
		if (Cal.ShowTime==true)
		{
			tSp1=exDateTime.indexOf(":",0)
			tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1));
			strHour=exDateTime.substring(tSp1,(tSp1)-2);
			Cal.SetHour(strHour);
			strMinute=exDateTime.substring(tSp1+1,tSp2);
			Cal.SetMinute(strMinute);
			strSecond=exDateTime.substring(tSp2+1,tSp2+3);
			Cal.SetSecond(strSecond);
		}	
	}
	winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=195,height=280,resizable=0,edge=Raised,top="+cnTop+",left="+cnLeft);
	docCal=winCal.document;
	RenderCal();
}

function RenderCal()
{
	var vCalHeader;
	var vCalData;
	var vCalTime;
	var i;
	var j;
	var SelectStr;
	var vDayCount=0;
	var vFirstDay;

	docCal.open();
	docCal.writeln("<html><head><title>"+WindowTitle+"</title>");
	docCal.writeln("<script>var winMain=window.opener;</script>");
	docCal.writeln("</head><body background='"+ThemeBg+"' link="+FontColor+" vlink="+FontColor+" topmargin=0 leftmargin=0><form name='Calendar'>");

	vCalHeader="<table width=100% style='border:1px solid #dddddd' cellspacing=0 cellpadding=5 ><tr><td bgcolor=#aaaaaa align=center> <a style='text-decoration:none' href=\"javascript:winMain.Cal.DecYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\" face=verdana size=2><</font></b></a><font face=verdana size=3 color=\""+YrSelColor+"\"><b> "+Cal.Year+" </b></font><a  style='text-decoration:none' href=\"javascript:winMain.Cal.IncYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\" face=verdana size=2>></font></b></a></center></td></tr>";
	vCalHeader+="<tr><td  bgcolor=#eeeeee>";
	vCalHeader+="<center><select name=\"MonthSelector\" onChange=\"javascript:winMain.Cal.SwitchMth(this.selectedIndex);winMain.RenderCal();\">\n";
	for (i=0;i<12;i++)
	{
		if (i==Cal.Month)
			SelectStr="Selected";
		else
			SelectStr="";	
		vCalHeader+="<option "+SelectStr+" value >"+MonthName[i]+"\n";
	}
	vCalHeader+="</select></center></td></tr><tr><td  bgcolor=#eeeeee>";
	vCalHeader+="<table border=0 cellpadding=1 cellspacing=1 width='100%' align=center valign=top>\n";

	//Calendar header shows Month and Year
	if (ShowMonthYear)
		//vCalHeader+="<tr><td colspan='7'><font face='Verdana' size='2' align='center' color='"+MonthYearColor+"'><b>"+Cal.GetMonthName(ShowLongMonth)+" "+Cal.Year+"</b></font></td></tr>\n";
	//Week day header
	vCalHeader+="<tr bgcolor="+WeekHeadColor+">";
	for (i=0;i<7;i++)
	{
		vCalHeader+="<td align='center'><font face='Verdana' size='2' color=#ffffff>"+WeekDayName[i].substr(0,WeekChar)+"</font></td>";
	}
	vCalHeader+="</tr>";	
	docCal.write(vCalHeader);
	
	//Calendar detail
	CalDate=new Date(Cal.Year,Cal.Month);
	CalDate.setDate(1);
	tmpDate = new Date(Cal.Year,Cal.Month);
	vFirstDay=CalDate.getDay()-1;
	vCalData="<tr>";
	if(vFirstDay < 0)
	{
		for (i=0;i<6;i++)
		{
			vCalData=vCalData+GenCell();
			vDayCount=vDayCount+1;
		}
	}
	else
	{
		for (i=0;i<vFirstDay;i++)
		{
			vCalData=vCalData+GenCell();
			vDayCount=vDayCount+1;
		}
	}
	for (j=1;j<=Cal.GetMonDays();j++)
	{
		var strCell;
		vDayCount=vDayCount+1;
		tmpDate.setDate(j);
		if ((j==dtToday.getDate())&&(Cal.Month==dtToday.getMonth())&&(Cal.Year==dtToday.getFullYear()))
			strCell=GenCell(j,true,TodayColor, "#ffffc4");//Highlight today's date
		else
		{
			if (j==Cal.Date)
			{
				strCell=GenCell(j,true,SelDateColor,"#ff0000");
			}
			else
			{	 
				if (vDayCount%7==0)
					strCell=GenCell(j,false,SaturdayColor,SaturdayColor);
				else if ((vDayCount+6)%7==0)
					strCell=GenCell(j,false,SundayColor,SundayColor);
				else
					strCell=GenCell(j,null,WeekDayColor,WeekDayColor);
			}		
		}						
		vCalData=vCalData+strCell;
		
		
		//if(tmpDate.getDay()==0 && j==1)
		//{
		//	vCalData=vCalData+"</tr>\n<tr>";
		//	vDayCount=vDayCount-1;
		//}
		//else 
		if((vDayCount%7==0)&&(j<Cal.GetMonDays()))
		{
			vCalData=vCalData+"</tr>\n<tr>";
		}
	}
	docCal.writeln(vCalData);	
	//Time picker
		
	//end time picker
	docCal.writeln("\n</table></td></tr>");
	if (Cal.ShowTime)
	{
		var showHour;
		showHour=Cal.getShowHour();		
		vCalTime="<tr>\n<td colspan='7' align='center' bgcolor=#eeeeee><hr size=1 color=#aaaaaa>";
		vCalTime+="<input type='text' name='hour' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+showHour+" onchange=\"javascript:winMain.Cal.SetHour(this.value)\">";
		vCalTime+=" : ";
		vCalTime+="<input type='text' name='minute' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Minutes+" onchange=\"javascript:winMain.Cal.SetMinute(this.value)\">";
		vCalTime+=" : ";
		vCalTime+="<input type='text' name='second' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Seconds+" onchange=\"javascript:winMain.Cal.SetSecond(this.value)\">";
		if (TimeMode==12)
		{
			var SelectAm =(parseInt(Cal.Hours,10)<12)? "Selected":"";
			var SelectPm =(parseInt(Cal.Hours,10)>=12)? "Selected":"";

			vCalTime+="<select name=\"ampm\" onchange=\"javascript:winMain.Cal.SetAmPm(this.options[this.selectedIndex].value);\">";
			vCalTime+="<option "+SelectAm+" value=\"AM\">AM</option>";
			vCalTime+="<option "+SelectPm+" value=\"PM\">PM<option>";
			vCalTime+="</select>";
		}	
		vCalTime+="\n</td>\n</tr>";
		docCal.write(vCalTime);
	}
	
	docCal.writeln("\n</table>");
	docCal.writeln("</form></body></html>");
	docCal.close();
}

function GenCell(pValue,pHighLight,pColor,pBorder)//Generate table cell with value
{
	var PValue;
	var PCellStr;
	var vColor;
	var vHLstr1;//HighLight string
	var vHlstr2;
	var vTimeStr;
	
	if (pValue==null)
		PValue="";
	else
		PValue=pValue;
	
	if (pBorder!=null)
		vBorder="style='border:2px solid "+pBorder+"'"
	else
		vBorder="";
	
		
	if (pColor!=null)
		vColor="bgcolor=\""+pColor+"\"";
	else
		vColor="";	
	if ((pHighLight!=null)&&(pHighLight))
		{vHLstr1="color='red'><b>";vHLstr2="</b>";}
	else
		{vHLstr1=">";vHLstr2="";}	
	
	if (Cal.ShowTime)
	{
		vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes"+"+':'+"+"winMain.Cal.Seconds";
		if (TimeMode==12)
			vTimeStr+="+' '+winMain.Cal.AMorPM";
	}	
	else
		vTimeStr="";		
	PCellStr="<td "+vColor+" width="+CellWidth+" align='center' "+vBorder+"><font face='verdana' size='2'"+vHLstr1+"<a style='text-decoration:none' href=\"javascript:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>";
	return PCellStr;
}

function Calendar(pDate,pCtrl)
{
	//Properties
	this.Date=pDate.getDate();//selected date
	this.Month=pDate.getMonth();//selected month number
	this.Year=pDate.getFullYear();//selected year in 4 digits
	this.Hours=pDate.getHours();	
	
	if (pDate.getMinutes()<10)
		this.Minutes="0"+pDate.getMinutes();
	else
		this.Minutes=pDate.getMinutes();
	
	if (pDate.getSeconds()<10)
		this.Seconds="0"+pDate.getSeconds();
	else		
		this.Seconds=pDate.getSeconds();
		
	this.MyWindow=winCal;
	this.Ctrl=pCtrl;
	this.Format="ddMMyyyy";
	this.Separator=DateSeparator;
	this.ShowTime=false;
	if (pDate.getHours()<12)
		this.AMorPM="AM";
	else
		this.AMorPM="PM";	
}

function GetMonthIndex(shortMonthName)
{
	for (i=0;i<12;i++)
	{
		if (MonthName[i].substring(0,3).toUpperCase()==shortMonthName.toUpperCase())
		{	return i;}
	}
}
Calendar.prototype.GetMonthIndex=GetMonthIndex;

function IncYear()
{	Cal.Year++;}
Calendar.prototype.IncYear=IncYear;

function DecYear()
{	Cal.Year--;}
Calendar.prototype.DecYear=DecYear;
	
function SwitchMth(intMth)
{	Cal.Month=intMth;}
Calendar.prototype.SwitchMth=SwitchMth;

function SetHour(intHour)
{	
	var MaxHour;
	var MinHour;
	if (TimeMode==24)
	{	MaxHour=23;MinHour=0}
	else if (TimeMode==12)
	{	MaxHour=12;MinHour=1}
	else
		alert("TimeMode can only be 12 or 24");		
	var HourExp=new RegExp("^\\d\\d$");
	if (HourExp.test(intHour) && (parseInt(intHour,10)<=MaxHour) && (parseInt(intHour,10)>=MinHour))
	{	
		if ((TimeMode==12) && (Cal.AMorPM=="PM"))
		{
			if (parseInt(intHour,10)==12)
				Cal.Hours=12;
			else	
				Cal.Hours=parseInt(intHour,10)+12;
		}	
		else if ((TimeMode==12) && (Cal.AMorPM=="AM"))
		{
			if (intHour==12)
				intHour-=12;
			Cal.Hours=parseInt(intHour,10);
		}
		else if (TimeMode==24)
			Cal.Hours=parseInt(intHour,10);	
	}
}
Calendar.prototype.SetHour=SetHour;

function SetMinute(intMin)
{
	var MinExp=new RegExp("^\\d\\d$");
	if (MinExp.test(intMin) && (intMin<60))
		Cal.Minutes=intMin;
}
Calendar.prototype.SetMinute=SetMinute;

function SetSecond(intSec)
{	
	var SecExp=new RegExp("^\\d\\d$");
	if (SecExp.test(intSec) && (intSec<60))
		Cal.Seconds=intSec;
}
Calendar.prototype.SetSecond=SetSecond;

function SetAmPm(pvalue)
{
	this.AMorPM=pvalue;
	if (pvalue=="PM")
	{
		this.Hours=(parseInt(this.Hours,10))+12;
		if (this.Hours==24)
			this.Hours=12;
	}	
	else if (pvalue=="AM")
		this.Hours-=12;	
}
Calendar.prototype.SetAmPm=SetAmPm;

function getShowHour()
{
	var finalHour;
    if (TimeMode==12)
    {
    	if (parseInt(this.Hours,10)==0)
		{
			this.AMorPM="AM";
			finalHour=parseInt(this.Hours,10)+12;	
		}
		else if (parseInt(this.Hours,10)==12)
		{
			this.AMorPM="PM";
			finalHour=12;
		}		
		else if (this.Hours>12)
		{
			this.AMorPM="PM";
			if ((this.Hours-12)<10)
				finalHour="0"+((parseInt(this.Hours,10))-12);
			else
				finalHour=parseInt(this.Hours,10)-12;	
		}
		else
		{
			this.AMorPM="AM";
			if (this.Hours<10)
				finalHour="0"+parseInt(this.Hours,10);
			else
				finalHour=this.Hours;	
		}
	}
	else if (TimeMode==24)
	{
		if (this.Hours<10)
			finalHour="0"+parseInt(this.Hours,10);
		else	
			finalHour=this.Hours;
	}	
	return finalHour;	
}				
Calendar.prototype.getShowHour=getShowHour;		

function GetMonthName(IsLong)
{
	var Month=MonthName[this.Month];
	if (IsLong)
		return Month;
	else
		return Month.substr(0,3);
}
Calendar.prototype.GetMonthName=GetMonthName;

function GetMonDays()//Get number of days in a month
{
	var DaysInMonth=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (this.IsLeapYear())
	{
		DaysInMonth[1]=29;
	}	
	return DaysInMonth[this.Month];	
}
Calendar.prototype.GetMonDays=GetMonDays;

function IsLeapYear()
{
	if ((this.Year%4)==0)
	{
		if ((this.Year%100==0) && (this.Year%400)!=0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return false;
	}
}
Calendar.prototype.IsLeapYear=IsLeapYear;

function FormatDate(pDate)
{
	if (this.Format.toUpperCase()=="DDMMYYYY")
		return (pDate+DateSeparator+(this.Month+1)+DateSeparator+this.Year);
	else if (this.Format.toUpperCase()=="DDMMMYYYY")
		return (pDate+DateSeparator+this.GetMonthName(false)+DateSeparator+this.Year);
	else if (this.Format.toUpperCase()=="MMDDYYYY")
		return ((this.Month+1)+DateSeparator+pDate+DateSeparator+this.Year);
	else if (this.Format.toUpperCase()=="YYYYMMDD")
		return (this.Year+DateSeparator+(this.Month+1)+DateSeparator+pDate);		
	else if (this.Format.toUpperCase()=="MMMDDYYYY")
		return (this.GetMonthName(false)+DateSeparator+pDate+DateSeparator+this.Year);			
}
Calendar.prototype.FormatDate=FormatDate;	

var isNav = false;
var isIE = false;
var dx = 50, dy = 20;
var objList = new Array();
var current = null;
var zIndexTop = 10;

function _xinit(e) {
	// Mindestens Version 4.0
	
		// Browser bestimmen
		if (navigator.appName.indexOf("Netscape") != -1) {
			isNav = true;
		} 
		if (navigator.appName.indexOf("Microsoft") != -1) {
			isIE = true;
		}
	

  	// Festlegen der Objekte
	//erzeugeListe("bild1", "bild2", "bild3", "bild4", "bild5", "bild6", "bild7");

	// Event Capturing
	if (isNav) {
//		document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.MOUSEMOVE);
	}

	document.onmousedown = startDrag;
	document.onmouseup = endDrag;
}

function erzeugeListe() {
  for (var i = 0; i < erzeugeListe.arguments.length; i++) {
    if (isNav) {
       objList[i] = document.layers[erzeugeListe.arguments[i]]; 
    }
  }
}

function startDrag(e) {
	var found = false;
	var i = objList.length;

	if (isNav) {
		var zIndexGefunden = 0;
		var gefunden = 0;

		while ((i > 0)) {
			i--;
			var obj = objList[i];
			// Ueberpruefen, welches Objekt angeklickt wurde
			if ((e.pageX > obj.left) && 
				(e.pageX < obj.left + obj.clip.width) &&
				(e.pageY > obj.top) &&
				(e.pageY < obj.top + obj.clip.height)) {

        		if (obj.zIndex > zIndexGefunden) {
					found = true;
					gefunden = i;
					zIndexGefunden = obj.zIndex;
				}
			}
		}

		if (found) {
			current = objList[gefunden];
			dx = e.pageX - current.left;
			dy = e.pageY - current.top;

			// Setze Objekt nach oben
			zIndexTop++;
			current.zIndex = zIndexTop;

			// Event-Capturing
			document.captureEvents(Event.MOUSEMOVE);
			document.onmousemove = drag;
			return false;
		}
	} 
else{
		// MSIE
		var obj = window.event.srcElement;
		if (obj.parentElement.id.indexOf("bild") != -1) {
		current = obj.parentElement.style;
			dx = window.event.clientX - current.pixelLeft;
			dy = window.event.clientY - current.pixelTop;
			// Setze Objekt nach oben
			zIndexTop++;
			current.zIndex = zIndexTop;
			document.onmousemove = drag;
			return false;
		}
	}

	// Benutzer hat auf kein Objekt geklickt
	current = null;
	return false;
}

function drag(e) {
	if (current != null) {
		if (isNav) {
			current.top = e.pageY - dy;
			current.left = e.pageX - dx;
		} 
		else {
			current.pixelTop = window.event.clientY - dy;
			current.pixelLeft = window.event.clientX - dx;
		}
	}

  	return false;
}

function endDrag(e) {
	if (isNav) {
		document.releaseEvents(Event.MOUSEMOVE);
	}

	document.onmousemove = null;
	current = null;
	return false;
}
	 
function strpos( haystack, needle, offset){
	var i = haystack.indexOf( needle, offset ); // returns -1
	return i >= 0 ? i : false;
}
	 
 
function img(strID){
 	var imgObj = document.getElementById(strID);
 	if(strpos(imgObj.src,"add.gif",0))
 	{
		 imgObj.src = "images/minus.gif";
 	}
 	else
 	{
		 imgObj.src = "images/add.gif";
 	}
}

	
/* 
	Formularfeld auf Email-Adresse (valide) prüfen (Dabei kann die Formular-id übergeben werden und das Feld, das
	auf validität überprüft werden soll.
	Das entsprechende Feld wird auch rot umrahmt und der Focus des Users wird auch drauf gelenkt
	11.02.2010 - Funktion um "Prüfung aller Felder" erweitert
*/
function checkmail(formular, element_id,check_all_fields)
{
	// Fehler im Formular?
	flag_check = true; 	// Checkbox Datenschutz
	flag_mail = true;		// Email-adresse korrekt?
	fehlermeldungen = '';	// Liste der Fehlermeldungen
	flag_all = true;		// Prüfung aller anderen Formularparameter
	
	// Sollen alle Felder überprüft werden?
	if(check_all_fields)
	{
		$clname = document.getElementById('clname').value;
		$clpost = document.getElementById('clpostadresse').value;
		$clmess = document.getElementById('clmessage').value;
		if($clname == '' || $clpost =='' || $clmess == '')
		{
			flag_all = false;
			fehlermeldungen += '\nBitte füllen Sie alle Felder aus';
		}
	}
		
	$formu = document.getElementById(formular);
	$inputfield = document.getElementById(element_id);


	// Checkbox für Datenschutzerklärung vorhanden?
	checkbox = document.getElementById('ds_ok');
	if(checkbox && checkbox.checked!=true)
	{
		fehlermeldungen += '\nBitte stimmen Sie unseren Datenschutzbestimmungen zu';
		flag_check = false;
	}
	
	$string = document.getElementById(element_id).value;
	if ($string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
	{
		// Farben anpassen, damit der User das Feld sofort bemerkt
	
		flag_mail = true;
	}
	else
	{
		$inputfield.style.border='solid 1px red';
		$inputfield.style.background = '#FFBFBF';
		$inputfield.style.color='#000000';
	
		fehlermeldungen += "\nIhre Mailadresse ist ungültig";
		flag_mail = false
		// Focus auf das Feld setzen
		$inputfield.focus();
	}
	
	// Alles richtig? Dann absenden!
	if(flag_check==true && flag_mail==true && flag_all == true)
	{
		$formu.submit();
		return true;
	}
	else
	{
		alert(fehlermeldungen);
	}
	return false;
}


/* Checkboxen für Sortimentübersicht / User */
function sortiment_checkbox(mode)
{
	// Fieldset mit den anderen Checkboxen laden
	$boxfield = document.getElementById('split_sortiment_table');
	// Checkboxelemente innerhalb dieser ID finden
	$boxes = $boxfield.getElementsByTagName('input');
	for (i = 0; i < $boxes.length; i++)
	{
		if($boxes[i].className=='split_sortiment')
		{
			switch(mode)
			{
				case 'check_all':
				{
					// markiert alles
					$boxes[i].checked = true;
					break;
				}
				case 'check_none':
				{
					$boxes[i].checked = false;
					break;
				}
				case 'toggle':
				{
					$boxes[i].checked = $boxes[i].checked == true ? false : true;
					break;
				}
			}
		}
	}
}



// Still needs fixes
function administration_links()
{
	$adm_panel = document.getElementById('the_adminpanel');
	if($adm_panel == null) return false;
	// Find Hyperlinks in Admin-Panel-Table
	$hyperlinks = $adm_panel.getElementsByTagName('a');
	// Find Parent Tables
	$tables = new Array();
	for(i = 0; i < $hyperlinks.length; i++)
	{
		$tables[i] = new Object();
		$tables[i]['table'] = $hyperlinks[i].parentNode.getElementsByTagName('table');
		$tables[i]['href'] = $hyperlinks[i].getAttribute('href');
	}
}

function paket_kalkulation()
{
    // Anzahl der gewaehlten Artikel und der Kalkulationswert
    var amount_field= document.getElementById('menge');
    var calculation= document.getElementById('vpm');
    var vpet= document.getElementById('vpe');
    var vet= document.getElementById('ve');

    // Das Ergebnis wird in ein AusgabeDIV gepostet
    var result_div = document.getElementById('menge_result');

    if(amount_field && calculation && result_div && vpet && vet)
    {
        var vpe_value = vpet.value;
        var ve_value = vet.value;
        var amount_value= str_replace(",",".",amount_field.value);
        var calc_value= str_replace(",",".",calculation.value);
        var ergebnis_pakete = Math.ceil(amount_value / calc_value);
        var ergebnis_qm = amount_value>=0 ? (ergebnis_pakete*calc_value).toFixed(2) : (calc_value*1.0).toFixed(2);
        var ergebnis = ' entspricht '+ergebnis_pakete+' '+vpe_value+'en = '+str_replace(".",",",ergebnis_qm)+' '+ve_value;
    }
    else
    {
        // Funktion verlassen, wenn es das Feld nicht gibt.
        return false;
    }
    // Kalkulation durchführen
    result_div.style.display = 'block';
    result_div.innerHTML = ergebnis;
}



function str_replace (search, replace, subject, count) 
{
	f = [].concat(search),
	r = [].concat(replace),
	s = subject,
	ra = r instanceof Array, sa = s instanceof Array;    s = [].concat(s);
	if (count)
	{
        this.window[count] = 0;
    }
     for (i=0, sl=s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j=0, fl=f.length; j < fl; j++) {            temp = s[i]+'';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length-s[i].length)/f[j].length;}        }
    }
    return sa ? s : s[0];
}
		
function str_replace(search, replace, subject) 
{
    return subject.split(search).join(replace);
}

function substr_count( haystack, needle, offset, length ) 
{
    var pos = 0, cnt = 0;
 
    haystack += '';
    needle += '';
    if(isNaN(offset)) {offset = 0;}
    if(isNaN(length)) {length = 0;}
    offset--;
 
    while( (offset = haystack.indexOf(needle, offset+1)) != -1 ){
        if(length > 0 && (offset+needle.length) > length){
            return false;
        } else{
            cnt++;
        }
    }
 
    return cnt;
}
/*
	Ajax Ausührung für execInterface.php
	Übergabemöglichkeit für bis zu 5 Variablen
*/
function execInterface(Arr,SessID)
{
	var count = 0;
	var Vars = "";
	count = Arr.length;
	for(var i=1;i<=count;i++)
	{
		Vars = Vars + "&var"+i+"="+Arr[(i-1)];
	}
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function()
	{
		if (xmlhttp.readyState==4 && xmlhttp.status==200)
		{
			var ret=true;
		}
	}	
	xmlhttp.open("GET","execInterface.php?SessID="+SessID+Vars,true);
	xmlhttp.send();
}

function open_custom_window(uebergabe1)
{
	var uebergabe = uebergabe1;
	window.open(uebergabe,'','width=800,height=600,scrollbars=yes,toolbar=0,status=0,menubar=0,fullscreen=no,resizable=0,help=no')
}

function changeOrderStatus(id,SessID)
{
	el = document.getElementById('O'+id);
	var prio = el.alt;
	prio = prio.substr(7,2);
// 	if(prio==3)//Abgegeben
// 	{
// 		el.src="images/flag_3.gif";
// 		el.alt="Bestellung gesendet.";
// 	}
//	else 
	if(prio==3)//Erhalten
	{
		prio++;
		el.src="images/flag_4.png";
		el.title="Bestellung erhalten.";
	}
	else if(prio==4)//Wird bearbeitet
	{
		prio++;
		el.src="images/flag_5.png";
		el.title="Bestellung wird bearbeitet.";
	}
	else if(prio==5)//Versendet
	{
		prio++;
		el.src="images/flag_6.png";
		el.title="Ware wurde versendet.";
	}
	else if(prio==6)//Bestellung abgeschlossen
	{
		prio++;
		el.src="images/flag_7.png";
		el.title="Bestellung abgeschlossen.";
	}
	/*
	else//Ware nicht lieferbar
	{
		prio = 99;
		el.src="images/flag_99.png";
		el.title="Ware nicht lieferbar.";
	}
	*/
	if(prio<=7)
	{
		el.alt="Status:"+prio;
		startRequest('myshop.php','id='+id+'&status='+prio+'&SessID='+SessID+'&action=UpdateOrderStatus',false);
	}
}
function startStopOrder(id,SessID,SP)
{
	el = document.getElementById('O'+id);
	el2 = document.getElementById('StopButton'+id);
	el2.innerHTML = "";
	var prio = el.alt;
	prio = prio.substr(7,2);
// 	if(prio==3)//Abgegeben
// 	{
// 		el.src="images/flag_3.gif";
// 		el.alt="Bestellung gesendet.";
// 	}
//	else 
	if(SP=="Pause")//Pause
	{
		prio = 99;
		el.src="images/flag_99.png";
		el.title="Ware nicht lieferbar.";
	}
	else// Weiter mit Bearbeitung
	{
		prio = 5;
		el.src="images/flag_5.png";
		el.title="Bestellung wird bearbeitet.";
	}
	el.alt="Status:"+prio;
	startRequest('myshop.php','id='+id+'&status='+prio+'&SessID='+SessID+'&action=UpdateOrderStatus',false);
}
function choose_adress(id,SessID)
{
	startRequest('bestellen.php','id='+id+'&SessID='+SessID+'&action=ChooseAdress',"adressblock");
}

// AJAX Request für verschiedene Anfragen.
var http_request = false;
var targetHTML = false;

function startRequest(url,request,tHTML) {
	targetHTML = tHTML;
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
        return false;
    }
    http_request.open('POST', url, true);
	
    // Requestheader senden
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
    http_request.send(request);
            
    http_request.onreadystatechange = alertInhalt; 
}
function alertInhalt() {
    if (http_request.readyState == 4) {
	    if(targetHTML)
	    {
        	var answer = http_request.responseText;
	        if(answer)
			{
				document.getElementById(targetHTML).innerHTML = answer;
	        }      	
		}
    }
}

//create onDomReady Event
window.onDomReady = initReady;
// Initialize event depending on browser
function initReady(fn)
{
	//W3C-compliant browser
	if(document.addEventListener) 
	{
		document.addEventListener("DOMContentLoaded", fn, false);
	}
	//IE
	else 
	{
		document.onreadystatechange = function(){readyState(fn)}
	}
}

//IE execute function
function readyState(func)
{
	// DOM is ready
	if(document.readyState == "interactive" || document.readyState == "complete")
	{
		func();
	}
}

function duplicate_artikel(i,SessID)
{
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.onreadystatechange=function()
	{
		if (xmlhttp.readyState==4 && xmlhttp.status==200)
		{
			return true;
		}
	}	
	xmlhttp.open("GET","warenkorb.php?SessID="+SessID+"&idx="+i+"&action=duplicate_warenkorb",true);
	xmlhttp.send();				
}
