function confirmClick(e)
{
    if (!confirm('Are you sure?')) {
        Event.stop(e);
        return false;
    }
    
    return true;
}

var DG = {
	user: null,
    getLogin: function() {
        new Ajax.Request('/js.php?get=user', { onSuccess: DG.processUser});
    },
    processUser: function(xhr) {
        try {
            var user = eval("(" + xhr.responseText + ")");
            DG.user = user;
            
        } catch (e) {
        }
        DG.initUser();
    },
	showLoginBox: function(e) {
		if (e) {
			Event.stop(e);
		}
		if (!$('login_form')) {
			var referrer = window.location.pathname;
			new Ajax.Updater($('dialog_box'), '/login.php?ajax_form&referrer=' + escape(referrer), { onComplete: function() { DG.showLoginBox();} });
			return false;
		}
		
		$('login_cancel').onclick = DG.hideDialogBox;
		
		DG.showDialogBox();
		return false;
	},
	showDialogBox: function() {
		scrollTo(0,0);
		DG.shade();
		
		var width = $('dialog_box').getDimensions().width;
		var screenX = document.viewport.getWidth();
		
		var left = Math.floor( (screenX / 2) - (width/2));
		
		$('dialog_box').style.left = left + 'px';
		$('dialog_box').style.display='block';
	},
	hideDialogBox: function() {
		DG.unshade();
		$('dialog_box').innerHTML = '';
		$('dialog_box').style.display='none';
	},
	unshade: function() {
		if (!$('dialog_shade')) {
			return;
		}
		$('dialog_shade').style.display='none';
	},
	shade: function() {
		var shade = $('dialog_shade');
		if (!shade) {
			var shade = document.createElement('div');
			shade.id='dialog_shade';
			$('body').appendChild(shade);
			shade = $('dialog_shade');
		}

		shade.style.width=document.viewport.getWidth() + 'px';
		shade.style.height=document.viewport.getHeight() + 'px';
		shade.style.display='block';
	},
	showEditTextDialog: function(e) {
		if (e) {
			Event.stop(e);
		}
		if (!$('edit_text_form')) {
			new Ajax.Updater($('dialog_box'), '/js.php?get=edit_text_form&text_id=' +this.text.id, { onComplete: function() { DG.showEditTextDialog() } });
			return false;
		}
		
		$('edit_cancel').onclick = DG.hideDialogBox;
		$('edit_text_form').onsubmit = DG.submitText;
		DG.showDialogBox();
		return false;
	},
	showUploadDialog: function(e) {
		if (e) {
			Event.stop(e);
		}
		if (!$('upload_image_form')) {
			new Ajax.Updater($('dialog_box'), '/js.php?get=upload_image_form&image_id=' +this.image.id, { onComplete: function() { DG.showUploadDialog() } });
			return false;
		}
		
		$('upload_cancel').onclick = DG.hideDialogBox;
		$('upload_image_form').onsubmit = DG.submitUploadImage;
		DG.showDialogBox();
		return false;
	},
	submitText: function(e)
	{
		var text_id = $('text_id').getValue();
		var opts = {
			'post':'text',
			'text_id': text_id,
			'text': $('edit_text_text').getValue()
		}
		
		new Ajax.Updater(text_id, '/js.php', { parameters: opts, onComplete: function() { DG.hideDialogBox(); }  });
		Event.stop(e);
		return false;
	},
	submitUploadImage: function() {
		if ($('uploadTarget')) {
			$('uploadTarget').remove();
		}
		var iframe = document.createElement('iframe');
		iframe.id='uploadTarget';
		iframe.name='uploadTarget';
		iframe.onload=DG.processUploadImage;
		iframe.style.display = 'none';
		$('dialog_box').appendChild(iframe);
		if(self.frames['uploadTarget'].name != 'uploadTarget') { 
			/* *** IMPORTANT: This is a BUG FIX for Internet Explorer *** */ 
			self.frames['uploadTarget'].name = 'uploadTarget';
		}
		
		$('upload_image_form').setAttribute('target', 'uploadTarget');
		$('upload_result').innerHTML = 'Uploading...';
		
		return true;
	},
	
	processUploadImage: function() {
	
		var iframe = $('uploadTarget');
		var doc, body;
	
		if (iframe.contentDocument) {
			// For NS6
			doc = iframe.contentDocument; 
		} else if (iframe.contentWindow) {
			// For IE5.5 and IE6
			doc = iframe.contentWindow.document;
		} else if (iframe.document) {
			// For IE5
			doc = iframe.document;
		} else {
			$('upload_result').innerHTML = 'Unable to view result. Please try again';
			return true;
		}

		body = doc.body;
		if (body.innerHTML) {
			try {
				var result = eval("(" + body.innerHTML + ")");
			} catch(e) {
				alert("Error: " + e);
			}
			
            if (result.error_message) {
            	$('upload_result').innerHTML = result.error_message;
            } else {
            	if ($(result.image_id)) {
            		var now = new Date();
            		$(result.image_id).src='/images/upload/' + result.image_id + '.jpg?ts=' + now.getTime();
            		if ($(result.image_id+'_img_href')) {
						$(result.image_id+'_img_href').href = result.href;
            		}
            		if ($(result.image_id+'_caption_href')) {
						$(result.image_id+'_caption_href').href = result.href;
            		}
            		if ($(result.image_id+'_caption')) {
						$(result.image_id+'_caption').innerHTML = result.caption;
            		}
            	} else {
            		alert("Can't find " + result.image_id);
            	}
				DG.hideDialogBox();		
            }
		} else {
		}
	},
	
	showArtPlacementMain: function(e) {
		var re;
		if (re = this.id.match(/portfolio_(\d+)/)) {
			$('portfolio_main').src = '/portfolio/' + re[1] + '_main.jpg';
		}
	},

	processWord: function(req)
	{
		var data = eval("(" + req.responseText + ")");
		$('dg_word').innerHTML = data['word'];
		$('dg_word_code').value = data['word_code'];
	},
	hasPriv: function(priv)
	{
		if (DG.user && DG.user.privs) {
			var ret = false;
			DG.user.privs.each(function(_priv) {
				if (_priv.priv==priv) {
					ret = true;
				}
			});
			return ret;
		} else {
		 	return false;
		}
		
	},
	
	processSectionItems:function(xhr)
	{
        try {
            var items = eval("(" + xhr.responseText + ")");            
        } catch (e) {
        	alert("Error getting items: " + e);
        	return;
        }

		$('item_id').options.length = 1;
		
		for(var i=0; i<items.length; i++) {
			var sel = (items[i].item_id == $('_item_id').getValue());
			$('item_id').options[$('item_id').options.length] = new Option(items[i].title + ' (' + items[i].item_id +')', items[i].item_id, false, sel);
		}
	},
	
	updateItemsForSection: function() {
		var section_id = $('section_id').getValue();
		if (section_id) {
			var url = '/js.php?get=section_items&section_id=' + section_id;
			new Ajax.Request(url, {onSuccess: DG.processSectionItems});
		}
	},
	
	initAdminForm: function() {
		$('section_id').observe('change', DG.updateItemsForSection);
		DG.updateItemsForSection();
	},
	
	initUser: function() {
	
		if (DG.user) {
			if (DG.hasPriv('image_admin')) {
				$$('.upload_image').each(function(image) {
					if (image.id) {
						var upload_div = document.createElement('div');
						upload_div.id = image.id + '_upload';
						upload_div.image = image;
						upload_div.className='upload_button';
						upload_div.onclick = DG.showUploadDialog;
						upload_div.style.top = image.positionedOffset()[1] + 'px';
						upload_div.style.left = image.positionedOffset()[0] + 'px';
						upload_div.innerHTML = 'replace';
						image.parentNode.appendChild(upload_div);
					}
				});
		
				$$('.upload_text').each(function(text) {
					if (text.id) {
						var upload_div = document.createElement('div');
						upload_div.id = text.id + '_text_upload';
						upload_div.text = text;
						upload_div.className='upload_button';
						upload_div.onclick = DG.showEditTextDialog;
						upload_div.style.top = text.positionedOffset()[1] + 'px';
						upload_div.innerHTML = 'edit';
						text.parentNode.appendChild(upload_div);
						upload_div.style.left = (text.positionedOffset()[0] + text.getWidth() - upload_div.getWidth()) + 'px';
					}
				});
			}
		}
	},
	init : function() {
	    $$('.artplacement_item').invoke('observe', 'click',  DG.showArtPlacementMain);
	    $$('.confirm').invoke('observe', 'click', confirmClick);

		if ($('dg_word')) {
			new Ajax.Request('/dg_captcha.php', { onSuccess: DG.processWord });
		}
		
		if ($('patronmail_link')) {
			$('patronmail_link').onclick = function() {
				window.open(this.href, 'patronmail_link', 'width=630,height=600,scrollbars=yes');
				return false;
			}
		}
		
		$$('.sortable').each(function(list) {
			var id = $('sortable_id') ? $('sortable_id').value : '';
			Sortable.create(list, {
				handle: 'handle',
				onUpdate: function(list) {
				 new Ajax.Request("/js.php", {
						method: "post",
						parameters: { post:list.id, id: id,data: Sortable.serialize(list) }
						});					
				}
				
			});
		});
		
		if ($('wholesale_admin_form') || $('trade_admin_form')) {
			DG.initAdminForm();
		}

		DG.hideDialogBox();
		$$('.login_link').invoke('observe', 'click', DG.showLoginBox);
		DG.getLogin();
	}
}

window.onload = DG.init;