/*  Copyright 2010 by Marco Stocco <http://www.my-w.org>
 * -----------------------------------------------------------
 *
 * The main javascript library of the web content management system myW
 *
 * This script is distributed under the GNU General Public License.
 *
 * Read the entire license text here: http://www.gnu.org/licenses/gpl.html
 */

var myw = {

	/* Vars set by perl in header.pm */
	config : new Object(),
	defaultEffect_other : new Object(),
	globalHereditableParams : '',
	instanceName : '',
	frontendName : '',
	static_tpc1_fileName : '',
	searchId : 0,
	loginId : 0,
	
	/*****************/
	
	/* variables for the mouse position */
	mouse_x : 0,
	mouse_y : 0,

    scrollObj_topOld : 0,
    scrollObj_winHeightOld : 0,
	
	/* the windows */
	cwin_main : new Object(),
	cwin_print : new Object(),
	cwin_record : new Object(),
	cwinImg : new Object(), 
	cwinHelp : new Object(),
	cwinFirstAid : new Object(),
	cwinCal : new Object(),	
	
	checkLoadedScripts : new Object(),
			
	is_ie : (document.getElementById && document.all && document.styleSheets)?1:0,
	nn6 : (document.getElementById && !document.all)?1:0,
	
	getGHP : function(p) {
		p = p.replace(/&amp;/g,'&');
		myw.globalHereditableParams = p;
	},
	
	addEvent : function(el, evname, func) {
		if (el.attachEvent) {
			el.attachEvent('on'+evname,func);
		} else if (el.addEventListener) {
			el.addEventListener(evname,func,true);
		} else {
			el['on'+evname] = func;
		}
	},
	
	removeEvent : function(el, evname, func) {
		if (el.detachEvent) { 
			el.detachEvent("on" + evname, func);
		} else if (el.removeEventListener) { 
			el.removeEventListener(evname, func, true);
		} else {
			el["on" + evname] = null;
		}
	},
	
	getWindowInfos : function() {
		var o = new Object();
		if (myw.is_ie) {
			if(document.documentElement) {
				o.width = document.documentElement.clientWidth;
				o.height = document.documentElement.clientHeight;
				o.scrollLeft = document.documentElement.scrollLeft;
				o.scrollTop = document.documentElement.scrollTop;
			} else if (document.body) {
				o.width = document.body.clientWidth;
				o.height = document.body.clientHeight;
				o.scrollLeft = document.body.scrollLeft;
				o.scrollTop = document.body.scrollTop;
			}
		} else {
			o.width = window.innerWidth;
			o.height = window.innerHeight;
			o.scrollLeft = window.pageXOffset;
			o.scrollTop = window.pageYOffset;
		}
		return o;
	},
	
	dialog_hide : function() {
		myw.mask_hide();
		if (document.getElementById('myw_div_dialog'))
			document.getElementById('myw_div_dialog').style.display='none';
	},
	
	dialog_init : function() {
		var d = document.getElementById('myw_div_dialog');
		if (d) {
			if (d.style.display != 'none')
				return 0;
			d.style.display='block';
		} else {
			d = document.createElement("div");
			d.id = 'myw_div_dialog';
			document.body.appendChild(d);
		}
		myw.mask_show(function() {
			jQuery(document.getElementById('myw_div_dialog')).dialog('close');
		});
		return 1;
	},
	
	dialog_alert : function(l,msg) {
		if (myw.dialog_init()) {
			var d = document.getElementById('myw_div_dialog');
			d.innerHTML = '<div class="myw_dialog_alert">'+msg+'</div>';
			
			var t = myw.lang.frontend.texts.alert;
			if (myw.admin && myw.admin.lang && myw.admin.lang == l)
				t = myw.lang.admin.frontendTexts.alert;
			jQuery(d).dialog({
				title : t + ' ...',
				close : function() {
					myw.dialog_hide();
				},
				buttons : {
					'OK': function() {
						jQuery(this).dialog('close');
					}
				}
			},'open');
		}
	},
	
	dialog_confirm : function(l,msg,func) {
		if (myw.dialog_init()) {
			var d = document.getElementById('myw_div_dialog');
			d.innerHTML = '<div class="myw_dialog_confirm">'+msg+'</div>';
			var dialog_buttons = new Object();
			dialog_buttons['OK'] = func;
			
			var t = myw.lang.frontend.texts.confirm;
			var c = myw.lang.frontend.texts.cancel;
			if (myw.admin && myw.admin.lang && myw.admin.lang == l) {
				t = myw.lang.admin.frontendTexts.confirm;
				c = myw.lang.admin.frontendTexts.cancel;
			}
			
			dialog_buttons[c] = function() { myw.dialog_close(); }
			jQuery(d).dialog({
				title : t + ' ...',
				height: 'auto',
				close : function() {
					myw.dialog_hide();
				},
				buttons : dialog_buttons
			},'open');
		}
	},

	dialog_close : function() {
		jQuery(document.getElementById('myw_div_dialog')).dialog('close');
	},
	
	/* from tinybox function total */
	getDocumentSize : function(d) {
		var b=document.body, e=document.documentElement;
		return d?Math.max(Math.max(b.scrollHeight,e.scrollHeight),Math.max(b.clientHeight,e.clientHeight)):
		Math.max(Math.max(b.scrollWidth,e.scrollWidth),Math.max(b.clientWidth,e.clientWidth));
	},
		
	popup_center : function(d,w,h) {
		var winInfos = myw.getWindowInfos();
		d.style.width = w+'px';
		d.style.height = h+'px';
		d.style.left = Math.round(((winInfos.width/2)-(w/2))+winInfos.scrollLeft)+'px';
		d.style.top = Math.round(((winInfos.height/2)-(h/2))+winInfos.scrollTop - 50)+'px';
	},
	
	popup_show : function(_vars,f_onstart,f_onclose) {
		if (!_vars.width || !_vars.height || _vars.width=='' || _vars.height=='') {
			myw.dialog_alert(myw.frontend.lang,'The width and/or height of the popup layer are not correct!<br/>\nI cannot proceed.');
			return;
		}
		
		if (_vars.imgSrc)
			_vars.string = '<img id="myLayer_img" src="'+_vars.imgSrc+'" width="'+_vars.width+'" height="'+_vars.height+'" alt="" />';
						
		var div_layer = document.createElement("div");
		div_layer.id = 'myLayer';
		div_layer.style.display = 'none';
		div_layer.style.zIndex = 21;
		
		document.body.appendChild(div_layer);
				
		var div_content = document.createElement("div");
		div_content.id = 'myLayer_content';
		div_content.className = 'myLayer_content';
		div_layer.appendChild(div_content);

		var func = 'myw_default'; /* default effect */
		if (_vars.func)
			func = _vars.func;
		
		if (func) {
			_vars.onstart = f_onstart;
			_vars.onclose = f_onclose;
			
			var func;
			if (window.myw.websiteTemplate && window.myw.websiteTemplate['popupAnimate_'+func]) {
				func = 'myw.websiteTemplate.popupAnimate_'+func;
			} else if (window.myw.my && window.myw.my.popupAnimate && window.myw.my.popupAnimate['animate_'+func]) {
				func = 'myw.my.popupAnimate.animate_'+func;
			} else if (window.myw.popupAnimate['animate_'+func]) {
				func = 'myw.popupAnimate.animate_'+func;
			} else {
				func = 'myw.popupAnimate.animate_myw_default';
			}
			try {
				eval(func)(_vars);
			} catch (ex) {
				alert('Error by evalueting the expression:\n'+func+'\nError message:\n' + ex.message);
			}
		}
	},
		
	mask_show : function(funcByClose) {
		if (!document.getElementById('mywMask')) {
			var m=document.createElement('div'); 
			m.id='mywMask';
			m.style.height=myw.getDocumentSize(1)+'px';
			m.style.width=myw.getDocumentSize(0)+'px';
			m.style.zIndex = 20;
			m.style.display='block';
			funcByClose ?
				m.onclick = funcByClose :
				m.onclick = function() {
					myw.mask_hide();
				};
			window.onresize = function() {
				var d = document.getElementById('mywMask');
				d.style.height=myw.getDocumentSize(1)+'px';
				d.style.width=myw.getDocumentSize(0)+'px'
			}
			document.body.appendChild(m);
		}
	},

	mask_hide : function() {
		if (document.getElementById('myLayer'))
			document.body.removeChild(document.getElementById('myLayer'));
		if (document.getElementById('mywMask'))
			document.body.removeChild(document.getElementById('mywMask'));
	},
	
	checkSearch : function(f) {
		if (f.searchTerm.value == '') { 
			myw.dialog_alert(myw.frontend.lang,myw.lang.frontend.texts.searchField);
		} else if (f.searchTerm.value.search(/gotologin/)>=0) {
			myw.initSubmit(myw.loginId,'beforeLogin','');
		} else {
			document.frm_main.id.value = myw.searchId;
			if (document.frm_main.page_1_1) document.frm_main.page_1_1.value = 1;
			if (document.frm_main.unt_1_1) document.frm_main.unt_1_1.value = '';
			myw.submitForm(f,document.frm_main);
		}
	},
	
	changeLang : function(_lang,staticPageName) {
		var loc=document.location.href;
		if (loc.search(/\.html$/) != -1) {
			if (staticPageName) {
				if (loc.indexOf('/html/'+myw.instanceName+'/')>0) {
					loc = loc.replace(/(.*)\/\w+\/.*\.html$/i,'$1/'+_lang+'/'+staticPageName+'.html');
					document.location.href = loc;
					return;
				} else if (myw.static_tpc1_fileName != '') {	/* for the language navigation in index.html */
					document.location.href = myw.config.website.htdocs.net + '/html/'+myw.instanceName+'/'+_lang+'/'+myw.static_tpc1_fileName+'.html';
					return;
				}
			}
			return;
		} 
		document.frm_main.lang.value=_lang;
		if (document.frm_editContent && !document.frm_editContent.nh_fastTextEditor_id.value) {
			if (document.frm_editContent.nh_corrTextId.value) 
				myw.exportFieldValues(document.frm_editContent,document.frm_main,'nh_corrText');
		}
		document.frm_main.submit();
	},
	
	changeImage : function(imgId,pathNewImg) {
		document.getElementById(imgId).src = pathNewImg;
	},
	
	changeStyle : function(elementId,newClass,styleObject) {
		var d = document.getElementById(elementId);
		if (newClass) {
	 		d.className = newClass;
	 		if (document.getElementById(elementId+'_a')) 
	 			document.getElementById(elementId+'_a').className = newClass; 
	 	}
		for (var o in styleObject)
			if(styleObject[o]) d.style[o] = styleObject[o];
	},
	
	changeString : function(elementId,string) {
		var d = document.getElementById(elementId);
		if (d) d.innerHTML = string;
	},
	
	expand : function(elementName,elementId,option,imgName) {
		/*
		option		-1 = close all
					1 = expand all; 
					0 = expand/close only the choosen element; 
					2 = expand/close the choosen element and close the others by expanding the choosen element
		*/
		
		if (!imgName)
			imgName = 'default';
		
		imgFolder = myw.config.website.htdocs.net+'/myWebsite/img/expand/'+imgName+'_';
		
		var els = myw.getElementsByClassName(elementName);
		if (option == 1 || option == -1) {
			for(var i=0;i<els.length;i++) {
				var img;
				if (option == -1) {
					img = 'plus';
			   		jQuery(els[i]).animate({height:'hide'}, 'medium');
				} else {
					img = 'minus';
			   		jQuery(els[i]).animate({height:'show'}, 'medium');
				}
				A = els[i].id.split('_');
				var elName = A[0];
				var elId = A[1];
			   	if (document.getElementById(elName+'_img_'+elId)) 
			   		document.getElementById(elName+'_img_'+elId).src = imgFolder+img+'.png';
			}
		} else {
			var el = document.getElementById(elementName+'_'+elementId);
			if (option == 2 && el.style.display == 'none') {
				for(var i=0;i<els.length;i++) {
					jQuery(els[i]).animate({height:'hide'}, 'medium');
					A = els[i].id.split('_');
					var elName = A[0];
					var elId = A[1];
					if (document.getElementById(elName+'_img_'+elId))
						document.getElementById(elName+'_img_'+elId).src = imgFolder + 'plus.png';
				}
			} 
			if (el) {
				var img;
			   	if (el.style.display != 'none') {
					img = 'plus';
			   		jQuery(el).animate({height:'hide'}, 'medium');
				} else {
			   		img = 'minus';
			   		jQuery(el).animate({height:'show'}, 'medium');
			 	}
			   	if (document.getElementById(elementName+'_img_'+elementId)) 
			   		document.getElementById(elementName+'_img_'+elementId).src = imgFolder+img+'.png';
			}
		}
	},
	
	setFocus : function(n) {
		myw["c"+n].focus();
	},
	
	getElementsByClassName : function(el) {
		if (!el)
			return;
		var els = new Array();
		if(document.getElementsByClassName){ 
			els = document.getElementsByClassName(el+'_class');
		} else {
			var DIVS = document.getElementsByTagName("div");
			for(var i=0;i<DIVS.length;i++) {
				if(DIVS[i].className.indexOf(el+'_class')!=-1) 
					els.push(DIVS[i]);
			}
		}
		return els;
	},
	
	openWin : function(link,width,height,name,toolbar) {
		var openNewWin = 0;
		if (name == "dynName") {
			openNewWin = 1;
			var t = new Date();
			name = '_dynWin_' + t.getMinutes() + '_' + t.getSeconds() + '_' + t.getMilliseconds();
		} else {
			if (myw["c"+name] && myw["c"+name].closed == false) {
				myw["c"+name].document.location.href=link;
				window.setTimeout("myw.setFocus('"+name+"')",300);
			} else {
				openNewWin = 1;
			}
		}
		if (openNewWin == 1) {
			if (width==0 && height==0) {
				width = screen.availWidth-20; 
				height = screen.availHeight-20; 	
				myw["c"+name] = window.open(link,name,"location=no,directories=no,toolbar="+toolbar+",status=no,resizable=no,scrollbars=yes,width="+width+",height="+height);
				myw["c"+name].moveTo(10,0);
			} else {
				toolbar = "yes";
				myw["c"+name] = window.open(link,name,"location=no,directories=no,toolbar="+toolbar+",status=no,resizable=yes,scrollbars=yes,width="+width+",height="+height);
				var moveLeft = (self.screen.width - width) / 2;
				var moveHeight = (self.screen.height - height) / 2;
				myw["c"+name].moveTo(moveLeft,moveHeight);
			} 
		}
	},
	
	getRandomString : function(l) {
		if (!l)
			l = 4;
		var s = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
		var rs = '';
		for (var i=0; i<l; i++) {
			var n = Math.floor(Math.random() * s.length);
			rs += s.substring(n,n+1);
		}
		return rs;
	},
	
	checkWindowSize : function(w,h) {
		if (top.frames.length == 0) {
			var winInfos = myw.getWindowInfos();
			var width,height;
			if (winInfos.width<w && winInfos.height<h) {
				window.resizeTo(w,h);
				width = w;
				height = h;
			} else if (winInfos.width<w) {
				window.resizeTo(w,winInfos.height);
				width=w;
				height=winInfos.height;
			} else if (winInfos.height<h) {
				window.resizeTo(winInfos.width,h);
				width = winInfos.width;
				height = h;
			}
			if (width>0 && height>0) {
				window.moveTo(Math.round((self.screen.width-width)/2),Math.round((self.screen.height-height)/2));
			}
		}
	},
	
	selectNoEmpty : function(field) {
		if (field && field.value == 0) 
			field.selectedIndex = 0;
	},
	
	preloadImages : function(imgs) {
		var cImg = 0;
		var A = new Array();
		for (i=0;i<imgs.length;i++){
			A[i] = new Image();
			A[i].src = imgs[i];
		}
		return A;
	},
	
	createCalendar : function(trigger,format,rng,frm,flds) {
		Calendar.setup(
			{
				inputField : document.frm_main.nh_admin_calendarData, 
				ifFormat : format, 
				button : trigger,	
				firstDay : 1,
				range : rng,
				form : frm,
				fields : flds,
				onUpdate : myw.putDate
			}
		);
	},
	
	putDate : function(p) {
		var PARTOFDATE = new Array();
		PARTOFDATE = p.params.inputField.value.split(',');
		if (PARTOFDATE[0] == '%w') PARTOFDATE[0] = 7;	/* Bug vom jscalendar */
		if (PARTOFDATE[PARTOFDATE.length-2].indexOf("0") == 0) PARTOFDATE[PARTOFDATE.length-2] = PARTOFDATE[PARTOFDATE.length-2].substring(1);
		var c = 0;
		for(var i=0;i<p.params.fields.length;i++) {
			if (p.params.form[p.params.fields[i]])
				c++;
		}
		if (c==3) {
			for(var i=0;i<p.params.fields.length;i++) {
				if (p.params.form[p.params.fields[i]])
					p.params.form[p.params.fields[i]].value = PARTOFDATE[i];
			}
		} else {
			p.params.form[p.params.fields[2]].value = PARTOFDATE.join('.');
		}
	},
	
	exportFieldValues : function(fromForm,toForm,fieldNames) {
		if (document.getElementById('newInputs_'+toForm.name)) {
			document.getElementById('newInputs_'+toForm.name).innerHTML = '';
		} else {
			var newDiv = document.createElement("div");
			newDiv.id = 'newInputs_'+toForm.name;
			document.getElementById(toForm.name).appendChild(newDiv);
		}
		var inputs = '';
		for(var i=0;i<fromForm.elements.length;i++) {
			if (fromForm.elements[i].name) {
				if (fieldNames == '' || (fieldNames && fromForm.elements[i].name.indexOf(fieldNames) >= 0)) {
					if (toForm[fromForm.elements[i].name]) {
						if (fromForm.elements[i].type == 'radio') {
							if (fromForm.elements[i].checked == true) toForm[fromForm.elements[i].name].value = fromForm.elements[i].value;
						} else {
							toForm[fromForm.elements[i].name].value = fromForm.elements[i].value;
						}
					} else {
						if (fromForm.elements[i].type == 'checkbox') {
							if (!fromForm.elements[i].checked) {
								fromForm.elements[i].value = 0;
							}
						} 
						var v = '';
						if (fromForm.elements[i].type == 'radio') {
							if (fromForm.elements[i].checked == true) v = fromForm.elements[i].value;
						} else {
							v = fromForm.elements[i].value;
						}
						
						if (v) {
							v = v.replace(/"/g,'&quot;');
							inputs += '<input type="hidden" name="'+fromForm.elements[i].name+'" value="'+v+'">';
						}
					}
				}
			}
		}
		document.getElementById('newInputs_'+toForm.name).innerHTML = inputs;
	},
	
	submitForm : function(fromForm,toForm) {
		myw.exportFieldValues(fromForm,toForm,'');
		
		if (toForm.nh_formAction) { 
			if (toForm.nh_formAction.value) 
				toForm.action = toForm.nh_formAction.value;
		}
		
		if(fromForm.target && !toForm.target) 
			toForm.target = fromForm.target;
						
		toForm.submit();
		
		if(fromForm.target) 
			toForm.target = '';
	},
	
	initSubmit : function(topicId,field,urlParams) {
		if (topicId == myw.loginId) {
			var d = document.getElementById('myw_div_login_hidden');
			if (d) {
				if (d.innerHTML == '') {
					myw.ajax.execute('get',myw.config.website.cgi.net+'/bin/ajax/login.pl','lang='+myw.frontend.lang+'&template='+document.getElementById('myw_div_login_hidden_templateName').innerHTML+'&nh_noCache=1'+myw.globalHereditableParams,'myw_div_login_hidden');
					d.style.display = 'block';
				} else if (d.style.display != 'none') {
					jQuery(d).animate({height:'hide'},'medium');
				} else {
					jQuery(d).animate({height:'show'},'medium');
				}
				return;
			}
		}
		document.location.href=myw.config.website.cgi.net+"/bin/index.pl?lang="+myw.frontend.lang+"&id="+topicId+"&"+field+"="+myw.initSubmit_parseFormElements()+'&'+urlParams+myw.globalHereditableParams;
	},
	
	initSubmit_parseFormElements : function() {
		var f=document.frm_main;
		var S = new Array;
		for(var i=0;i<f.elements.length;i++) {
			if (f.elements[i].name) {
				if (f.elements[i].value != '' && f.elements[i].value != 0) {
					var v = f.elements[i].value;
					if (f.elements[i].name.search(/unt_\d+\_\d+/) == 0) {
						v = v.replace(/&/g,'_amp_');
						f.elements[i].value = '';
					}
					S.push(f.elements[i].name + '=' + v);
				}
			}
		}

		return S.join('_amp2_');
	},
	
	iframe_showHide : function(iframeId,stringOpen,stringClose) {
	  if (document.getElementById('div_'+iframeId).style.display=='none') {
			document.getElementById('a_'+iframeId).innerHTML = stringClose;
			jQuery(document.getElementById('div_'+iframeId)).animate({width:'show'},'medium', function() {
			  jQuery(document.getElementById(iframeId)).animate({height:'show'},'medium');
			});
	  } else {
			document.getElementById('a_'+iframeId).innerHTML = stringOpen;
			jQuery(document.getElementById(iframeId)).animate({height:'hide'},'medium', function() {
			  jQuery(document.getElementById('div_'+iframeId)).animate({width:'hide'},'medium');
			});
	  }
	},
	
	checkForm : function(f) {
		var errMsg = '';
		var SPANS = document.getElementsByTagName('span');
		for(var i=0;i<SPANS.length;i++) {
			if (SPANS[i].id.indexOf(f.name+'_')==0) {
				var A = SPANS[i].id.split('_');
				A = A.splice(3,A.length);
				var fieldName = A.join('_');
				if (f[fieldName]) {
					if (!f[fieldName].value) 
						errMsg += '- ' + SPANS[i].innerHTML + '<br/>\n'; 
				}
			}
		}
		errMsg != '' ?
			myw.dialog_alert(myw.frontend.lang,myw.lang.frontend.texts.fieldsEmpty + '<br/>\n' + errMsg) :
			myw.submitForm(f,document.frm_main);
	},
		
	getAnimationObj : function(animation,option) {
		var o = new Object();
		if (animation == 'random') {
			var A = new Array('opacity','width','height','width,height','opacity,width','opacity,height','opacity,width,height');
			var B = Math.random().toString().split('.');
			sId = B[1].toString();
			var aId;
			for(var i=0;i<sId.length;i++) {
				aId = parseInt(B[1].substring(i,i+1,B[1].length));
				if(aId < A.length) break;
			}
			o = myw.getAnimationObj(A[aId],option);
		} else {
			var A = new Array;
			A = animation.split(',');
			for(var i=0;i<A.length;i++) {
				if(A[i]) o[A[i]] = option;
			}
		}
		return o;
	},
	
	closeAndExpand : function(id,textNo,titleChoosen,titleNotChoosen,disposition,fadeIn,fadeOut) {
		myw.resetStyles('myw_tmpl_clsExpTit_',titleNotChoosen);
		var executed = 0;
		var DIVS = document.getElementsByTagName('div');
		for(var i=0;i<DIVS.length;i++) {
			if (DIVS[i].id.indexOf('myw_tmpl_clsExpTxt_'+id+'_')==0 && DIVS[i].style.display != 'none') {
				executed = 1;
				if (DIVS[i].id == 'myw_tmpl_clsExpTxt_'+id+'_'+textNo) {
					jQuery(DIVS[i]).animate(myw.getAnimationObj(fadeOut,'hide'),'medium');
					myw.setStyles('myw_tmpl_clsExpTit_'+id+'_'+textNo,titleNotChoosen);
				} else {
					if (disposition == 'successive') {
						jQuery(DIVS[i]).animate(myw.getAnimationObj(fadeOut,'hide'),'medium', function() {
							jQuery(document.getElementById('myw_tmpl_clsExpTxt_'+id+'_'+textNo)).animate(myw.getAnimationObj(fadeIn,'show'),'medium');
						});
					} else {
						jQuery(DIVS[i]).animate(myw.getAnimationObj(fadeOut,'hide'),'medium');
						jQuery(document.getElementById('myw_tmpl_clsExpTxt_'+id+'_'+textNo)).animate(myw.getAnimationObj(fadeIn,'show'),'medium');
					}
					myw.setStyles('myw_tmpl_clsExpTit_'+id+'_'+textNo,titleChoosen);
				}
				break;
			} 
		}
		if (executed == 0) {
			jQuery(document.getElementById('myw_tmpl_clsExpTxt_'+id+'_'+textNo)).animate(myw.getAnimationObj(fadeIn,'show'),'medium');
			myw.setStyles('myw_tmpl_clsExpTit_'+id+'_'+textNo,titleChoosen);
		}
	},
	
	resetStyles : function(baseElId,titleNotChoosen) {
		var SPANS = document.getElementsByTagName('span');
		for(var i=0;i<SPANS.length;i++) {
			if (SPANS[i].id.indexOf(baseElId)==0) {
				SPANS[i].removeAttribute("style");
				for(var o in titleNotChoosen)
					SPANS[i].style[o] = titleNotChoosen[o];
			}
		}
	},
	
	setStyles : function(elId,cssTitle) {
		document.getElementById(elId).removeAttribute("style");
		for(var o in cssTitle)
			document.getElementById(elId).style[o] = cssTitle[o];
	},
	
	createInputField : function(f,fieldName,fieldValue) {
		if (f[fieldName]) {
			f[fieldName].value=fieldValue;
		} else {
			var newInput = document.createElement('input');
			newInput.name = fieldName;
			newInput.type='hidden';
			newInput.value=fieldValue;
			f.appendChild(newInput);
		}
	},
	
	showHideLayer : function(div) {
		var d = document.getElementById(div);
		d.style.display != 'none' ?
			jQuery(d).animate({height:'hide'},'medium') :
			jQuery(d).animate({height:'show'},'medium');
		
	},
	
	getTimeId : function() {
		var today = new Date();
		return today.getTime();
	},
	
	history_setVars : function() {
		if (window.name == 'myLayer_content_iframe') {
			parent.myw.ajax.history_isback=1;
			parent.myw.ajax.history_step--;
		}
	},
	
	history_insert : function(string) {
		if (window.name=='myLayer_content_iframe') {
			 if ((parent.myw.ajax.history_step>0 && parent.myw.ajax.history_isback == 0) || (parent.myw.ajax.history_step>1 && parent.myw.ajax.history_isback==1))
			 	document.write(string);
			 if (!parent.myw.ajax.history_isback)
			 	parent.myw.ajax.history_step++;
			 parent.myw.ajax.history_isback = 0;
		}
	},
	
	getMousePosition : function(e) {
		if(myw.is_ie) {
			var o = myw.getWindowInfos();
			myw.mouse_x = event.clientX + o.scrollLeft;
			myw.mouse_y = event.clientY + o.scrollTop;
		} else {
			myw.mouse_x = e.pageX;
			myw.mouse_y = e.pageY;
		}
	},
	
	scrollObject_init : function(div, obj) {
		var winInfos = myw.getWindowInfos();
		var d = document.getElementById(div);
		d.style.visibility = 'hidden';
		d.style.position = 'absolute';
		d.style.zIndex = 50;
		
		if (obj.width == undefined || obj.width == 0)
			obj.width = 200;
		if (obj.height == undefined || obj.height == 0)
			obj.height = 50;
		if (obj.left == undefined)
			obj.left = 20;
		if (obj.top_start == undefined)
			obj.top_start = 10;
		if (obj.top_changing == undefined)
			obj.top_changing = obj.top_start;

		d.style.width = obj.width + 'px';		
		d.style.height = obj.height + 'px';		
		d.style.left = obj.left + 'px';		
		obj.top_start == 'middle' ?
			d.style.top = Math.round((winInfos.height/2)-(obj.height/2)+winInfos.scrollTop) + 'px' :
 			d.style.top = obj.top_start + 'px';
			
		
		var l = winInfos.width - obj.width - 50;
//		d.style.left = l+'px';
		d.style.visibility = 'visible';
		myw.scrollObject_start(d,obj);
	},
	
	scrollObject_start : function(d,obj) {
		window.setInterval(function(){ 
			myw.scrollObject_execute(d,obj); 
		},500);
	},
	
	scrollObject_execute : function(d,obj) {     
    	var winInfos = myw.getWindowInfos();
 		var t = 0;
 		obj.top_changing == 'middle' ?
 			t = Math.round((winInfos.height/2)-(obj.height/2)+winInfos.scrollTop) :
 			t = winInfos.scrollTop+obj.top_changing;
 			
		if (winInfos.scrollTop != myw.scrollObj_topOld || myw.scrollObj_winHeightOld != winInfos.height) {
			var p = 0;
			if (parseInt(d.style.top) < t) {
				t - parseInt(d.style.top) > 100 ?
					p = t - 100 :
					p = t;
			} else {
				parseInt(d.style.top) - t > 100 ?
					p = t + 100 :
					p = t;
			}
			myw.scrollObj_topOld = winInfos.scrollTop;
			myw.scrollObj_winHeightOld = winInfos.height;
			jQuery(d).stop();
	        jQuery(d).animate({top:p},'2000', function() {
	        	if (t != p) 
	        		jQuery(d).animate({top:t},1000);
	        });
	    }
    },
    
    countElementsInObj : function(obj) {
    	if (!obj)
    		return 0;
    	
    	var c = 0;
    	for(var o in obj) {
    		if (o)
    			c++;
    	} 
    	return c;
    }
};

myw.print = {

	show : function(src,recId) {
	
		/* static index page */
		if (myw.static_tpc1_fileName != '') {
			myw.openWin(myw.config.website.htdocs.net + '/html/'+myw.instanceName+'/'+lang+'/'+myw.static_tpc1_fileName+'_pr.html',myw.website.windows.print.width,myw.website.windows.print.height,'win_print','yes');
			return;
		}
		
		var loc = document.location.href;
		var A = new Array();
				
		/* CONTENT IN SOURCE */
		if (src && recId) {		
		
			/* static mode */
			if (loc.indexOf('/html/'+myw.instanceName+'/')>0) {
				if (unitElement.value.indexOf('_pg') >= 0) {
					A = unitElement.value.split('_');
					var B = new Array();
					for(var i=0;i<A.length;i++) {
						if (A[i].search(/^unt\d+/) == -1 && A[i].search(/^pg\d+/) == -1)
							B.push(A[i]);
					}
					var l = B.join('_');
					l += '_pr.html';
					myw.openWin(l,myw.website.windows.print.width,myw.website.windows.print.height,'win_print','yes');
				} else {
					A = unitElement.value.split('_');
					myw.openWin(A[0] + '.html',myw.website.windows.record.width,myw.website.windows.record.height,'win_record','yes');
				}
			
			/* dynamic mode */
			} else if (loc.indexOf('index.pl')>0) {
				myw.openWin(myw.config.website.cgi.net+'/bin/index.pl?lang='+myw.frontend.lang+'&src='+src+'&id='+recId+'&print=1&nh_startNewWin=1'+myw.globalHereditableParams,myw.website.windows.record.width,myw.website.windows.record.height,'win_record','yes');

			/* rewrite mode */
			} else {
				myw.openWin(myw.config.website.htdocs.net+'/src-'+src+'/'+recId+'/lang='+myw.frontend.lang+'&print=1&nh_startNewWin=1'+myw.globalHereditableParams,myw.website.windows.record.width,myw.website.windows.record.height,'win_record','yes');
			}
		
		/* CONTENT IN TOPIC */
		} else {
			/* static mode */
			if (loc.indexOf('/html/'+myw.instanceName+'/')>0) {
				if (loc.indexOf('_tid')>0) {
					A = loc.split('_');
					myw.openWin(A[0]+'.html',myw.website.windows.record.width,myw.website.windows.record.height,'win_record','yes');
				} else {
					loc.indexOf('_pg')>0 ?
						A = loc.split('_') :
						A = loc.split('.html');
					myw.openWin(A[0]+'_pr.html',myw.website.windows.print.width,myw.website.windows.print.height,'win_print','yes');
				}
			
			/* dynamic mode */
			} else if (loc.indexOf('index.pl')>0) {
				myw.openWin(myw.config.website.cgi.net+'/bin/index.pl?lang='+myw.frontend.lang+'&id='+recId+'&print=1&nh_startNewWin=1' + myw.globalHereditableParams,myw.website.windows.print.width,myw.website.windows.print.height,'win_print','yes');
			
			/* mode rewrite */
			} else {
				myw.openWin(loc+'&print=1&nh_startNewWin=1',myw.website.windows.print.width,myw.website.windows.print.height,'win_print','yes');
			}
		}
	},
	
	showPdf : function(src,id) {
		var loc = document.location.href;
		var s = '';
		
		/* for sources */
		if (src && id) {
		
			/* static page */
			if (loc.search(/\/html\/.*\.html/)>=0) {
				var P = unitElement.value.split('/');
				var P2 = P[P.length-1].split('_');
				var P3 = P2[0].split('-');
				s = 'lang='+f.lang.value+'&src='+P3[0]+'&id='+P3[1]+myw.globalHereditableParams;
				
			} else {
				/* rewrite_mode and dynamic */
				s = 'lang='+myw.frontend.lang+'&src='+src+'&id='+id+myw.globalHereditableParams;
			}
		
		/* for topics */
		} else {
			s = 'lang='+myw.frontend.lang+'&id='+id+myw.globalHereditableParams;
		}
		myw.ajax.execute('get',myw.config.website.cgi.net+'/bin/ajax/pdf.pl',s,'myw_div_pdf_'+src+'_'+id);
	},
	
	filterParams : function(s) {
		var B = new Array();
		var A = s.split('&');
		for(var i=0;i<A.length;i++) {
			if (A[i].indexOf('getUnit=')==-1 && A[i].indexOf('getUnitFragment=')==-1 && A[i].indexOf('tid=')==-1 && A[i].search(/tid_\d+\_\d+/)==-1 && A[i].indexOf('print=')==-1 && A[i].indexOf('gh_websiteMainTemplate=')==-1)
				B.push(A[i]);
		}
		return B.join('&');
	},
	
	filterFormParams : function(f) {
		var P = new Array();
		for(var i=0;i<f.elements.length;i++) {
			if (f.elements[i].value && f.elements[i].name != 'print' && f.elements[i].name != 'beforeSearch' && f.elements[i].name.search(/page_\d+\_\d+/) == -1 && f.elements[i].name.search(/unt_\d+\_\d+/) == -1 && f.elements[i].name.indexOf('tid') == -1)
				P.push(f.elements[i].name+'='+f.elements[i].value);
		}
		return P.join('&');
	}
};

myw.lang = {	
	insertVars : function(string, VARS) {
		if (string) {
			VARS = VARS.reverse();
			for(var i=VARS.length-1;i>=0;i--) {
				var A = string.split('$'+i);
				string = A.join(VARS[i]);
			}
			return string;
		}
	}
};

myw.lang.frontend = {
	texts : new Object()
};

myw.lang.admin = {
	frontendTexts : new Object()
};

myw.frontend = {
	/* Set by perl in lib/myw/header.pm */
	lang : new String()
};

myw.config = {
	website : new Object(),
	instance : new Object(),
	frontend : new Object()
};

myw.website = {
	windows : new Object()
};

myw.scripts = {
};

