/**
 * @author laptop
 */
//addEventListener('mousemove', select, true);
//addEventListener('mouseup', selected, true);
var selectSpeicher;
var tagNr=0;
var aktiv;
function select(e){
	var select = e.target;
	if(typeof select!="undefined"){
		if(select.nodeName=='HTML')
			select = document.getElementsByTagName('body')[0];
			
		var dynadmin = document.getElementById('dynadmin');
		var elem = checkForDyn(select);
		if (typeof selectSpeicher != "undefined" && elem!='MC') {
			selectSpeicher.style.border = 'none';
			selectSpeicher.onmousedown = function(){}
		}
		if(elem){
			//select = elem;
			window.clearTimeout(aktiv);
			if (elem != 'MC') {
				dynadmin.firstChild.childNodes[1].firstChild.onmousedown=function(){
					deleteDyn(elem);
				}
				dynadmin.firstChild.childNodes[0].firstChild.onmousedown=function(){
					editDyn(elem);
				}
				dynadmin.style.display='block';
				dynadmin.style.left = (designLib.pageX(elem)+parseInt(designLib.fullWidth(elem)))+'px';
				dynadmin.style.top = (designLib.pageY(elem)-20)+'px';
				elem.style.border = "1px solid #f0f";
				elem.onmouseout = function(){
					thisObj = this;
					this.fn = function(){
						hidedynadmin(thisObj);
					}
					aktiv = window.setTimeout(thisObj.fn, 2500);
				}
			}
		}else{
			select.style.border="1px solid #f00";
			select.onmousedown = function(){
				selected();
			}
		}
		selectSpeicher = select;
	}
	return false;
}
function editDyn(element){
	getMeta(element);
	for(var i=0;i<dynamic.length;i++){
		if(tagCount>dynamic[i].pos && tagCount<dynamic[i].pos+dynamic[i].len){
			eval('var tempClass = new MULTICORE.'+modules[i]['type'].toUpperCase()+'(element,'+i+')');
			tempClass.init();
			return false;
		}
	}
}
function deleteDyn(element){
	getMeta(element);
	for(var i=0;i<dynamic.length;i++){
		if(tagCount>dynamic[i].pos && tagCount<dynamic[i].pos+dynamic[i].len){
			del(i);
			return false;
			}
	}
	add();
}
function hidedynadmin(element){
	element.style.border = 'none';
	var dynadmin = document.getElementById('dynadmin');
	dynadmin.style.display='none';
}
var dynamic =[];
var tagCount;
var bodystr='';
function selected(){
	if (selectSpeicher.nodeName != "DIV" && selectSpeicher.nodeName != "BODY") 
		alert('geht nicht');
	else{
		getMeta(selectSpeicher);
		for(var i=0;i<dynamic.length;i++){
			if(tagCount>dynamic[i].pos && tagCount<dynamic[i].pos+dynamic[i].len){
				del(i);
				return false;
			}
		}
		add();
	}
		
}
function getMeta(element){
		var sString = 'MULTICOREDYNAMICINSERT';
		var sp = document.createElement('span');
		var text = document.createTextNode(sString);
		sp.appendChild(text);
		if(element.hasChildNodes())
			element.insertBefore(sp, element.firstChild);
		else
			element.appendChild(sp);
		
		var body = document.getElementsByTagName('body')[0];
		bodystr = body.innerHTML;
		
		var pos = body.innerHTML.search(/<span>MULTICOREDYNAMICINSERT<\/span>/);
		element.removeChild(sp);
		
		var bodypart = bodystr.substring(0, pos);
				
		tagCount = bodypart.match(/<[^<>]*>/gi);
		tagCount = tagCount.length;
		
		dynamic = look4Classes(body, 'dyn');
}
function add(){
	
	var funktion2 = function(req){
		alert(req);
	}
	Check = confirm("Änderung speichern?");
			if (Check)
	REQUEST.send('co/asset/php/multicore/addContent.php', 'POST', 'tagCount='+tagCount+'&dynamic='+JSON.stringify(dynamic)+'&even='+0, 'text', funktion2);
}
function del(nr){
	var funktion2 = function(req){
		alert(req);
	}
	Check = confirm("Änderung speichern?");
			if (Check)
	REQUEST.send('co/asset/php/multicore/delContent.php', 'POST', 'del='+nr, 'text', funktion2);
	
}
function look4Classes(_root, searchstr, dynamics){
	if(typeof dynamics==="undefined")
		var dynamics=[];
	for(var i=0; i<_root.childNodes.length;i++){
		if(typeof _root.childNodes[i].className!='undefined'){
			var tempClassNames = _root.childNodes[i].className;
			var classNameArr = tempClassNames.split(" ");
			for(var j=0; j<classNameArr.length;j++){
				if(classNameArr[j]=='dyn'){
					var id = _root.childNodes[i].id = 'dfgdfgf';
					var expression = '<[^>]*'+id+'[^>]*>';
					
					var body = document.getElementsByTagName('body')[0];
					bodystr = body.innerHTML;
					
					var pos = bodystr.search(expression);
					_root.childNodes[i].id = '';
					
					var bodypartt = bodystr.substring(0, pos);
					tpos = bodypartt.match(/<[^<>]*>/g);
					var str = _root.childNodes[i].innerHTML;
					var Ergebnis = str.match(/<[^<>]*>/g);
					if (Ergebnis!=null) {
						var len = Ergebnis.length + 2;
					}else{
						var len = 2;
					}
					var tag = _root.childNodes[i].nodeName.toLowerCase();

					var temparr={'len':len,'pos':tpos.length,'tag':tag};
					dynamics.push(temparr);
				}
			}
		}
		if(_root.childNodes[i].hasChildNodes){
			look4Classes(_root.childNodes[i], searchstr, dynamics)
		}
	}
	return dynamics;
}
function checkForDyn(element){
	if (typeof element.className != 'undefined') {
		var classNameArr = element.className.split(" ");
		for (var j = 0; j < classNameArr.length; j++) {
			if (classNameArr[j] == 'dyn') 
				return element;
			if (classNameArr[j] == 'MULTICORE') {
				return 'MC';
			}
		}				
	}
	if(element.parentNode!=null && element.parentNode.nodeName!='BODY'){
		var elem = checkForDyn(element.parentNode);
		if(elem)
			return elem;
	}
	return false;
}
self.designLib = {
	pageX: function(elem){
		return elem.offsetParent ? elem.offsetLeft + designLib.pageX(elem.offsetParent) : elem.offsetLeft;
	},
	pageY: function(elem){
		return elem.offsetParent ? elem.offsetTop + designLib.pageY(elem.offsetParent) : elem.offsetTop;
	},
	fullHeight:function(elem){
		var old = resetCSS(elem, {
			height:'',
			display:'',
			visibility:'hidden',
			position:'absolute'
		});
		if(elem.style.display!='none'){
			var h = elem.offsetHeight+'px' || getHeight(elem);
			restoreCSS(elem, old);
			return h;
		}
		
		var h = elem.clientHeight+'px' || getHeight(elem);
		restoreCSS(elem, old);
		return h;
	},
	fullWidth:function(elem){
		if(elem.style.display!='none')
			return elem.offsetWidth+'px' || getWidth(elem);
		var old = resetCSS(elem, {
			display:'',
			visibility:'hidden',
			position:'absolute'
		});
		var h = elem.clientWidth+'px' || getWidth(elem);
		restoreCSS(elem, old);
		return h;
	}
}
function resetCSS(elem, prop){
	var old = {};
	for(var i in prop){
		old[i] = elem.style[i];
		elem.style[i]=prop[i];
	}
	return old;
}
function restoreCSS(elem, prop){
	for(var i in prop){
		elem.style[i]=prop[i];
	}
}
MULTICORE={};
MULTICORE.MENUE=function(element, module_id){
	var thisObj = this;
	this._elem = element.firstChild;
	this._module_id = module_id;
	this.listElements = [];
}
MULTICORE.MENUE.prototype = {
	init:function(){
		var thisObj = this;
		for(var i=0;i<thisObj._elem.childNodes.length;i++){
			thisObj.menPunkt(i, thisObj._elem.childNodes[i]);
		}
		this.appendAdd();
	},
	menPunkt:function(nr, elem){
		var thisObj = this;
		alert(thisObj._elem);
		this._eleme = elem;
		this._eleme._nr=nr;
		this._eleme.onclick=function(){
			alert(this._nr);
			return false;
		}
			
		var close = document.createElement('a');
		close.style.cssFloat = 'right';
				
		var text = document.createTextNode('X');
		close.appendChild(text);
		this._eleme.appendChild(close);
	},
	exit:function(){
		for(var i=0;i<this._elem.childNodes.length;i++){
			this._elem.childNodes[i].firstChild.onclick=function(){}
		}
	},
	appendLi:function(){
		var thisObj = this;
		var li = document.createElement('li');
		var a = document.createElement('a');
		var text = document.createTextNode('Neuer Menüpunkt');
		a.appendChild(text);
		li.appendChild(a);
		
		var fn = function(dat){
			var set = [{'module_id':thisObj._module_id, 'name':dat}];
			Check = confirm("Änderung speichern?");
			if (Check)
				REQUEST.send('co/asset/php/multicore/sql.php', 'POST', 'funktion=insert&table=mc_menu&set='+JSON.stringify(set), 'text', function(req){alert(req);});
		}
		var dynA = MULTICORE.FORM.DYNAMICINPUT.init(a, fn);
		dynA.toInput();
		
		this._elem.insertBefore(li, this._elem.childNodes[this._elem.childNodes.length-1]);
	},
	appendAdd:function(){
		var thisObj = this;
		var li = document.createElement('li');
		var text = document.createTextNode('add');
		li.appendChild(text);
		this._elem.appendChild(li);
		li.onclick=function(){
			thisObj.appendLi();
		}
	}
}
MULTICORE.FORM = {};
MULTICORE.FORM.DYNAMICINPUT ={
	init:function(a, onBlur){
		var thisObj = obj = this;
		this.elem=a;
		this._blur = onBlur;
		this.parent=a.parentNode;
		this.input= document.createElement('input');
		this.input.defaultValue=a.firstChild.nodeValue;
		this.input.value=this.input.defaultValue;
		this.input.style.width = (this.input.value.length*10)+'px';
		
		this.elem.onclick=function(){
			thisObj.toInput();
		}
		this.input.onblur=function(){
			thisObj.toText();
		}
		this.input.onkeyup=function(){
			this.style.width = (this.value.length*10)+'px';
		}
		return this;
	},
	toInput:function(){
		this.parent.removeChild(this.elem);
		this.parent.appendChild(this.input);
	},
	toText:function(){
		this.parent.removeChild(this.input);
		this.parent.appendChild(this.elem);
		if(this.input.value!=this.input.defaultValue){
			this._blur(this.input.value);
		}
	}
}
/*
MULTICORE.TEXT=function(element){
	var thisObj = this;
	this._elem = element;
}
MULTICORE.TEXT.prototype = {
	init:function(){
		
		thisObj._elem.firstChild.onclick=function(){
			alert('test');
		}
	},
	text:function(){
		
	}
}*/

