
jQuery(document).ready(function(){	
	initWidgets();
	sanitizeImages();
	performSSO();
});

function initWidgets() {
	jQuery('.datePicker').datepicker({
		changeMonth:true,
		changeYear:true,
		yearRange:'-100:+100',
		dateFormat:'yy-mm-dd'
	});
	jQuery('.timePicker').timepicker({
		convention:24,
		format:'{h}:{m}'
	});	
	jQuery('.tinyMCE').tinymce({
		script_url:'/scripts/tinymce/tiny_mce.js',
		theme:'advanced',
		plugins:'safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',
		theme_advanced_buttons1:'forecolor,backcolor,|,styleselect,formatselect,fontselect,fontsizeselect,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull',
		theme_advanced_buttons2:'cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,insertdate,inserttime',
		theme_advanced_buttons3:'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl',
		theme_advanced_buttons4:'insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,pagebreak,|,cleanup,help,code,preview,fullscreen',
		theme_advanced_toolbar_location:'top',
		theme_advanced_toolbar_align:'left',
		theme_advanced_statusbar_location:'bottom',
		theme_advanced_source_editor_height:'400',
		plugin_preview_height:'400',
		content_css:'/styles/style.css',
		height:'300',
		relative_urls:false,
		external_link_list_url:'lists/link_list.js',
		external_image_list_url:'lists/image_list.js',
		media_external_list_url:'lists/media_list.js'
	});
	jQuery('.fancyBox').fancybox({
		'overlayShow':false,
		'titlePosition':'inside',
		'transitionIn':'elastic',
		'transitionOut':'elastic'
	});
	jQuery('.calendarAgendaDay').fullCalendar({
		defaultView:'agendaDay',
		height:1200,
		header:{
		    left:'today',
		    center:'',
		    right:'prev,next'
		},
		editable:true,
		timeFormat:'HH:mm',
		slotMinutes:15,
		eventBackgroundColor:'#5BB48F !important',
		eventBorderColor:'#000000 !important',
		eventTextColor:'#FFFFFF !important',
		eventSources:[
  	        {
  	            url:'/index.php/calendar/getCalendarAjax/',
  	            type:'GET',
  	            dataType:'json'
  	        }
  	    ]
    });
	jQuery('.calendarBasicMonth').fullCalendar({
		defaultView:'month',
		aspectRatio:1.0,
		header:{
			left:'prev,next today',
			center:'title',
			right:'month,basicWeek,basicDay'
		},
		editable:true,
		timeFormat:'HH:mm',
		slotMinutes:15,
		eventBackgroundColor:'#5BB48F !important',
		eventBorderColor:'#000000 !important',
		eventTextColor:'#FFFFFF !important',
		eventSources:[
	        {
	            url:'/index.php/calendar/getCalendarAjax/',
	            type:'GET',
	            dataType:'json'
	        }
	    ]
    });
	jQuery('.tableSorter').tablesorter({
		sortList: [[0,0]]
	});
	jQuery(':input:visible:enabled:first:not(.datePicker,.timePicker)').focus();
	jQuery('.camApplet').show();
}

function sanitizeImages() {
	jQuery('img').not('.ignoreSanitization').removeAttr('width').removeAttr('height');
}

function performSSO() {
	jQuery('form#rcsso').submit();
}

function spawnDialog(url,title,width,height) {
    dialog = $('<div>');
    dialog.attr('id',"dynamicDialog");
    dialog.appendTo('body');
    dialog.dialog({
    	autoOpen:false,
    	modal:true,
    	title:title,
    	width:width,
    	maxWidth:width,
    	minWidth:width,
    	height:height,    	
    	resizable:true,
    	close:function(){    		
    		if (parseInt(jQuery('#dynamicIframe').attr('generation'))>1) {
    			refreshView();
    		}
    		else {
    			jQuery(this).dialog('destroy');
        		jQuery('#dynamicDialog').remove();
    		}
    	}
    });
    dialog.dialog('open');
    iframe = $('<iframe>');
    iframe.attr('id','dynamicIframe');
    iframe.attr('src',url);
    iframe.attr('frameborder','0');
    iframe.attr('scrolling','no');
    iframe.attr('width',width);
    iframe.attr('height',height);
    iframe.attr('generation',0);
    iframe.appendTo(dialog);
    iframe.load(function(){
    	jQuery(this).attr('generation',parseInt(jQuery(this).attr('generation'))+1);
    	if(jQuery(this).contents().find('body').attr('id')=='login'){
    		refreshView();
    	}
    });
}

