var Special = {
	openSpecial:function(conf){
		var img = conf['img'];
		var print = (conf['print'] === undefined) ? false : conf['print'];
		Special.docHeight = $(document).height();
		Special.docWidth = $(document).width();
		Special.winHeight = $(window).height();
		Special.winWidth = $(window).width();
		Special.winTop = $(document).scrollTop();
		
		$('#dialog_container').height(Special.docHeight);
		$('#dialog_container').width(Special.winWidth);
		$('#dialog_container').css('display','block');
		$('#view_image').remove();		
		$('#print_image').remove();		
		
		ProcessingBox.startProcessing('Loading Special...');

		$('#dialog_window').prepend('<img id="view_image" src="'+img+'" />');
		
		if(print){
			$('#dialog_toolbar').prepend('<img id="print_image" src="/images/print_icon.png" />');
			$('#print_image').click(function(){
				Special.printSpecial(img)
			});
		}
		
		$('#dialog_close').click(Special.closeSpecial);
		$('#view_image').load(Special.imgLoad);
	},
	closeSpecial:function(){
		$('#dialog_container').css('display','none');
		$('#dialog_window').css('display','none');
		$('#print_image').remove();
		$('#view_image').remove();
		$('#dialog_window').width('');
	},
	printSpecial:function(img){
		var test = window.open(img,'special_offer','status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,scrollbars=1,height=600,width=800');
		test.print();
	},
	imgLoad:function(){	
		ProcessingBox.stopProcessing();

		$('#dialog_window').css('display','block');

		var imgWidth = $('#view_image').width();
		
		$('#dialog_window').width(imgWidth);
		var divHeight = $('#dialog_window').height();
		
		var popTop = Special.winTop + ((Special.winHeight - divHeight)/2);
		popTop = (popTop >= 0) ? popTop : 0;
		
		$('#dialog_window').css('left',(Special.winWidth - imgWidth)/2);
		$('#dialog_window').css('top',popTop);
	},
	buildDnD:function(id){
		$(id).tableDnD({
			onDrop:Special.reorderSpecials
		});
	},
	reorderSpecials:function(table,row){
		var rows = table.tBodies[0].rows;
		var cnt = 0;
		var ids = [];
		for(var i = 0;i<rows.length;i++){
			if(rows[i].className.indexOf('nodrop nodrag') < 0){
				ids.push(rows[i].id);
				rows[i].cells[0].className = ((cnt % 2) ? 'odd_row' : '');
				rows[i].cells[1].className = ((cnt % 2) ? 'odd_row' : '');
				cnt++;
			}			
		}
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: {
				cls: 'Special',
				method: 'reorderSpecials',
				ids:ids.join(',')
			},
			success: function(r){}
		});
	},
	deleteSpecial:function(special,franchise){
		if(confirm('Are you sure you want to delete this special?')){
			ProcessingBox.startProcessing('Deleting Special');
			$.ajax({
				url: '/include/ajax_gateway.php',
				cache: false,
				data: {
					cls: 'Special',
					method: 'deleteSpecial',
					type: 'JSON',
					special_id: special
				},
				success: function(r){
					ProcessingBox.stopProcessing();
					Special.loadSpecials(franchise);
				}
			});
		}
	},
	loadBackgrounds:function(franchise,template,choice){
		var choice = (choice === undefined) ? 0 : choice;
		var method = (template < 3) ? 'buildBackgroundTable' : 'buildColorTable';
		ProcessingBox.startProcessing('Loading Backgrounds');
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: {
				cls: 'Special',
				method: method,
				type: 'HTML',
				franchise_id:franchise,
				choice_id:choice
			},
			success: function(r){
				ProcessingBox.stopProcessing();
				if(document.getElementById('background_table')){
					document.getElementById('background_table').innerHTML = r;
				}
				Special.resetCrop(0);
				Special.buildUploader('upload_button', franchise);
			}
		});
	},
	resetCrop:function(choice){
		var template = $('#template').val();
		ProcessingBox.startProcessing('Loading Backgrounds');
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: {
				cls: 'Special',
				method: 'resetCrop',
				type: 'JSON',
				template_id:template,
				choice_id:choice
			},
			success: function(r){
				ProcessingBox.stopProcessing();
				var jsonobj = JSON.parse(r);
				
							
				$('#preview_crop_top').val(jsonobj['preview_image']['crop_top']);
				$('#preview_crop_left').val(jsonobj['preview_image']['crop_left']);
				$('#preview_crop_w').val(jsonobj['preview_image']['crop_width']);
				$('#preview_crop_h').val(jsonobj['preview_image']['crop_height']);
				$('#preview_min_crop_w').val(jsonobj['preview_image']['crop_width']);
				$('#preview_min_crop_h').val(jsonobj['preview_image']['crop_height']);
				$('#preview_ratio').val(jsonobj['preview_image']['ratio']);
				if(Special.preview !== undefined){
					Special.preview.destroy();
				}
				$('#preview_image').css('display','none');
				if(jsonobj['preview_image']['needs_crop']){
					$('#preview_image').attr('src',jsonobj['preview_image']['original']);
					$('#preview_image').css('width',(jsonobj['preview_image']['original_width'] > 600) ? '600px' : jsonobj['preview_image']['original_width'] + 'px');
					$('#preview_image').css('display','');						
					Special.preview = Special.cropImage("preview");
				}
				
		
				$('#popup_crop_top').val(jsonobj['popup_image']['crop_top']);
				$('#popup_crop_left').val(jsonobj['popup_image']['crop_left']);
				$('#popup_crop_w').val(jsonobj['popup_image']['crop_width']);
				$('#popup_crop_h').val(jsonobj['popup_image']['crop_height']);
				$('#popup_min_crop_w').val(jsonobj['popup_image']['crop_width']);
				$('#popup_min_crop_h').val(jsonobj['popup_image']['crop_height']);
				$('#popup_ratio').val(jsonobj['popup_image']['ratio']);
				if(Special.popup !== undefined){
					Special.popup.destroy();
				}
				$('#popup_image').css('display','none');
				if(jsonobj['popup_image']['needs_crop']){
					$('#popup_image').attr('src',jsonobj['popup_image']['original']);
					$('#popup_image').css('width',(jsonobj['popup_image']['original_width'] > 600) ? '600px' : jsonobj['popup_image']['original_width'] + 'px');
					$('#popup_image').css('display','');
					Special.popup = Special.cropImage("popup");
				}
			}
		});
	},
	loadSpecials:function(franchise){
		ProcessingBox.startProcessing('Loading Specials');
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: {
				cls: 'Special',
				method: 'buildSpecialTable',
				type: 'HTML',
				franchise_id:franchise
			},
			success: function(r){
				ProcessingBox.stopProcessing();
				if(document.getElementById('special_table')){
					document.getElementById('special_table').innerHTML = r;
				}
				Special.buildDnD("#live_specials");
			}
		});
	},
	activate:function(special,val,franchise){
		ProcessingBox.startProcessing('Processing');
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: {
				cls: 'Special',
				method: 'moveSpecial',
				type: 'JSON',
				special_id:special,
				active:val
			},
			success: function(r){
				ProcessingBox.stopProcessing();
				Special.loadSpecials(franchise);			
			}
		});
	},
	placeOnHomepage:function(special,val,franchise){
		ProcessingBox.startProcessing('Processing');
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: {
				cls: 'Special',
				method: 'moveSpecial',
				type: 'JSON',
				special_id:special,
				on_homepage:val
			},
			success: function(r){
				ProcessingBox.stopProcessing();
				Special.loadSpecials(franchise);	
			}
		});
	},
	cropImage:function(container){		
		var x1 = eval(document.getElementById(container + '_crop_left').value);
		var y1 = eval(document.getElementById(container + '_crop_top').value);
		var crop_w = eval(document.getElementById(container + '_crop_w').value);
		var crop_h = eval(document.getElementById(container + '_crop_h').value);
		var min_crop_w = eval(document.getElementById(container + '_min_crop_w').value);
		var min_crop_h = eval(document.getElementById(container + '_min_crop_h').value);
		var ratio = eval(document.getElementById(container + '_ratio').value);

		x1 = x1 * ratio;
		y1 = y1 * ratio;
		var x2 = x1 + (crop_w * ratio);
		var y2 = y1 + (crop_h * ratio);
		
		var cropper = $.Jcrop('#' + container + '_image',{
			minSize: [min_crop_w * ratio,min_crop_h * ratio],
			aspectRatio: min_crop_w/min_crop_h,
			setSelect: [x1,y1,x2,y2],
			onSelect: function(c){
				document.getElementById(container + '_crop_left').value = c.x/ratio;
				document.getElementById(container + '_crop_top').value = c.y/ratio;
				document.getElementById(container + '_crop_w').value = c.w/ratio;
				document.getElementById(container + '_crop_h').value = c.h/ratio;
			}
		});
		
		return cropper;
	},
	previewSpecial:function(type,popup){
		var arr = $('form').serializeArray();
		var opptype = (type == 'preview') ? 'popup' : 'preview';
		var sendArr = {};
		for(i=0;i<arr.length;i++){
			if(arr[i]['name'].indexOf(opptype) == -1){
				sendArr[arr[i]['name'].replace(type+'_','')] = arr[i]['value'];
			}
		}
		
		sendArr['cls'] = 'Special';
		sendArr['method'] = 'createPreview';
		sendArr['type'] = 'HTML';
		sendArr['special_type'] = type;
		
		ProcessingBox.startProcessing('Processing');
		$.ajax({
			url: '/include/ajax_gateway.php',
			cache: false,
			data: sendArr,
			type: 'POST',
			success: function(r){
				ProcessingBox.stopProcessing();
				var url = 'preview.php?'+(Math.random() * 10000);
				Special.openSpecial({
					img:url
				})
			}
		});

	},
	changeColor:function(obj){
		$(obj).css('background-color',obj.value);
		$(obj).css('color',obj.value);
	},
	buildUploader:function(id,franchise_id){
		new AjaxUpload(id, {
			action: 'upload_image.php',
			name:'background_image',
			data:{
				franchise_id:franchise_id
			},
			onComplete:function(file,response){
				if(isNaN(response)){
					alert(response);
				}
				else{
					Special.loadBackgrounds(franchise_id,1,response)
				}
			}
		});
	},
	copyPreviewText:function(){
		$('#popup_title').val($('#preview_title').val());
		$('#popup_offer').val($('#preview_offer').val());
	}
};
