/**
* 
* Author: Thomas Muehlemann
*/

//window.onerror = null;


// HTML-ID des aktuellen color-feldes, wird vom Colorpicker verwendet
var currentColorField = '';

// Globale Variable fuer den Ajax-Picker
var ajaxPickerHtmlFieldValue ;
var ajaxPickerHtmlFieldDisplay ;


function openColorPicker(color, field) {
    currentColorField = field;
	var x = event.screenX -5;
	var y = event.screenY + 10;
	window.open('../colorpicker/cp.html', "ColorPicker","dependent=yes,width=500,height=300,top="+y+",left="+x);
	}

function setColorToField(color) {
	document.getElementById(currentColorField).value = color;
	document.getElementById(currentColorField).style.backgroundColor = color ;
 	}

function getCurrentColor() {
	return document.getElementById(currentColorField).value ;
	}

function hideElement(htmlId) {
	try { 	
		document.getElementById(htmlId).style.display = 'none' ;
	}
	catch(e) {		

	}

}
function showElement(htmlId) {
	try { 	
		document.getElementById(htmlId).style.display = '' ;
	}
	catch(e) {		
	}
}


function changeClass(object, classname) {
	object.className = classname;
  return false;
}

// funtioniert nicht mit Netscape 7.2
function loadSiteContentFrame(url) {
	if (parent.frames.length > 0) {
		parent.content.location.replace(url);
	}
  return false;
}

/** Kalenderfenster fuer die Auswahl eines Datums.
 * Th.M
 * param field	Die Feldbezeichnung (Praefix) des Datumsfeldes.
 * param x		Die X-Koordinate des Kalenderfenstern. 
 * param y		Die Y-Koordinate des Kalenderfenstern.
 */
function selectDate(field, event) {
	dateField = field;
	//var s = '../utility/datepick_'+lang_iso+'.htm?field='+field;
	var s = "../system/choosedate.html?field="+field;
	var x = event.screenX -5;
	var y = event.screenY + 10;
	window.open(s, "choosedate","dependent=yes,width=190,height=132,top="+y+",left="+x);
	return false;
}

function openNewFormular(formular, x,y) {
	window.open('../xml-forms/ssq-forms.asp?xmlDefinition='+formular+'&newaction=new','', ' width='+x+ ' ,height='+y+' ,scrollbars=0 ');
	return false;
}

function openFileEditor(folder, fileid) {
	window.open('../files/file_edit.asp?fileid='+fileid+'&folder='+folder ,'', ' width=550,height=400,scrollbars=0 ');
	return false;
}

function openPicEditor(folder, picid) {
	window.open('../files/pic_edit.asp?picid='+picid+'&folder='+folder ,'', ' width=550,height=400,scrollbars=0 ');
	return false;
}

function openFileAuswahl(fileType, fieldname, closeNachAuswahl) {
	window.open('../files/filechoosepopupframe.asp?foldertype='+fileType+'&fieldname='+fieldname+'&closenachauswahl='+closeNachAuswahl,'', ' width=700,height=800,scrollbars=0 ');
	return false;
}

function openLinkAuswahl(fieldname, closeNachAuswahl) {
	window.open('../links/linkchoosepopupframe.asp?fieldname='+fieldname+'&closenachauswahl='+closeNachAuswahl,'', ' width=700,height=800,scrollbars=0 ');
	return false;
}

function setFileAuswahl(id, title, fieldname, path) {
	document.getElementById(fieldname+'_display').innerHTML = title ;
	document.getElementById(fieldname+'_link').href = path ;
	document.getElementById(fieldname).value = id ;
	picIdhasChanged(fieldname);
	return false;
}
function clearFileAuswahl(fieldname) {
	document.getElementById(fieldname+'_display').innerHTML = '' ;
	document.getElementById(fieldname+'_link').href = '' ;
	document.getElementById(fieldname).value = '' ;
	return false;
}
function setPicAuswahl(id, fieldname, path) {
	document.getElementById(fieldname+'_link').src = path ;
	document.getElementById(fieldname).value = id ;
	picIdhasChanged(fieldname);
	return false;
}
function clearPicAuswahl(fieldname) {
	document.getElementById(fieldname+'_link').src = '../pics/treespacer.gif' ;
	document.getElementById(fieldname).value = '' ;
	return false;
}

