function createFormular(parentObj,idForm,values,stripSave)
{
	var fields = labels[idForm+'_fields'].split(','); if (!fields) return;	
	var mand = new Array(); if (labels[idForm+'_mand']) mand = labels[idForm+'_mand'].split(','); 
	var form = createContainer(parentObj,idForm,'form');	
	for (var i=0; i<fields.length; i++){   
			
		var id = fields[i];
		var value = false; if (values) var value = values[id];
		var type = labels[id+'_type']; if (!type) type = 'text';
		var optional = true; if (inArray(id,mand)) optional = false;
		
		if (id == 'break') createBreak(form);
		else if (type == 'textarea'){
			createText(form,id+'_txt','label');
			createTextarea(form,id,'input',value); 
		}
		else if (type == 'image') createImageUpload(form,idForm,values);
		else if (type == 'selectbox'){
			var texts = labels[id+'_fields'].split(',');
			createSelectbox(form,id,texts,value,optional);
		} 
		else if (type == 'selection'){
			var texts = labels[id+'_fields'].split(',');
			createSelection(form,id,texts,value,optional);
		} 
		else if (type == 'selection2'){
			var texts = object2(labels[id+'_fields']);
			createSelection(form,id,texts,texts[value],optional);
		} 
		else if (type == 'bool'){
			var texts = object2(labels.bool_fields);
			createSelectbox2(form,id,texts,value,optional);
		} 
		else if (type == 'checkboxes'){
			createBreak(form,2);
			var texts = labels[id+'_fields'].split(',');
			if (value) value = value.split(', ');
			createCheckboxes(form,id,texts,value);
		} 
		else if (type == 'checkbox'){
			createBreak(form);
			createCheckbox(form,id,'',value,optional);
		} 
		else if (type == 'mail'){
			createTextfield(form,id,'input',value,type,optional);
			if (labels[id+'2']) createTextfield(form,id+'2','input',value,type,'second');
		} 
		else if (type == 'password'){
			value = '';
			createTextfield(form,id,'input',value,type,optional);
			createTextfield(form,id+'2','input',value,type,'second');
		}
		else var element = createTextfield(form,id,'input',value,type,optional);
		
		if (type == 'date') createImage(form,'','link','img/calendar.png','calendar','click',Array(element,value));					
		if (window.formMenu){ var element = obj(id+'_txt'); if (element) element.oncontextmenu = formMenu; } // admin	
	}
	
	if (window.adminMenu) adminMenu(form,idForm,true); // admin	
	
	// submit button
	if (!stripSave){ 
		createBreak(form,2); 
		var btn = createSubmit(form,idForm+'Submit');
		align(btn); align(form); 
	}
			
	return form;
}
function calendar(element,param)
{
	var input = param[0];
	var date = param[1];
	var options = new Object();
	if (tab != 'events') options = object('changeYear',true,'yearRange','1915:2015');
	$(element).datepicker('dialog',date,function(value){ $(input).val(value); },options,eventObj); 
	$('#ui-datepicker-div').css('z-index','50');	
}
function createImageUpload(parentObj,formId,values)
{
	var box = createContainer(parentObj,'','uploadBox');
	createImageBox(box,values.pic,'big',values); createBreak(box);
	var param = object('type','image','connect',tab,'formId',formId);
	if (values) param.connectId = values.id;
	if (values && values.pic) param.pic = values.pic;
	createUpload(box,'imageUpload','upload',param);
}
function append(parent,element)
{
	if (!parent) return;
	if (typeof parent == 'string') parent = obj(parent);
	
	if (isArray(parent)){		
		var type = parent[1];
		parent = parent[0]; if (typeof parent == 'string') parent = obj(parent);
		if (type == 'after' || type == 'replace') $(parent).after(element);
		else if (type == 'before') $(parent).before(element);
		else if (type == 'prepend') $(parent).prepend(element);
		if (type == 'replace') $(parent).remove();
	}
	else if (parent) parent.appendChild(element); 
}
function label(parentObj,id,optional)
{
	if (isObject(parentObj) && parentObj[1] == 'replace') return;
	
	var element = document.createElement('SPAN'); append(parentObj,element);
	var text = labels[id+'_txt']; if (!text) return; // if (!text) text = id;
	if (!optional) text += '*';	
	element.innerHTML = text;
	element.className = 'label';
	element.id = id+'_txt';
	
	// label editing
	if (!value && window.labelChange){
		element.id = id+'_txt';
		element.oncontextmenu = labelChange; 	
	} 	
	
	return element;
}
function attributes(element,id,className,evtFunction,evtType,evtParam)
{
	if (evtFunction){
		if (isArray(evtFunction)){
			for (var i=0; i<evtType.length; i++){
				if (!evtType[i]) continue;			
				if (evtParam && (evtParam[evtFunction[i]] || evtParam[evtFunction[i]] == 0)) eventBind(element,evtFunction[i],evtType[i],evtParam[evtFunction[i]]);
				else eventBind(element,evtFunction[i],evtType[i]);
//				else eventBind(element,evtFunction[i],evtType[i],evtParam);
			} 
		} 
		else if (evtType) eventBind(element,evtFunction,evtType,evtParam);
		else eventBind(element,evtFunction,'click',evtParam);
	}
	if (id) element.id = id;
	if (className) element.className = className;
}
function eventBind(element,evtFunction,evtType,evtParam)
{
	var enter = false;
	if (evtType == 'enter'){ enter = true; evtType = 'keypress'; } 

	$(element).bind(evtType,function(event){
		if (enter && event.keyCode != '13') return;
		window.eventObj = event;	
		window[evtFunction](this,evtParam);	
	});
}
function createBox(parentObj,id,className,border,stripTitle,colorBack,colorBorder,width,stripId,returnFrame)
{
	// box already there (not if prepend)
	if (typeof parentObj == 'string' && parentObj.substr(0,1) == '<'){}
	else if (obj(id)) return objEmpty(id);
	
	var borderWidth = border; if ($.browser.msie) borderWidth += 3;	
	
	if (className){
		var frameClass = className+'Frame';
		var cornerClass = className+'Corner corner';
		var file = className;
		if (colorBack) file += '_'+colorBack;
		if (colorBorder && className != 'frame') file += '_'+colorBorder;
	} 
	else{
		var frameClass = '';
		var cornerClass = id+'Corner corner';
		var file = id;
	} 
	if (colorBack) frameClass += ' '+colorBack;
	if (colorBorder) frameClass += ' '+colorBorder+'Border';

	// frame
	var cont = createContainer(parentObj,(id)?id+'Frame':'',frameClass); 
	if (border) $(cont).css({borderWidth:border+'px',borderStyle:'solid'});
	if (width) $(cont).width(width);
	var topMargin = border; if (!topMargin) topMargin = 0;
	var leftMargin = borderWidth; if ($.browser.msie) leftMargin -= 3;
	var rightMargin = borderWidth; if ($.browser.msie) rightMargin -= 3;
	
	// top corners
	var img = createImage(cont,'',cornerClass+' corner1','img/'+file+'_1.png'); $(img).css({marginTop:'-'+topMargin+'px',marginLeft:'-'+leftMargin+'px'});
	var img = createImage(cont,'',cornerClass+' corner2 right','img/'+file+'_2.png'); $(img).css({marginTop:'-'+topMargin+'px',marginRight:'-'+rightMargin+'px'});
	
	// content
	if (stripId || stripTitle) createStrip(cont,stripId,stripTitle,colorBorder,width);
	var main = createContainer(cont,id,'boxContent');
	createBreak(cont);
		
	// bottom corners
	var img = createImage(cont,'',cornerClass+' corner3','img/'+file+'_4.png'); $(img).css({marginBottom:'-'+topMargin+'px',marginLeft:'-'+leftMargin+'px'});
	var img = createImage(cont,'',cornerClass+' corner4 right','img/'+file+'_3.png'); $(img).css({marginBottom:'-'+topMargin+'px',marginRight:'-'+rightMargin+'px'});
		
	if (returnFrame) return cont;
	else return main;
}
function createStrip(parentObj,id,title,color,width)
{
	var cont = createContainer(parentObj,'','stripFrame');
	var img = createImage(cont,'','corner','img/strip_'+color+'_1.png');
	var text = createText(cont,id+'_txt',color+'Strip strip',title); $(text).width(width-48);
	createContainer(text,id+'Buttons','stripButtons');
	var img = createImage(cont,'','corner','img/strip_'+color+'_2.png');
	createBreak(parentObj);
}
function createBreak(parentObj,number)
{
	if (!number) number = 1;
	
	for (var i=0; i<number; i++){		
		var element = document.createElement('BR');
		if (parentObj) parentObj.appendChild(element);	
	};
}
function createPopup(id,text,width,height,close)
{
	var cont = createContainer(document.body,id,'popup');
	if (!text && labels[id+'_txt']) text = labels[id+'_txt'];	
	cont.title = text;
	if ($.browser.safari){ var help = createContainer(cont); $(help).datepicker(); } // iron bug
	$(cont).dialog({width:width,height:height,beforeclose:window[close],close:function(){ $(cont).remove(); }});
	if ($.browser.safari) $(help).hide(); // iron bug
	
	return cont;
}
function popupClose()
{
	$('.ui-dialog').remove();
}
function createDialog(title,evtFunction,evtParam)
{
	var cont = createContainer(document.body);
	createImage(cont,'','infoButton','img/info.gif');
	var text = labels.delete_txt; text = text.replace(/__title__/,title);
	createText(cont,'deleteInfo','',text);
	$(cont).dialog({ 
		modal:true,
		dialogClass:'info',
		buttons:{ 			
			Nein: function(){  $(this).dialog('close'); },
			Ok: function(){ $(this).dialog('close'); window[evtFunction](this,evtParam); }
		} 
	});	
}
function createImageBox(parentObj,id,size,data,evtFunction,evtType,evtParam)
{
	// address	
	var address = '';
	var pic = data.pic; if (!pic && id == 'forum') pic = cache.user.pic; if (!pic) pic = data.id; 
	if (pic && pic != '0') address = 'pic/'+pic+'_'+size+'.jpg';
	else if (data.gender == 'female') address = 'img/female_'+size+'.png';
	else if (data.gender == 'male') address = 'img/male_'+size+'.png';
	else address = 'img/object_'+size+'.png';
	address += '?'+Math.random();
	
	var className = 'image'+ucfirst(size);
	
	// image
	var box = createContainer(parentObj,data.pic,'imageBox');
	createImage(box,'','imageBorderTop','img/imageTop_'+size+'.png');
	var content = createContainer(box,'','imageBody '+className,false,evtFunction,evtType,evtParam); //if (data.pic != '1') $(content).css('text-align','right');		
	var image = createImage(content,'','',address,'valign','load'); // after its loaded put in the content
	image.alt = data.pic;
	createImage(box,'','imageBorderBottom','img/imageBottom_'+size+'.png');	
	createBreak(box);
	
	// name
	if (id != 'blanko' && (size == 'middle' || size == 'small')){
		var name = '&nbsp;';
		if (data.coName) name = data.coName; 
		else if (data.name) name = data.prename+' '+data.name; 
		else if (data.title) name = data.title;
		else if (data.descr) name = data.descr;
		if (size == 'middle' && name.length > 13) name = name.substr(0,13)+'..';
		else if (size == 'small' && name.length > 7) name = name.substr(0,7)+'..';
		if (name) createText(box,'','',name);
	}
	
	return box;
}
function createColorbox(parentObj,address,title) // for ie add theme/ to css cboxIE
{
	var element = document.createElement('A');
	element.rel = 'colorbox';
	if (title) element.title = title;
	element.href = address;
	parentObj.appendChild(element);
	$(element).colorbox({
		slideshow:true,
		slideshowAuto:false,
		slideshowStart:labels.colorboxStart,
		slideshowStop:labels.colorboxStop,
		current:'{current} '+labels.colorboxOf+' {total}'
	});
	
	return element;
}
function createText(parentObj,id,className,value,evtFunction,evtType,evtParam)
{
	var element = document.createElement('SPAN'); append(parentObj,element);
	if (value) element.innerHTML = value;
	else if (labels[id]) element.innerHTML = labels[id];
	else if (id.substr(id.length-4) == '_txt') element.innerHTML = substring(id,0,-4);
	else element.innerHTML = id;
	attributes(element,id,className,evtFunction,evtType,evtParam);
	if (!value && window.labelChange) element.oncontextmenu = labelChange; // label editing		
	if (labels[id+'_tip']) $(element).tooltip(labels[id+'_tip']);
	return element;
}
function createLink(parentObj,id,className,value,evtFunction,evtParam)
{
	return createText(parentObj,id,className,value,Array(evtFunction,'evtOver','evtOut'),Array('click','mouseover','mouseout'),object(evtFunction,evtParam));
}
function createContainer(parentObj,id,className,hidden,evtFunction,evtType,evtParam)
{
	var element = document.createElement('DIV'); append(parentObj,element);
	if (hidden != 'shadow') element.style.display = 'none';
//	if (typeof parentObj == 'string'){
//		if (parentObj.substr(0,1) == '<') $('#'+parentObj.substr(1)).prepend(element);
//		else if (parentObj.substr(0,1) == '_') $('#'+parentObj.substr(1)).before(element);
//		else $('#'+parentObj).after(element);
//	} 
//	else if (parentObj) parentObj.appendChild(element);
	if (!hidden) $(element).fadeIn('slow');
	attributes(element,id,className,evtFunction,evtType,evtParam);		
	return element;
}
function createImage(parentObj,id,className,address,evtFunction,evtType,evtParam)
{
	var element = document.createElement('IMG'); append(parentObj,element);
	element.src = address;  //+'?'+Math.random();
	element.alt = '';
	attributes(element,id,className,evtFunction,evtType,evtParam);
	
	// tooltip
	if (labels[id+'_tip']) $(element).tooltip(labels[id+'_tip']); 
	else if (labels[className+'_tip']) $(element).tooltip(labels[className+'_tip']); 
	
	return element;
}
function createUpload(parentObj,id,modul,param)
{
	var form = createFormularFrame(parentObj,id,'uploadForm');
	createImage(form,'','uploadButton','img/upload.png');
	
	if (!param) param = new Object(); param.action = modul;
	var className = 'uploadFile'; if ($.browser.msie) className = 'uploadFileIE';
	var element = createInput(form,'file',className,'','file','submitUpload','change',param);
	element.name = 'file';	
	if ($.browser.mozilla) $(element).css({marginLeft:'-150px'});
	
	return form;
}
function createButton(parentObj,id,evtFunction,evtParam)
{
	var element = document.createElement('BUTTON');
	var value = decodeAsci(labels[id]); if (!value) value = id;
	element.innerHTML = value;
	if (parentObj) parentObj.appendChild(element);
	attributes(element,id,'',evtFunction,'click',evtParam);
	$(element).button();
	return element;
}
function createSubmit(parentObj,id,param)
{
	if (!id) id = 'submit';
	var element = createButton(parentObj,id,'submitForm',param)
	return element;
}
function createLine(parentObj)
{
	var element = document.createElement('HR');
	if (parentObj) parentObj.appendChild(element);
	attributes(element,'','line');
	return element;
}
function createInput(parentObj,id,className,value,type,evtFunction,evtType,evtParam)
{
	if ($.browser.msie) var element = document.createElement('<input name="">'); // IE bug
	else var element = document.createElement('INPUT'); 
	if (type) element.type = type; else element.type = 'text';
	append(parentObj,element);	
	if (value) element.value = decodeAsci(value);
	attributes(element,id,className,evtFunction,evtType,evtParam);
	return element;
}
function createTextEditor(parentObj,id,text)
{
	var element = createContainer(parentObj,id); 
	if (!text){
		text = labels.text;
		$(element).focus(function(){ element.innerHTML = ''; $(element).unbind('focus'); });
	} 
	element.innerHTML = text;
	element.onblur = function(){ if (element.innerHTML == '' || element.innerHTML == '<br>') element.innerHTML = labels.text; };
	if (window.editor) editor(element);
}
function createTextfield(parentObj,id,className,value,checkType,optional,evtEnter,evtParam)
{
	if (parentObj.id != 'logon') label(parentObj,id,optional);
	
	if (!className) className = 'input';
	if (checkType == 'password') type = checkType;
	else type = 'text';
	
	var evtFunction = Array();
	var evtType = Array();
	
	// check input except when read only or false
	if (checkType && checkType != 'read'){
		evtFunction.push('checkElement');
		evtType.push('blur');
	}
	// enter event
	if (evtEnter){
		evtFunction.push(evtEnter);
		evtType.push('enter');
	}	
	// width
	var className2 = className.split('_');
	if (className2.length > 1){
		className = className2[0];
		var width = className2[1];
	}
	
	// default
	if (!value && userObj[id]) value = userObj[id];

	var element = createInput(parentObj,id,className,value,type,evtFunction,evtType,object('checkElement',Array(checkType,optional),evtEnter,evtParam));
	if (width) element.style.width = width;
	if (checkType == 'read') element.readOnly = true; // read only	
	
	// error
	var error = new Array();		
	if (!optional) error.push(labels.error.mandatory);	
	if (optional == 'second') error.push(labels.error.second);
	else if (labels.error[checkType]) error.push(labels.error[checkType]);
	createText(parentObj,id+'_error','error',error.join(', '));
	
	return element;
}
function createTextfieldLabeled(parentObj,id,className,checkType,optional,evtEnter,evtParam)
{
	if (checkType == 'password'){ checkType = 'text'; var password = true; } 
	var element = createTextfield(parentObj,id,className,labels[id],checkType,optional,evtEnter,evtParam);	
	$(element).bind("focus", function(){ 
		$(this).val('');
		$(this).unbind('focus'); 
		if (password){
			createTextfield(Array(this,'replace'),id,className,'','password',optional,evtEnter,evtParam);
			$('#'+id).focus();
		}		
	});
}
function createTextarea(parentObj,id,className,value,evtFunction,evtType,evtParam)
{
	var element = document.createElement('TEXTAREA');
	if (value) value = value.replace(/<br \/>/g,'');
	$(element).html(value);
	if (parentObj) parentObj.appendChild(element);
	attributes(element,id,className,evtFunction,evtType,evtParam);
	return element;
}
function createMap(parentObj,address)
{
	var cont = createContainer(parentObj,'','map');
	var options = {zoom:11,mapTypeId:google.maps.MapTypeId.ROADMAP,scrollwheel:false};	
	var map = new google.maps.Map(cont,options);
	var geocoder = new google.maps.Geocoder();
	geocoder.geocode({'address':address},function(result,status){ new google.maps.Marker({map:map,position:result[0].geometry.location}); });
	geocoder.geocode({'address':address},function(result,status){ map.setCenter(result[0].geometry.location); });
	
	return cont;
}
function createSelectboxElement(parentObj,values,selected)
{
	if (typeof values == 'string') values = Array(values);
	for (var i=0; i<values.length; i++) {		
		var element = document.createElement('OPTION');
		element.innerHTML = values[i];
		parentObj.appendChild(element);
		if (values[i] == selected) parentObj.options.selectedIndex = i;
	};	
}
function selectboxFill(answer,element) // fill with elements
{
	var values = answer.data; if (!values) values = Array();
	var selected = sValue(element);
	$(element).children().remove(); // empty
	values.unshift(labels.choose); // first choose
	
	createSelectboxElement(element,values,selected);
	if (selected) $(element).trigger('change');	
	element.disabled = false;
	
	// add + brand_cat2_veOld2
	var id = element.id;	
	if ((id == 'veMan' || id == 'veMod') && !$('#'+id+'Plus').length){
		var type = labels[id+'_fields'].split('_');
		var plus = createText(Array(element,'after'),id+'Plus','plus link','+');
		$(plus).click(function(){
			var cont = createPopup('selectboxNew',labels[id+'Plus_tip']);
			createTextfield(cont,type[1]); createBreak(cont);
			createSubmit(cont,'',object('type',type[0],'cat1',sValue(type[2]),'after',element));
		});
	} 
}
function selectboxNew(answer,box)
{
	createSelectboxElement(box,answer.text,answer.text);
	popupClose();
}
function selectboxDb(element,type,id) // danymic content load
{	
	var param = new Object();
	var type = type.split('_'); // type_cat_overfield
	param.type = type[0];
	param.cat = type[1];
	var depentId = type[2];
		
	element.disabled = true; // disable
	
	// no overfield
	if (!depentId) send('selectboxFill',param,element);
	
	// depent on overfield
	else $('#'+depentId).change(function(){ // over category	
		param.value = sValue(this);
		if (param.value != $(element).attr('depent')){
			send('selectboxFill',param,element); // if new cat get data from db
			$(element).attr('depent',param.value);
		} 		
	}); 
}
function createSelectbox(parentObj,id,values,selected,optional,evtFunction,evtType,evtParam)
{	
	label(parentObj,id,optional);
	var element = document.createElement('SELECT');	append(parentObj,element);
	if (!values) values = Array();
	
	// get values from database ex. veOld_fields = vehicle
	if (values.length == 1){ 
		selectboxDb(element,values[0],id); 
		values = Array(); 
		if (selected) values.push(selected);
	} 
	
	// first
	if (values[0] != labels.choose) values.unshift(labels.choose); 
				
	createSelectboxElement(element,values,selected);	
	attributes(element,id,'input',evtFunction,evtType,evtParam);	
		
	if (!optional){
		createText(parentObj,id+'_error','error',labels['error']['selection']);
		$(element).change(function(){ checkElement(this,Array('selectbox',optional)); });
	}
	
	return element;
}
function createSelectbox2(parentObj,id,values,selected,optional,evtFunction,evtType,evtParam)
{
	label(parentObj,id,optional);
	var element = document.createElement('SELECT');	append(parentObj,element);
	
	var i=0;
	$.each(values,function(id,value){
		var option = document.createElement('OPTION');
		option.id = id;
		option.innerHTML = value;		
		element.appendChild(option);
		if (id == selected) element.options.selectedIndex = i;	
		i++;
	});
	
	attributes(element,id,'input',evtFunction,evtType,evtParam);
	return element;
}
function createSelection(parentObj,id,values,checked,optional,evtFunction,evtType,evtParam)
{		
	var cont = createContainer(parentObj,id,'selection',false,evtFunction,evtType,evtParam);	
	cont.name = 'selection';
	label(cont,id,optional);
	
	$.each(values,function(index,value){
		var input = createInput(cont,index,'checkbox','','radio'); input.name = id;
		createText(cont,'','',value);
		if (values.length > 2) createBreak(cont);
		if (checked && index == checked) input.checked = true;
		if (checked && value == checked) input.checked = true;
	});
	
	if (!optional){
		createText(parentObj,id+'_error','error',labels['error']['selection']);
		$(cont).click(function(){ checkElement(this,Array('selection',optional)); });
	}
	
	return cont;
}
function createCheckbox(parentObj,id,name,checked,optional,evtFunction,evtType,evtParam)
{
	var element = createInput(parentObj,id,'checkbox','','checkbox',evtFunction,evtType,evtParam);
	if (name) element.name = name;
	if (checked && checked != '0') element.checked = true;
	createText(parentObj,id+'_txt');
	
	if (!optional){
		createText(parentObj,id+'_error','error',labels['error']['mandatory']);
		$(element).change(function(){ checkElement(this,Array('checkbox',optional)); });
	}
	
	return element;
}
function createCheckboxes(parentObj,id,texts,values)
{
	label(parentObj,id);
	var cont = createContainer(parentObj,id,'checkboxes');
		
	for (var i=0; i<texts.length; i++){
		var element = createInput(cont,id,'checkbox','','checkbox');
		element.name = id;
		if (values && inArray(texts[i],values)) element.checked = true;
		createText(cont,'','',texts[i]);	
		createBreak(cont);
	} 
	
	createBreak(cont);
	return cont;
}
function createFormularFrame(parentObj,id,className)
{
	if ($.browser.msie) var element = document.createElement('<form enctype="multipart/form-data">'); // IE bug
	else var element = document.createElement('FORM');
	element.enctype = 'multipart/form-data';
	element.method = 'post';
	element.target = id+'_iframe';
	createIFrame(element,id+'_iframe','hidden');
	if (parentObj) parentObj.appendChild(element);
	attributes(element,id,className);
	
	return element;
}
function createIFrame(parentObj,id,className,source,data)
{
	if ($.browser.msie) var element = document.createElement('<iframe name="'+id+'" frameborder="0">'); // IE bug
	else var element = document.createElement('IFRAME');
	if (source) element.src = source;
	else element.src = '#';
	element.name = id;
	if (parentObj) parentObj.appendChild(element);	
	attributes(element,id,className);
	
	if (data) element.contentWindow.window.param = data;
	
	return element;
}
function createList(parentObj,id,className)
{
	var element = document.createElement('UL');
	if (parentObj) parentObj.appendChild(element);
	attributes(element,id,className);
	return element;
}
function createListElement(parentObj,id,className,value)
{
	var element = document.createElement('LI');
	element.innerHTML = value;
	if (parentObj) parentObj.appendChild(element);
	attributes(element,id,className);
	return element;
}
function createSlider(parentObj,data,numberStep,id,boxName,panelWidth,panelHeight,type)
{
	if (!data) return;
	
	var detail = new Object();
	detail.id = id;
	detail.name = boxName;
	detail.data = data;
	detail.panel = id+'Panel';
	detail.buttons = id+'Control';
	detail.numberNow = numberStep;
	detail.numberStep = numberStep; // step number
	detail.numberAll = data.length; // max to show
	detail.type = type;
	if (type == 'horizontal') detail.size = panelWidth*numberStep;
	else detail.size = panelHeight;
	
	// panel
	var cont = createContainer(parentObj,'','sliderContainer');
	if (type == 'horizontal') cont.style.width = detail.size+'px';
	else cont.style.width = panelWidth;
	var row = createContainer(cont,id+'Row','sliderRow');
	var panel = createContainer(row,detail.panel,'sliderPanel');
//	if (window[boxName+'Box']) window[boxName+'Box'](panel,data,numberStep,0);	
	sliderBox(panel,data,numberStep,0,boxName,id);	
	row.style.height = row.style.height = panelHeight+'px';
	
	// buttons
	createBreak(cont);
	var buttons = createContainer(cont,detail.buttons,'sliderControl');
	var previous = createImage(buttons,'sliderPrevious','sliderPrevious','img/prev.png','slider','click',Array(detail,'previous'));
	$(previous).hide();
	var next = createImage(buttons,'sliderNext','sliderNext','img/next.png','slider','click',Array(detail,'next'));
	if (detail.numberAll <= numberStep) $(next).hide();
	
	return cont;
}
function sliderBox(parentObj,data,numberStep,numberNow,modul,id)
{
	for (var i=0; i<numberStep; i++){
		
		var value = data[i+numberNow]; if (!value) continue;
		if (window[modul+'Box']) window[modul+'Box'](parentObj,id,value);
	} 
}
function slider(element,param)
{
	var detail = param[0];
	var panel = obj(detail.panel);
	var control = obj(detail.buttons);
	var direction = param[1];
	var numberCreated = panel.childNodes.length; // already showen
	
	// costum close elements
	if (window[detail.name+'Close']) window[detail.name+'Close']();
	
	// horizontal or vertical
	if (detail.type == 'horizontal') var position = substring($(panel).css('marginLeft'),0,-2);
	else if (detail.type == 'vertical') var position = substring($(panel).css('marginTop'),0,-2);
	
	// what to do when a button pressed
	if (direction == 'previous'){ 
		if (detail.numberNow <= detail.numberStep) return; // beginning
		detail.numberNow -= detail.numberStep;
		var prefix = '+';
	}
	else if (direction == 'next'){	
		if (detail.numberNow >= detail.numberAll) return; // end
		if (detail.numberNow+detail.numberStep > numberCreated && numberCreated < detail.numberAll){ // if it will be more than created, create the next
//			window[detail.create](panel,detail.data,detail.numberStep,detail.numberNow); 
			sliderBox(panel,detail.data,detail.numberStep,detail.numberNow,detail.name,detail.id); 	
		} 
		detail.numberNow += detail.numberStep; 
		var prefix = '-';
	} 

	$(control).children('#sliderPrevious').hide();
	$(control).children('#sliderNext').hide();
	var pixel = eval(position+prefix+detail.size);
	if (detail.text) $('.'+detail.text).css({ overflow:'hidden' }); // bug in stream
	if (detail.type == 'horizontal') $(panel).animate({marginLeft:pixel},500,false,function(){sliderAfter(detail,control)});
	else if (detail.type == 'vertical') $(panel).animate({marginTop:pixel},500,false,function(){sliderAfter(detail,control)});
}
function sliderAfter(detail,control)
{
	if (detail.text) $('.'+detail.text).css({ overflow:'auto' }); // bug in stream

	// hide buttons
//	var buttons = control.childNodes;
	if (detail.numberNow <= detail.numberStep) $(control).children('#sliderPrevious').hide(); // beginning
	else $(control).children('#sliderPrevious').show();
	if (detail.numberNow >= detail.numberAll) $(control).children('#sliderNext').hide(); // end
	else $(control).children('#sliderNext').show(); 
}
