document.observe('dom:loaded', init);

function init(){
	if($('body_content'))
		window.notification = new Notification($('body_content').down('div'),'18');
	if($('editing_textarea')){
		new TextArea('editing_textarea',$('textarea_output'));
		var pe = new PeriodicalExecuter(function(pe){
			if($$('.accordion')[0]){
				$$('.accordion').each(function(e,i){if(!e.hasClassName('dynamic_created')){window['accordion_'+i]=new Accordion(e);e.addClassName('dynamic_created').writeAttribute('acc_num',i);window['accordion_'+i].toggleOthers=true}});
			}
		},2);
	}
	if($('title_box')){
		var pe = new PeriodicalExecuter(function(pe){
			editTitle();
		}, .5);
	}
	if($('categories_box')){
		window.categoriesBox = new TagCompleter('categories_box', 'categories-auto',{fetchFile:'/index.php?ajax_request=get_categories', results:5});       
		new Ajax.Request(SITE_ROOT+'ajax', {
			parameters:{
				ajax_request:'get_categories'
				},
			onSuccess: function(transport) {
				transport.responseText.evalJSON(true).each(function(t){categoriesBox.autoFeed(t)});
			}
		});
	}
	if($('edit_form')){
		$('edit_form').observe('submit', saveForm);
	}
	if($$('.delete_button')){
		$$('.delete_button').map(function(b){b.observe('mousedown', deleteItem);});
	}
	if($('body_content')){
		//window.notification = new Notification($('body_content').down('div'),'18');
	}
	if($('admin_list')){
		var nText = $('admin_list').readAttribute('notification');
		if(nText.length > 1){
			window.notification.setMode($('admin_list').readAttribute('error'));
			window.notification.show(nText,true);
		}
	}
	if($('edit_static')){
		var typeSelect = $$('[name="type"]')[0];
		window.contentTypes = typeSelect.select('option').collect(function(v){return v.readAttribute('value');});
		swapPageContentEditor($F(typeSelect));
		typeSelect.observe('change',typeChanged);
		
		new Ajax.Autocompleter("file_autocompleter","file_choices",SITE_ROOT+"ajax",{
			parameters:'ajax_request=file_autocomplete',
			minChars:0,
			indicator:"file_indicator",
			afterUpdateElement:updateFileName
		});
		new Ajax.Autocompleter("template_autocompleter","template_choices",SITE_ROOT+"ajax",{
			parameters:'ajax_request=template_autocomplete',
			minChars:0,
			indicator:"template_indicator",
			afterUpdateElement:updateFileName
		});
		new Ajax.Autocompleter("path_autocompleter","path_choices",SITE_ROOT+"ajax",{
			parameters:'ajax_request=path_autocomplete',
			minChars:0,
			indicator:"path_indicator",
			afterUpdateElement:updateFileName
		});
		new Ajax.Autocompleter("image_autocompleter","image_choices",SITE_ROOT+"ajax",{
			parameters:'ajax_request=image_autocomplete',
			minChars:0,
			indicator:"file_indicator",
			afterUpdateElement:updateFileName
		});
	}
	if($('image_dialog_box')){
		$('image_dialog_box').select('.choice').each(function(c){c.observe('mousedown',show_image_panel)});
		init_admin_uploader();
		$('image_autocompleter').observe('keydown',function(e){if(e.keyCode==13){image_selected();}});
	}
	if($('admin_filter')){
		$('admin_filter').observe('mousedown', start_filter);
	}
}
function start_filter(e){
	$('admin_filter').stopObserving();
	$('admin_filter').setValue('').setStyle('color:#666;');
	$('admin_filter').observe('keyup', filter_list);
	$('admin_filter').observe('blur', filter_finished);
}
function filter_finished(e){
	if($F(e.findElement()) == ''){
		e.findElement().setValue('filter').setStyle('color:#cfcfcf;');
	}
	filter_list(e);
	$('admin_filter').observe('mousedown', start_filter);
}
function filter_list(e){
	var f = $F(e.findElement());
	var matches = {'f':f,'m':[]};
	var t = $('admin_list').childElements().each(function(a){
		if((a.down('li._title').innerHTML).match(this.f)||a.down('li._title').innerHTML=='title'){
			a.show();
		} else if(this.f!='filter'){
			a.hide();
		} else {
			a.show();
		}
	},matches);
}
function editTitle(){
	var title = $F($('title_box'));
	$('title_output').update(new Element('h1').update(title));
}
function saveForm(e){
	if(window.categoriesBox){
		window.categoriesBox.update();
		var categories = $F('categories_box');
		$('edit_form').insert(new Element('input',{'type':'hidden','value':categories}));
	}
}
function deleteItem(e){
	var dArr = e.findElement().readAttribute('name').split('_');
	if(dArr[1]=='promo'){
		dArr[1]='promo_codes';
		dArr[2]=dArr[3];
	}
	new Ajax.Request(SITE_ROOT+'ajax', {
		parameters:{
			'ajax_request':'delete',
			'type':dArr[1],
			'id':dArr[2]
		},
		onSuccess: function(t){
			e.findElement().up('li').up('li').remove();
			window.notification.setMode(false);
			window.notification.show('Item Deleted!', true, 2);
		}
	});
}