function setlinkAuswahl(id, fieldname, title) {
	document.getElementById(fieldname+'_display').value = title ;
	document.getElementById(fieldname).value = id ;
	picIdhasChanged(fieldname);
	return false;
}
function clearLinkAuswahl(fieldname) {
	document.getElementById(fieldname+'_display').value = '' ;
	document.getElementById(fieldname).value = '' ;
	return false;
}

function picIdhasChanged(fieldname)	{
	if (fieldname == 'piclinkgallery-new') { submitForm( 'save' ) } ;
	if (fieldname == 'linklinklist-new') { submitForm( 'save' ) } ;
	if (fieldname == 'picfilegallery-new') { submitForm( 'save' ) } ;
}


function openFile(url) {
	window.open(url,'');
	return true;
}

// Oeffnet den Editor einer Seite s_page
function openPageEditWindow(id){
	return openObjectEditWindow(id, 's_page', null, null);
}

function openObjectEditWindow(id, table, fkField, fkValue) {
	//alert(table);
    if (table == null ) {table = "";}   
    if (fkField == null ) {fkField = "";}   
    if (fkValue == null ) {fkValue = "0";}   
    openWindow('../object/object_edit.asp?id='+id+'&table='+table+'&fkField='+fkField+ '&fkValue='+fkValue, 800,800, true, false, "")
	return true;
}

/**
 * Oeffnet den Objekt-Picker
 *
 * Paramter:
 * id               id des Objektes
 * forField         Datenbank Feldname
 * HTMLFieldValue   Formularfeldname des Wertes
 * HTMLFieldDisplay Formularfeldname fuer die Anzeige
 * tableOfObject    nur fuer neue Objekte notwendig
 * 
 */
function openObjectPicker(id, forField, HTMLFieldValue, HTMLFieldDisplay, tableOfObject) {
    if (tableOfObject == null) {tableOfObject=''}
    openWindow('../object/object_picker.asp?forObjectId='+id+'&forField='+forField+'&HTMLFieldNameValue='+HTMLFieldValue+'&HTMLFieldNameDisplay='+HTMLFieldDisplay+'&tableOfObject='+tableOfObject, 800,800, true, false, "")
}

function pickerSelectThisObject( selectedId, infoText) {
    opener.pickerSetSelectedValue( selectedId, infoText, pickerForObjectId, pickerForField, pickerHtmlFieldValue, pickerHtmlFieldDisplay );
    window.close();
}

function pickerSetSelectedValue( selectedId, infoText, pickerForObjectId, pickerForField, pickerHtmlFieldValue, pickerHtmlFieldDisplay ) {
	document.getElementById(pickerHtmlFieldValue).value = selectedId ;
	document.getElementById(pickerHtmlFieldDisplay).value = infoText ;
}

function ajaxPickerSetSelectedValue( selectedId, infoText) {
	document.getElementById(ajaxPickerHtmlFieldValue).value = selectedId ;
	document.getElementById(ajaxPickerHtmlFieldDisplay).value = infoText ;
	closeAjaxPicker();
}

// Oeffnet den Objekt-Picker
// Parameter	fieldName			Implementationsname des Datenbankfeldes, fuer welches eine Auswahl angezeigt weren soll
//			HTMLFieldValue		ID des Feldes, in welches die ID des ausgewählten Objektes abgelegt werden soll
//			HTMLFieldDisplay	ID des Feldes, In welches die Beschreibung des ausgewählten Objektes abgelegt werden soll
//			tableOfObject		Moegliche Tabellen des Objektes, nicht implementiert
// 
function openAjaxPicker(fieldName, HTMLFieldValue, HTMLFieldDisplay, tableOfObject){
	ajaxPickerHtmlFieldValue = HTMLFieldValue;			// HTML-Id fuer die Speicherung  der Objekt-Id
	ajaxPickerHtmlFieldDisplay = HTMLFieldDisplay;		// HTML-Id fuer die Anzeige des Textes
	showElement('ajaxpicker');
	removeElementsFromSelectBox('ajaxpickertable');

	// Fuegt tabellen aus eine, ajax.service  einem <select> feld hinzu
	// Aufruf der Ajax-Methode
	getTablesForObjectField( fieldName, 'ajaxpickertable');
	document.getElementById('ajaxpickersearchfield').focus();
	
}