function spawnConfirmation(data,title,width,height,text,confirm) {
	confirmation = $('<div>');
	confirmation.attr('id',"dynamicConfirmation");
	confirmation.attr('data',data);
	confirmation.html('<br/><br/>'+text+'<br/><br/>');
	confirmation.appendTo('body');
	confirmation.dialog({
    	autoOpen:false,
    	modal:true,
    	title:title,
    	width:width,
    	height:height,
    	resizable:false,
    	buttons:{Yes:confirm,No:function(){jQuery(this).dialog('close');}},
    	close:function(){
    		jQuery(this).dialog('destroy');
        	jQuery('#dynamicConfirmation').remove();
    	}
    });
	confirmation.dialog('open');
}

function spawnNotification(title,text,callback) {
    notification = $('<div>');
    notification.attr('id',"dynamicNotification");
    notification.html('<br/><br/>'+text+'<br/><br/>');
    notification.appendTo('body');
    notification.dialog({
    	autoOpen:false,
    	modal:true,
    	title:title,
    	resizable:false,
    	buttons:{
    		OK:function(){
    			jQuery(this).dialog('close');
    			if(callback!=null){
    				eval(callback);
    			}
    		}
    	},
    	close:function(){
    		jQuery(this).dialog('destroy');
        	jQuery('#dynamicNotification').remove();
    	}
    });
    notification.dialog('open');
}

function spawnInformation(title,width,height,text,callback) {
    notification = $('<div>');
    notification.attr('id',"dynamicInformation");
    notification.html('<br/>'+text+'<br/>');
    notification.appendTo('body');
    notification.dialog({
    	autoOpen:false,
    	modal:true,
    	title:title,
    	width:width,
    	height:height,
    	resizable:true,
    	close:function(){
    		jQuery(this).dialog('destroy');
        	jQuery('#dynamicInformation').remove();
    	}
    });
    notification.dialog('open');
}

function spawnWindow(url,name) {
	open(url,name);
}

function performConfirmDelete() {
	jQuery(this).dialog('destroy');
	jQuery('#dynamicConfirmation').remove();
	jQuery.ajax({
		url:jQuery(this).attr('data'),
		type:'POST',
		dataType:'json',
		success:function(payload){
			if(payload.status=='success'){
				spawnNotification(payload.title,payload.message,'refreshView();');
			}
			else{
				spawnNotification(payload.title,payload.message,null);
			}
		},
		error:function(){
			spawnNotification('Error','Unknown error.',null);
		}
	});
}

function changeCamSource(id,obj) {
   jQuery('#cam_'+id+'_image').hide();
   jQuery('#cam_'+id+'_applet').hide();   
   jQuery('#cam_'+id+'_'+jQuery(obj).val()).show();
}

function changeCamSize(id,obj) {
   var reqDims = jQuery(obj).val().split("x");
   jQuery('#cam_'+id).css('min-width', reqDims[0] + 'px');
   jQuery('#cam_'+id).css('min-height', (parseInt(reqDims[1]) + 60) + 'px');
   jQuery('#cam_'+id+'_image_obj').attr('width', reqDims[0]);
   jQuery('#cam_'+id+'_image_obj').attr('height', reqDims[1]);
   jQuery('#cam_'+id+'_applet_obj').attr('width', reqDims[0]);
   jQuery('#cam_'+id+'_applet_obj').attr('height', reqDims[1]);
   jQuery('#cam_'+id+'_image_obj_ie').attr('width', reqDims[0]);
   jQuery('#cam_'+id+'_image_obj_ie').attr('height', reqDims[1]);
   jQuery('#cam_'+id+'_applet_obj_ie').attr('width', reqDims[0]);
   jQuery('#cam_'+id+'_applet_obj_ie').attr('height', reqDims[1]);      
}

function resetCamImage(id) {
   jQuery('#cam_'+id+'_image_obj').attr('src', jQuery('#cam_'+id+'_image_obj').attr('src') + '&ts=' + (new Date()).getTime());
}

function redirectTo(url) {
	location.href=url;
}

function refreshView() {
	location.reload();
}

