/*
 * 
 * 	@ SiteBakery
 * 	version 1.0 DEV Build 0914
 * 	
 * 	(c) Copyright C. Lahme 2007
 * 	
 * 	File: core/SiteBakery.js
 * 	C-Flags: 
 * 	
/*--------------------------------------------------------------------------*/

var delaytime = 0;
var dur = 0.15;
var delayprestart = 0.35;
var upload = 1;
var files = new Array();
var tabs = new Array();

function addUploadAfter(obj) {
	
	var myElement = $(obj);
	var myChooser = myElement.parentNode;
	var myUpload = myChooser.parentNode;
	var uploader = myUpload.parentNode;
	
	var fileList = $('files');
	var myFile = $('option');
	// myFile.innerHTML 

	myFile.innerHTML = myElement.value.substring(myElement.value.lastIndexOf('\\')+1);
	
	fileList.appendChild(myFile);
	
	upload++;
	
	var newUpload = document.createElement('div');
	newUpload.setAttribute('id','upload_'+upload);
	newUpload.innerHTML = '<input type=\"File\" size=\"32\" name=\"image_upload[]\" onChange=\"addUploadAfter(this);\">';
	myChooser.appendChild(newUpload);
	myElement.toogle();

}

function dragbox(myid, myurl) {
	$(myid).hide();
	
	showRow(myid);
	
	return Droppables.add(myid, {
		onDrop: function(element){
			Effect.BlindUp(element);
			document.location = myurl + '&image_select=' + element.id;
		}
	});

}

function dragitem(myid) {
	$(myid).hide();
	
	showRow(myid);
	
	return new Draggable(myid,{ 
		snap: function(x,y,draggable) {
			function constrain(n, lower, upper) {
				if (n > upper) return upper;
				else if (n < lower) return lower;
				else return n;
			}
			
			element_dimensions = Element.getDimensions(draggable.element);
			parent_dimensions = Element.getDimensions(draggable.element.parentNode);
			return[
			constrain(x, 0, parent_dimensions.width - element_dimensions.width),
			y];
			},
		revert: true,
		ghosting: false,
		scroll: "content_area" });
}

function noDisplay(myid) {
	
	if( typeof myid == 'object' ) {
		
		for( var i = 0; i < myid.length; i++ ) {
			
			$(myid[i]).hide();
			
		}
	
	} else
		$(myid).hide();
		
}

function rotate_image(degrees, img_real, URL, imageURL ) {

	if( degrees > 0)
		URL += '&action=images_rotate_right&img[real]=' + img_real;
	else
		URL += '&action=images_rotate_left&img[real]=' + img_real;
	
	myDegrees += degrees;
	if(myDegrees >= 360)
		myDegrees -= 360;
	
	new Effect.Fade('preview', {duration: 1.5});
	
	new Ajax.Request(URL, {
		onComplete: function(transport) {
			if (200 != transport.status) 
				alert(transport.status);

			try {
				myEval = transport.responseText.evalJSON(true);
			} catch(e) {
				alert(e);
				return;
			}
						
			$('preview').src= imageURL + '&rotation=' + myDegrees;
			$('exif').innerHTML = '<textarea disabled="disabled">' + myEval.exif_string + '</textarea>';
			$('COMPUTED.Width').innerHTML = '<input type="text" value="' + myEval.exif.COMPUTED.Width + '" disabled="disabled">';
			$('COMPUTED.Height').innerHTML = '<input type="text" value="' + myEval.exif.COMPUTED.Height + '" disabled="disabled">';
			$('FILE.FileSize').innerHTML = '<input type="text" value="' + myEval.exif.FILE.FileSize + '" disabled="disabled">';

		}	
	});
	
	return false;
	
}
				
function showImage(obj) {
	
	new Effect.Appear(obj.id, {duration: 0.5});
	
}

function showRow(myid) {
	
	if(delaytime > 0) {
		delayed = delaytime - delayprestart;
	} else {
		delayed = 0;
	}
	new Effect.BlindDown(myid, {queue: myid, duration: dur, delay: delayed});
	new Effect.Appear(myid, {duration: dur/3*2, delay: delayed});
	delaytime = delaytime + dur;
	
}

function toggleDisplay(myid) {

	if($(myid).visible()) {
	
		new Effect.BlindUp(myid, { duration: 1.0, queue: 'front' });
		new Effect.Fade(myid);
		
	} else {
	
		new Effect.BlindDown(myid, {duration: 1.0, queue:'front'});
		new Effect.Appear(myid);	
		
	}
	
}

function toggleDivs(div1, div2) {
	
	$(div1).toggle();
	$(div2).toggle();
	return false;
	
}

function toggleRadio(type) {
	
	$(type).checked = true;
	return true;

}

function chooseImage(instance,realId,URL) {
	
	$(instance).value = realId;
	
	$(instance + '_image').src = URL;
	toggleDisplay('imageBrowser');
	
}

function tabRegister(tab) {
	
	$('container_'+tab).hide();
	//tabs.(tab) = true;
	
}

function tabSelect(tab) {
	
	if($('tab').value)
		$('container_'+$('tab').value).hide();
		
	$('container_'+tab).show();
	$('tab').value = tab;
	return false;
	
}

function configUpdate() {
			
	document.editor.action.value='config_save'; 
	document.editor.submit(); 
	return false;
	
}

function showPagePreview() {

	if(!$('pagePreview').visible()) {
		new Effect.Appear('pagePreview', {queue: 'front', duration: 1.0});
		new Effect.BlindDown('pagePreview',{duration: 1.0});
	}
	
}

function showPagePreviewFrame() {
	
	new Effect.Appear('pagePreviewFrame', {duration: 1.0});

}

function hidePagePreview() {

	if($('pagePreview').visible()) {
		new Effect.Fade('pagePreview', {queue: 'front', duration: 1.0});
		new Effect.BlindUp('pagePreview',{
			duration: 1.0, 
			afterFinish: function() {
				$('pagePreviewFrame').hide();} });
	}
	return false;
	
}