function closeAjaxPicker() {
	hideElement('ajaxpicker');
}

// Cleart die Felder eines Antras-Object Feldes
function clearPickerField(ajaxPickerHtmlFieldValue, ajaxPickerHtmlFieldDisplay) {
	document.getElementById(ajaxPickerHtmlFieldValue).value = '' ;
	document.getElementById(ajaxPickerHtmlFieldDisplay).value = '' ;
}


// entfernt alle Eintraege eines <select> feldes
function removeElementsFromSelectBox(htmlId){
  var selectField = document.getElementById(htmlId);
  var i;
  
  for (i = selectField.length - 1; i>=0; i--) {
    selectField.remove(i);
  }
}

// Fuegt Elemente einem Selectfield hinzu
// parameter: 	pairArray			(Wertpaare {'value':'display'}
//			htmlid
function addElementsToSelectBox(pairArray, htmlId){
	var selectField = document.getElementById(htmlId);
	var i;
	for (i in pairArray) {
		var so=document.createElement('option');
		so.value=i;
		so.text=pairArray[i];

		try { 	
			// nicht IE
			selectField.add(so, null);
		}
		catch(e) {	
			// IE
			selectField.add(so);
		}

	}
}


function openUploader(id, DBFieldName, HTMLFieldNameDisplayFileName) {
    openWindow('../files/file_upload.asp?Id='+id+'&DBFieldName='+DBFieldName+'&HTMLFieldNameDisplayFileName='+HTMLFieldNameDisplayFileName, 420,130, false, false, "")
}
function uploadUpdateDisplayValue( fieldId, infoText) {
    opener.uploadSetDisplayValue( fieldId, infoText);
    window.close();
}
function uploadSetDisplayValue( fieldId, infoText ) {
	document.getElementById(fieldId).value = infoText ;
	document.getElementById(fieldId+'_display').value = infoText ;
}


function changeCurrentLanguage(lang) {
	document.forms[0].elements['currentlang'].value=lang ;
	return false;
}


function openCMSdoc(id) {
    if (id != null) {
        openWindow('../site/openCMSobject.asp?id='+id, null, null, true, true, null)
    }
    return false;
}

/**
 * Oeffnet ein neues Fenster.
 * 
 * return 				Liefert das neue Fenster.
 * param url			Die URL.
 * param x				Die Hoehe, fakultativ.
 * param y				Die Breite, fakultativ.
 * param scroll			Mit Scrollbars (true/false), fakultativ.
 * param status			Mit Statuszeile (true/false), fakultativ. Achtung: ohne Statuszeile laesst sich die Groesse nicht veraendern!
 * param name			Name des Fensters, in dem der Inhalt angezeigt werden soll. Wird verwendet, wenn Inhalt immer
 *						im selben Fenster dargestellt werden soll.
 */
function openWindow(url, x, y, scroll, status, name) {
	/* if (!x) { x = 650; }
	if (!y) { y = 550; } */
	 if (name == null) { name = ""; }
	var yoffset = 30;
	if (!x) { x = screen.availWidth; }
	if (!y) { y = (screen.availHeight - yoffset); }
	var left = (screen.availWidth - x) / 2;
	var top = (screen.availHeight - y- yoffset) / 2;
	var params = "width="+x+",height="+y+",left="+left+",top="+top+", resizable=yes, status="+(status?"yes":"no")+", location=no, menubar=no";
	params += ", scrollbars="+(scroll?"yes":"no");
	//alert(params);
	// alert("name:\n"+name);

	var win = window.open(url, name, params); 
	win.focus();
	return win;
}

