var timToggleAdmin;

function bsGenerateAdmBtns(cssFilename){

	//Get the rules array
	var rules = new Array();
	for(var i = 0; i < document.styleSheets.length; i++)	
	if(document.styleSheets[i].href != null && document.styleSheets[i].href.indexOf(cssFilename) > 0){
		if (document.styleSheets[i].cssRules) {
			rules = document.styleSheets[i].cssRules;
		} else if (document.styleSheets[i].rules) {
			rules = document.styleSheets[i].rules;
		}
		break;
	}

	//For each rule, create a button to add a div associated with the rule
	var btnsHTML = "";
	for(var i = 0; i < rules.length; i++){
		btnsHTML = "<a href=\"javascript:bsAddBlock('"+rules[i].selectorText+"')\">"+rules[i].selectorText+"</a>";			
	}

	$('bsAdminBtns').innerHTML = btnsHTML;
}

function bsToggleAdminCtrls(elem){

	var admCtrls =  $(elem).getLast();
	admCtrls.toggleClass('hidden');
	/*clearTimeout(timToggleAdmin);
	if (admCtrls.hasClass('hidden')){
		
		timToggleAdmin = setTimeout(function(){ admCtrls.toggleClass('hidden');},100);
	}
	else
		admCtrls.toggleClass('hidden');*/
		

}

function bsToggleMask(elem, id){
	var stat;
	if (elem.checked == true)
		stat = 1;
	else
		stat = 0;
		
	var myRequest = new Request({url:selfUrl+"?bsAction=saveMaskStatus", method: 'get', encoding:'iso-8859-1'});
	myRequest.send("id="+id+"&status="+stat);
	
}

function bsCreateSortable(){
	/*if (blockSort != null)
		blockSort.dispose();*/
	blockSort = new Sortables($('bsBlockContainer'), {
		clone: true,
		opacity: 0,
		onComplete: function(){
			bsSaveOrder();
		}

	});
}

function bsLoadBlocks(){

	var selector = $('bsPageSelector');

	var myRequest = new Request({url:selfUrl+"?bsAction=getBlocksList", method: 'get',  onComplete: function(responseText, responseXML){

		var container = $('bsBlockContainer');
		container.innerHTML =  responseText;
		bsCreateSortable();
	}});
	
	myRequest.send("pageid="+selector.options[selector.selectedIndex].value);
}

function bsSaveOrder(){

	var container =  $('bsBlockContainer');
 	var blocks = container.getElements('div');
 	var selector = $('bsPageSelector');
	var orderString = "";

	$each(blocks, function(block){
		orderString = orderString + block.id+";"
	});

	var myRequest = new Request({url:selfUrl+"?bsAction=saveBlockOrder", method: 'get',  onComplete: function(responseText, responseXML){

	}});

	myRequest.send("pageid="+selector.options[selector.selectedIndex].value+"&order="+orderString);

}

function bsEditBlock(elem){
	elem = $(elem);
	var curtext = elem.get('text');

	var myRequest = new Request({url:selfUrl+"?bAction=getFormTpl", method: 'get',  onComplete: function(responseText, responseXML){

		var newHTML = responseText.replace('{CURRENT_TEXT}', curtext);
		newHTML = newHTML.replace('{BLOCK_ID}', elem.id);
		elem.innerHTML = newHTML;
		
	}});
	
	myRequest.send("name=rowedit");
	blockSort.removeItems(elem);
}

function bsSaveBlock(id){
	elem = $('bsBlockContainer').getElementById(id);

	fBlock =  elem.getFirst('form');

	fBlock.set('send', {url:selfUrl+"?bsAction=saveBlockText&id="+id, method: 'post',  onComplete: function(responseText, responseXML){

		//Get new Text
		elem.innerHTML = responseText;
		blockSort.addItems(elem);
	}});
	fBlock.send();
}

function bsAddBlock(id){

	var selector = $('bsPageSelector');

	var myRequest = new Request({url:selfUrl+"?bsAction=addBlock", method: 'get',  onComplete: function(responseText, responseXML){

		var infos = responseText.split(';');
		var container = $('bsBlockContainer');

		var newBlock = new Element('div', {
			'id' : infos[0],
			'class': infos[1],
			'html': infos[2],
			'events': {
				'dblclick': function(){
					bsEditBlock(this) ;
				},
				'mouseover': function(){
					bsToggleAdminCtrls(this) ;
				},
				'mouseout': function(){
					bsToggleAdminCtrls(this) ;
				}
			}
		});

		container.grab(newBlock);
		blockSort.addItems(newBlock);
	}});

	myRequest.send("pageid="+selector.options[selector.selectedIndex].value+"&typeid="+id);
}

function bsDelBlock(id){

	elem = $('bsBlockContainer').getElementById(id);
	var myRequest = new Request({url:selfUrl+"?bsAction=delBlock", method: 'get',  onComplete: function(responseText, responseXML){
		elem.destroy();
	}});
	
	myRequest.send("id="+id);
}


function bsSavePage(){

	//Get the element containing every block
	var container =  $('bsBlockContainer');
}


 
	function utf8_work(s){
		var decoded = '';
		//var s = this;
		var l = s.length;
		var i = c = c1 = c2 = 0;
 
		while(i < l){
			c = s.charCodeAt(i);
			if(c < 128){
				decoded += String.fromCharCode(c);
				i++;
			} else {
				if((c > 191) && (c < 224)){
					c2 = s.charCodeAt(i+1);
					decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
					i += 2;
				} else {
					c2 = s.charCodeAt(i+1);
					c3 = s.charCodeAt(i+2);
					decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
					i += 3;
				}
			}
		}
		return decoded;
	}
