/**
* 
* 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 OnLoadForEachCmsSite() {
    ShowInfoMessage();
}

function CreateInfoMessageDiv(title, message){
    var infodiv = document.createElement('div');
    infodiv.id = 'infodiv';
    infodiv.className = 'bgRastered';

	infodiv.style.position = "absolute";
	infodiv.style.top = '20px' ;
	infodiv.style.left = '20px' ;
	infodiv.style.width = '200px' ;
	infodiv.style.height = '100px' ;
//    infodiv.setAttribute("onclick", "return DestroyInfoMessageDiv();", 0);
    

    var titlediv = document.createElement('div');
    titlediv.id = 'titlediv';
    titlediv.className = 'infotitle';
    titlediv.innerHTML = title;
	titlediv.style.position = "absolute";
	titlediv.style.top = '5px' ;
	titlediv.style.left = '5px' ;
    infodiv.appendChild(titlediv);

    var messagediv = document.createElement('div');
    messagediv.id = 'messagediv';
    messagediv.className = 'infomessage';
    messagediv.innerHTML = message;
	messagediv.style.position = "absolute";
	messagediv.style.top = '25px' ;
	messagediv.style.left = '5px' ;
    infodiv.appendChild(messagediv);
    
    addEvent(infodiv, "click", DestroyInfoMessageDiv, null );
    document.body.appendChild(infodiv);


}

function DestroyInfoMessageDiv() {
	var elem = document.getElementById('infodiv');
	if (elem != null) { 
	    //prevImgdiv.style.display = 'none'
	    document.body.removeChild(elem) ;
	    }
	return false;
}

function addEvent(obj, type, fn) 
{
    if (obj.addEventListener)
        obj.addEventListener(type, fn, false);
    else if (obj.attachEvent) 
        {
        //obj.attachEvent("on" + type, fn.closure(obj));
        obj.attachEvent("on" + type, fn);
    }
}




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 FullScreen(){
    this.moveTo(0,0);
    resizeTo(screen.availWidth,screen.availHeight);
}

function changeClass(object, classname) {
    var result = true;
	try { 	
    	object.className = classname;
	}
	catch(e) {	
	    result = false;	
	}

  return result;
}
function changeClassById(id, classname) {
    var result = true;
	var imgobj = document.getElementById(id);
	if ( !changeClass(imgobj, classname) ) {
	    alert(id);
	    result = false;
	}   
	//alert(classname+':'+id);
	
  return false;
}


function changePicUrlById(id, url) {
	var imgobj = document.getElementById(id);
	changePicUrl(imgobj, url) 
  return false;
}

function changePicUrl(object, url) {
	object.src = url;
  return false;
}


// funtioniert nicht mit Netscape 7.2
function loadSiteContentFrame(url) {
	if (parent.frames.length > 0) {
		parent.content.location.replace(url);
	}
  return false;
}

function openGallery(id) {
    openWindow('../filelib.p/display_set.asp?id='+id, null,null, true, false, "CALMARA.COM");
    return false;
	}

function openGallery2(id) {
    openWindow('../filelib.p/display_set.asp?id='+id, null,null, true, false, "");
    return false;
	}

function openLowRes(id) {
    openWindow('../filelib.p/display_lowres.asp?id='+id, 800,800, false, false, "");
    return false;
	}
function openLowRes2(id) {
    openWindow('../filelib.p/display_lowres.asp?id='+id, 800,800, false, false, "");
	}


function openLowResPreview(id) {
    openWindow('../set/display_lowrespreview.asp?id='+id, 800,800, false, false, "");
    return false;
	}

function openHighRes(id) {
    openWindow('../filelib.p/display_highres.asp?id='+id, null,null, true, true, "");
    return false;
	}
function openHighRes2(id) {
    openWindow('../filelib.p/display_highres.asp?id='+id, null,null, true, true, "");
	}



/** 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, 820,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;
}

function openSetContent(id) {
    openWindow('../filelib.p/display_set.asp?id='+id, null,null, true, false, "Calmara.com - Member Area")
	return true;
}

function displayPreviewImage( url, event ) {
    destroyPreviewImage();
    
	// div for bg
    
	var prevBgImgdiv = document.createElement('div');
	prevBgImgdiv.id = 'previewIMGBG';
	prevBgImgdiv.className = 'backgroundPreviewImage';

	var posY = document.body.scrollTop ;
	prevBgImgdiv.style.top = posY+'px' ;
    
	// div for Image
	var prevImgdiv = document.createElement('div');
	prevImgdiv.id = 'previewIMG';
	prevImgdiv.className = 'centeredPreviewImage';
	prevBgImgdiv.appendChild(prevImgdiv);
	// Erstelle Image
	var prevImg = document.createElement('img');
	prevImg.src = url;
	prevImgdiv.appendChild(prevImg);
	// Erstelle Text
	var prevTxtdiv = document.createElement('div');
	prevTxtdiv.className = 'centeredPreviewImageText';
	prevImgdiv.appendChild(prevTxtdiv);

	prevTxtdiv.innerHTML  = '<a class="centeredPreviewImageTextLink" #000000;" href="#" onclick="destroyPreviewImage();">close<a/>';
/*	
	var prevImgClose = document.createElement('a');
	prevImgClose.innerHTML  = 'Close';
    prevImgClose.setAttribute("onclick", "return destroyPreviewImage();", 0);
    prevImgClose.onclick("destroyPreviewImage();");
	prevTxtdiv.appendChild(prevImgClose);
*/	
	document.body.appendChild(prevBgImgdiv);
	return false;
    
}
function destroyPreviewImage() {
	var prevImgdiv = document.getElementById('previewIMGBG');
	if (prevImgdiv != null) { 
	    //prevImgdiv.style.display = 'none'
	    document.body.removeChild(prevImgdiv) ;
	    }
	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 Stati eines Objektes
 function displayContentOfSet( id) {
	// erstelle ein Div zur Anzeige der Stati
	destroyDisplayContentOfSet();

	var setdiv = document.createElement('div');

	setdiv.id = 'contentsetdiv';
	setdiv.className = 'setContentAjaxContainer';
	setdiv.style.top = '0px' ;
	setdiv.style.left = '0px' ;

	var screenH = (document.body.offsetHeight - 5 ) ;
	setdiv.style.height = screenH  +'px' ;
	
	document.body.appendChild(setdiv);

	getSetContent('contentsetdiv', id, screenH) ;
	return false;
}
function destroyDisplayContentOfSet(){
	var stdiv = document.getElementById('contentsetdiv');
	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 ;
}		

function getInnerWidth() {
    var iw = 0;
	try { 	
        iw = document.body.clientWidth;
	}
	catch(e) {		
		iw = window.innerWidth;
	}
	return iw;
}