// Open Permission Editor
function openPermissionEditor(id) {
    openWindow('../system/object_permission.asp?id='+id, 800,800, false, false, "")
}

// Permission hinzufuegen
function addPermissionAjax(id,who,role) {
	permissionEdit( 'permission-list', id, '', role, who, 'add');
}

// Permission entfernen
function removePermissionAjax(id,acid) {
	permissionEdit( 'permission-list', id, acid, '', '', 'remove');
}

// Lese den Inhalt eines Ordners
function getFolderContentAjax(htmlId, id) {
	getFolderContent( htmlId, id);
	return false;
}

function openWebFormWindow(formdefId, addParams) {
	var formUrl = '../site/webform.asp?id='+formdefId;
	if (addParams != null) {
		formUrl = formUrl + '&hasAddParams=yes&'+addParams;
	}
    openWindow(formUrl, 700,500, false, false, "");
	return false;
}

function submitAjaxForm(val) {
	document.forms[0].elements['command'].value=val ;
	var formelem = document.getElementById('webform');
	var urlParam = getUrlParamForFormFields(formelem) ;
	xmlForm( 'form_ajax', null, urlParam );

return false;
}

// laden und Anzeige der Stati eines Objektes
 function displayStatesOfObject( id, event) {
	// erstelle ein Div zur Anzeige der Stati
	destroyDisplayOfStates();

	var posY = getPopupPositionY(event.clientY, 200) ;
	var posX = getPopupPositionX(event.clientX, 500) ;
	
	var stdiv = document.createElement('div');

	stdiv.id = 'stdiv';
	stdiv.className = 'statebox';
	stdiv.style.position = "absolute";
	stdiv.style.top = posY+'px' ;
	stdiv.style.left = posX+'px' ;
	
	document.body.appendChild(stdiv);

	getStatesOfObject('stdiv', id) ;
	return false;
}
function destroyDisplayOfStates(){
	var stdiv = document.getElementById('stdiv');
	if (stdiv != null) { document.body.removeChild(stdiv) };
	return false;
}

// laden und Anzeige der ProduktLieferzeiten
 function displayDeliverySchedules( id, htmlid) {

/*	destroydisplayDeliverySchedules();

	var delidiv = document.createElement('id');
	delidiv.setAttributeNode( createAttribute('id', 'delidiv') );
	delidiv.setAttributeNode( createAttribute('class', 'statebox') );

	var posleft = (document.body.innerWidth / 2 - 350);
	var ds = 'top:100px;width:700px;left:'+posleft+';z-index:10;' ;
	try { 	
		delidiv.setAttributeNode( createAttribute('style', ds) );
		}
		catch(e) {
		}

	document.body.appendChild(delidiv);
	document.getElementById('delidiv').style.top  = '100px' ;
	document.getElementById('delidiv').style.width  = '700px' ;
	document.getElementById('delidiv').style.zIndex  = '10' ;
	document.getElementById('delidiv').style.left  = 1000 ;

//	document.getElementById('delidiv').style.left  = posleft ;
	
//	delidiv.style.top  = '100px' ;
//	delidiv.style.width  = '700px' ;
//	delidiv.style.left  = posleft+'px' ;
*/
	getDeliverySchedules(htmlid, id) ;
	return false;
}
function closeDeliverySchedules(){
//	destroydisplayDeliverySchedules();
	hideElement('productlieferzeiten_ajax');
}
function destroydisplayDeliverySchedules(){
	var delidiv = document.getElementById('delidiv');
	if (delidiv != null) { document.body.removeChild(delidiv) };
	return false;
}


function createAttribute(name, value) {
	var att = document.createAttribute(name);
	att.nodeValue = value;
	return att;
}