/// page editing methods
function updateFileName(text,el){
	
}
function typeChanged(e){
	swapPageContentEditor($F(e.findElement('select')));
}
function swapPageContentEditor(type){
	window.contentTypes.collect(function(t){return $('edit_'+t).hide()});
	if(type=='file'||type=='static'){
		$('folder_chooser').show();
	} else {
		$('folder_chooser').hide();
	}
	$('edit_'+type).show();
}

//// image uploading methods :
function init_admin_uploader(){
	window.uploader = new qq.FileUploader({
	    element: $('file-uploader'),
	    // url of the server-side upload script, should be on the same domain
	   	action: SITE_ROOT+'index.php',
	    // additional data to send, name-value pairs
	    params: {
	    	'ajax_request':'upload_file',
	    	'subfolder':''
	    },
	    // ex. ['jpg', 'jpeg', 'png', 'gif'] or []
	    allowedExtensions: [],        
	    // size limit in bytes, 0 - no limit
	    // this option isn't supported in all browsers
	    sizeLimit: 0,
	    onSubmit: function(id, fileName){},
	    onComplete: function(id, fileName, responseJSON){
	    	this.image_finished(responseJSON.name, fileName.sub(/\.\w+$/,''));
	    }.bind(this),
	    messages: {
	        // error messages, see fileuploader.js for details            
	    },
	    showMessage: function(message){
	        window.notification.setMode(false);
	        window.notification.show(message, true, 2);
	    }
	});
}
function show_image_panel(e){
	var v = e.findElement('.choice').nextSiblings()[0];
	v.up('div').up('div').select('.choice').each(function(c){c.hide();});
	v.show();
	v.setStyle('width:400px');
}
function reset_uploader(){
	$('image_dialog_box').select('.choice').each(function(c){c.show()});
	$('image_dialog_box').select('.value').each(function(v){v.hide()});
	uploader._handler.cancelAll();
}
function upload_begin(){
	beginAsyncUpload($('image_uploader'), $('image_uploader').readAttribute('sid'), function(r){
		var image = r.responseText.evalJSON()[0];
		image.path = SITE_ROOT+image.path;
		$('image_uploader').fire('dialog:finished',image);
	});
}
function image_selected(){
	image_finished($F('image_autocompleter'));
	//var n = im.split('/').pop();
	//var image = {'name':n,'path':im};
	//$('image_uploader').fire('dialog:finished',image);
}
function image_finished(n,alt){
	if(!alt){
		alt=n;
	}
	$('image_dialog_box').fire('dialog:finished',{'name':alt,'path':SITE_ROOT+UPLOAD_DIR+'/'+n});
}