function getUrlParamForFormFields() {
	var param = '?';

	for (var i = 0; i < formelem.length; ++i) {
		if (i > 0) {
			param = param + '&' ;
		}
		
		param = param + formelem.elements[i].id +'=' ;
		param = param + formelem.elements[i].value ;
	}
	return param;
}

/*  Ermittelt eine vernuenftige Position fuer ein Popup-Fenster
    Parameter:	pos			aktuelle Mausposition
				popupSize	Hoehe des Popup-Fensters

	Rueckgabe:				y-Position fuer die Anzeige 
 */ 
function getPopupPositionY(pos, popupSize) {
	pos = pos + document.body.scrollTop ;
	var result ;
	if ( pos > (document.body.offsetHeight - popupSize) ) { 
		result = document.body.offsetHeight - popupSize ;
		}
	else {
		result = pos  ;
		}
	result = pos  ;
	return  result ;
}		

/*  Ermittelt eine vernuenftige Position fuer ein Popup-Fenster
    Parameter:	pos			aktuelle Mausposition
				popupSize	Breite des Popup-Fensters

	Rueckgabe:				x-Position fuer die Anzeige 
 */ 
function getPopupPositionX(pos, popupSize) {
	pos = pos + document.body.scrollLeft ;
	var result ;
	if ( pos > (document.body.offsetWidth - popupSize) ) { 
		result = pos- popupSize -10 ;
		}
	else {
		result = pos+10  ;
		}
	if ( result < 40 ) { result = 40 } ;
	return  result ;
}		


// Nesletter: 
 function createMailOrderStateWindow( ) {
	// erstelle ein Div zur Anzeige der Stati
	destroyMailOrderStateWindow();

	var posY = 10 ;
	var posX = 10 ;
	
	var mosdiv = document.createElement('div');

	mosdiv.id = 'mosdiv';
	mosdiv.className = 'MOrderStatebox';
	mosdiv.style.position = "absolute";
	mosdiv.style.top = posY+'px' ;
	mosdiv.style.left = posX+'px' ;
	
	document.body.appendChild(mosdiv);

	return mosdiv;
}

function addElementsToMailOrderStateWindow(pairArray){

	var i;
	for (i in pairArray) {
        var key = i;
        var value = pairArray[i];

        var htmlId = '*auto';
        var contentType = 'message';

        if (key == 'message') {
        } 
            else if (key == 'error') {
                contentType = 'error';
            } 
                else if (key == 'percentbar') {
                    htmlId = 'percentbar';
                    contentType = 'percentbar';
                } 
                    else {
                        htmlId = key;
                        contentType = 'info';
                    }
                
        
        addItemToMailOrderStateWindow( htmlId, contentType, value );    

	}
}


function addItemToMailOrderStateWindow(  htmlId, contentType, value ) {
	var mosdiv = document.getElementById('mosdiv');
	if (mosdiv == null) { 
	    mosdiv = createMailOrderStateWindow( ) ;
	};
    
    var itemId = "";
    var newDiv;
    
    if (htmlId != '*auto' ) 
        {
            itemId = 'NLMOSTATE_'+htmlId;
        	newDiv = document.getElementById(itemId);
        	if (newDiv == null) {
        	    newDiv = document.createElement('div');
            	newDiv.id = itemId;
        	}
        } 
        else 
        {
       	    newDiv = document.createElement('div');
            value=htmlId;
        }
    
    if (contentType == 'message') {
        newDiv.innerHTML = value;
    	newDiv.className = 'MOrderStateboxMessage';
    }

    if (contentType == 'info') {
        newDiv.innerHTML = value;
    	newDiv.className = 'MOrderStateboxInfo';
    }

    if (contentType == 'error') {
        newDiv.innerHTML = value;
    	newDiv.className = 'MOrderStateboxError';
    }

    if (contentType == 'percentbar') {
    }
    
    mosdiv.appendChild(newDiv);    

    return true;    
}

function destroyMailOrderStateWindow(){
	var mosdiv = document.getElementById('mosdiv');
	if (mosdiv != null) { document.body.removeChild(mosdiv) };
	return false;
}



