/********* BENCHMARK ************/
function microtime (get_as_float) {
    var now = new Date().getTime() / 1000;
    var s = parseInt(now, 10); 
    return (get_as_float) ? now : (Math.round((now - s) * 1000) / 1000) + ' ' + s;
}

function benchmark(name) {
	// console.log(name);
	if (benchmark_array == false) {
		benchmark_start = microtime(true);
		benchmark_last = benchmark_start;
	}
	
	current = microtime(true);
	
	benchmark_array.push(""+name+":"+(current-benchmark_last)+"\n");
	
	benchmark_last = current;
}

var benchmark_array = Array();
var benchmark_start = 0;
var benchmark_last = 0;

function isset () {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: FremyCompany
    // +   improved by: Onno Marsman
    // +   improved by: Rafał Kukawski
    // *     example 1: isset( undefined, true);
    // *     returns 1: false
    // *     example 2: isset( 'Kevin van Zonneveld' );
    // *     returns 2: true
    
    var a = arguments, l = a.length, i = 0, undef;
    
    if (l === 0) {
        throw new Error('Empty isset'); 
    }
    
    while (i !== l) {
        if (a[i] === undef || a[i] === null) {
            return false; 
        }
        i++; 
    }
    return true;
}

benchmark('scripts start');

window.addEvent('domready', function() {
	benchmark('dom_ready');

	try {
		if(messages) {
			if(messages != 'no messages') {
				make_messages(messages);
			}
		}
	} catch (e) {
		// Do nothing
	}  

	if($$('.mr_tabs').length) {
		mr_tabs_init($$('.mr_tabs li'));
	}
	if ($('calendar')) {
		unit_dragables();
	}
	
	if($('main_nic_panel')) {
		make_rich_text_editable('main');
	}
	
	if($('tasks')) {
		init_tasks();
	} else {
		if($$('textarea') != '') {
			resize_textareas($$('textarea'));
			if($$('.nicEdit-main')) {
				make_onloaded_nicedit($$('.nicEdit-main'));
			}
			if($$('.revision_control')) {
				make_revision_controls($$('.revision_control'));
			}		
		}
	}

	if($('toolkit_tab')) {
		make_toolkit();
	}
	
	if($('attachments_tab')) {
		make_files();
	}
	
	if($('selected_standards_tab')) {
		boxable($('selected_standards_tab'));
	}
	
	if($('help_tab')) {
		boxable($('help_tab'));
	}
	
	if($$('.tipz')) {
		make_tool_tips($$('.tipz'));
	}
	
	if($('overlay')) {
		make_overlay_closeable($('overlay'));
	} else {
		make_overlay();
		//make_overlay_closeable($('overlay'));
	}
	
	if($$('.attachment_info_link')) {
		make_boxable($$('.attachment_info_link'));
	}
	
	if($('instructions_toggle')) {
		//make_instructions_toggleable();
	}
	
	if($('tutorial_toggle')) {
		make_tutorial_toggleable();
	}
	
	if($('attachments_toggle')) {
		make_attachments_toggleable();
	}

	if($('overlay')) {
		make_overlay_closeable($('overlay'));
		close_overlay();
	}
	
	if($$('ol.tutorial')) {
		make_tutorial($$('ol.tutorial'));
	}
	
});

function make_tutorial(tutorial_array) {
	tutorial_array.each(function(el) {
		
		var next_tutorial = new Element('div', {
			'class': 'next_tutorial',
			'html': 'next'
		});
		
		var previous_tutorial = new Element('div', {
			'class': 'previous_tutorial',
			'html': 'previous'
		});
		
		el.getParent();
		
		
		previous_tutorial.inject(el.getParent(), 'top');
		next_tutorial.inject(el.getParent(), 'top');

		el.getElements('li').set('class','closed_tutorial_li');
		el.getFirst('li').set('class','open_tutorial_li');
		
		next_tutorial.addEvent('click', function(e) {
			
			
			
			open_tutorial_li = el.getElement('.open_tutorial_li');
			next_tutorial_li = open_tutorial_li.getNext('li');
			
			if(next_tutorial_li) {
				
				previous_tutorial.setStyle('background','url(/imgs/icons/arrow_left.png) no-repeat 3px 3px #77a44a');
				
				open_tutorial_li.set('class','closed_tutorial_li');
				next_tutorial_li.set('class','open_tutorial_li');
				double_next_tutorial_li = next_tutorial_li.getNext('li');
				if(double_next_tutorial_li) {
					
				} else {
					next_tutorial.setStyle('background','url(/imgs/icons/arrow_right_disabled.png) no-repeat 35px 3px #a7a7a7');
				}
			} else {
				
			}
		});
		previous_tutorial.addEvent('click', function(e) {
			
			
			
			open_tutorial_li = el.getElement('.open_tutorial_li');
			previous_tutorial_li = open_tutorial_li.getPrevious('li');
			
			if(previous_tutorial_li) {
				
				next_tutorial.setStyle('background','url(/imgs/icons/arrow_right.png) no-repeat 35px 3px #77a44a');
				
				open_tutorial_li.set('class','closed_tutorial_li');
				previous_tutorial_li.set('class','open_tutorial_li');
				double_previous_tutorial_li = previous_tutorial_li.getNext('li');
				if(double_previous_tutorial_li) {
					
				} else {
					previous_tutorial.setStyle('background','url(/imgs/icons/arrow_left_disabled.png) no-repeat 3px 3px #a7a7a7');
				}
			} else {
				
			}
		});
	});
}

function keyPressed(e) {
	var evt = Event(e);
	evt.stop();
	// console.log('hello');
}

function get_revision(fieldName, domainId, unitId, taskId, direction, current_revision_timestamp, first_revision_timestamp, last_revision_timestamp) {
	req = new Request({
		method: 'post',
		data: 'field_name='+fieldName+'&unit_id='+unitId+'&direction='+direction+'&task_id='+taskId+'&first_revision_timestamp='+first_revision_timestamp+'&last_revision_timestamp='+last_revision_timestamp+'&current_revision_timestamp='+current_revision_timestamp+'&domain_id='+domainId,
		url: '/ajax/get_revision/',
		onSuccess: function(response) {
			response_array = JSON.decode(response);
			if(taskId != '') {
				textarea_revisions = $(fieldName+'_'+taskId+'_textarea_revisions');
				$(fieldName+'_'+taskId+'_nicEdit').set('html',response_array['revision_value']);
			} else {
				textarea_revisions = $(fieldName+'_'+domainId+'_textarea_revisions');
				$(fieldName+'['+domainId+']_nicEdit').set('html',response_array['revision_value']);
			}

			textarea_revisions.set('current_revision_timestamp', response_array['revision_timestamp']);
			
			textarea_revisions.getElement('.revision_timestamp').set('html', response_array['revision_datetime']);
			textarea_revisions.getElement('.revision_user').set('html', response_array['user_name']);
			
			current_pos = textarea_revisions.getElement('.revision_current_pos').get('html');
			revision_count = textarea_revisions.getElement('.revision_count').get('html');
			
			if(direction == 'next') {
				new_pos = parseInt(current_pos)+1;
			} else {
				new_pos = parseInt(current_pos)-1;
			}
			
			textarea_revisions.getElement('.revision_current_pos').set('html',new_pos);
			
			if(new_pos == 1) {
				textarea_revisions.getElement('.previous').setStyle('background', 'url(/imgs/icons/arrow_left_disabled.png) no-repeat');
				textarea_revisions.getElement('.previous').setStyle('cursor', 'default');
			}
			
			if(new_pos == revision_count) {
				textarea_revisions.getElement('.next').setStyle('background', 'url(/imgs/icons/arrow_right_disabled.png) no-repeat');
				textarea_revisions.getElement('.next').setStyle('cursor', 'default');
			}
			
		}
	}).send();
	
}

function make_revision_controls(revision_control_array) {
	
	revision_control_array.each(function(el) {
		el.addEvent('click', function(e) {
			textarea_revisions = el.getParent().getParent();
			field_name = textarea_revisions.get('field_name');

			current_revision_timestamp = textarea_revisions.get('current_revision_timestamp');
			last_revision_timestamp = textarea_revisions.get('last_revision_timestamp');
			first_revision_timestamp = textarea_revisions.get('first_revision_timestamp');

			if(textarea_revisions.get('task_id')) {
				task_id = textarea_revisions.get('task_id');
			} else {
				task_id = '';
			}
			
			if(textarea_revisions.get('domain_id')) {
				domain_id = textarea_revisions.get('domain_id');
			} else {
				domain_id = '';
			}
			
			// console.log(domain_id);
			
			if(el.get('class') == 'revision_control next') {
				direction = 'next';
				if(current_revision_timestamp != last_revision_timestamp) {
					get_revision(field_name, domain_id, itemID, task_id, direction, current_revision_timestamp, first_revision_timestamp, last_revision_timestamp);
				} else {
					// console.log('dont do something');
				}
				textarea_revisions.getElement('.previous').setStyle('background', 'url(/imgs/icons/arrow_left.png) no-repeat');
				textarea_revisions.getElement('.previous').setStyle('cursor', 'pointer');
			} else {
				direction = 'previous';
				if(current_revision_timestamp != first_revision_timestamp) {
					get_revision(field_name, domain_id, itemID, task_id, direction, current_revision_timestamp, first_revision_timestamp, last_revision_timestamp);

				} else {
					// console.log('dont do something');
				}
				textarea_revisions.getElement('.next').setStyle('background', 'url(/imgs/icons/arrow_right.png) no-repeat');
				textarea_revisions.getElement('.next').setStyle('cursor', 'pointer');
			}
		});
	});
}

var timeout_guide = false;

function timedMsgGuide(html, task_id) {
	timeout_guide = setTimeout( function() { get_guide(html, task_id); html = task_id = null } ,1000); // Null setting to stop memory leak
}

var timeout_revision = Array();

function timedMsgRevision(field_name, itemID, field_value, task_id, domain_id, timeout) {
	if(task_id != '') {
		timeout_revision_key = field_name+'_'+task_id+'_timeout_revision';
	} else {
		timeout_revision_key = field_name+'_'+domain_id+'_timeout_revision';
	}
	
	timeout_revision[timeout_revision_key] = setTimeout( function(){add_revision(field_name, itemID, field_value, task_id, domain_id); field_name = itemID = field_value = task_id = domain_id = null } , timeout);
	// Set all variables to null to stop memory leak
}


function make_onloaded_nicedit(editble_area_array) {
	editble_area_array.each(function(el) {
		
		if(el.getParent().getParent().hasClass('task_content') == true) {
			html = el.get('html');
			task_id = el.getParent().getParent().get('task_id');
			// console.log(task_id);
			get_guide(html, task_id);
			el.addEvent('keyup', function(e){
				clearTimeout(timeout_guide);
				html = el.get('html');								  
			  	timedMsgGuide(html, task_id);
			});
		}
		
		el.addEvent('keyup', function(e){
			field_id = el.getParent().getParent().getElement('textarea').get('id');

			if(field_id.test("task")) {
				field_id_array = field_id.split("_");
				task_id = field_id_array.getLast();
				field_name_array = field_id.split('_'+task_id);
				field_name = field_name_array[0];
				domain_id = '';
			} else {
				field_id_array = field_id.split("[");
				domain_id_array = field_id_array[1].split("]");
				domain_id = domain_id_array[0];
				field_name = field_id_array[0];
				task_id = '';
			}
			
			field_value = el.get('html');
					
			revise(field_name, itemID, field_value, task_id, domain_id, 2500);
		});
	});
}

function add_editor_instance(textarea_id) {
	myNicEditor = nicEditors.editors[0];
	myNicEditor.addInstance(textarea_id);
};

function revise(field_name, itemID, field_value, task_id, domain_id, timeout) {
	
	if(task_id != '') {
		timeout_revision_key = field_name+'_'+task_id+'_timeout_revision';
		update_glimpse(field_value, task_id);
	} else {
		timeout_revision_key = field_name+'_'+domain_id+'_timeout_revision';
	}
	
	
	// console.log(timeout_revision_key);
	
	clearTimeout(timeout_revision[timeout_revision_key]);
	timedMsgRevision(field_name, itemID, field_value, task_id, domain_id, timeout);
}

function add_revision(fieldName, unitId, revisionValue, taskId, domainId) {

	revisionValue = revisionValue.tidy();
	
	revisionValue = revisionValue.stripTags('img');
	revisionValue = revisionValue.stripTags('a');
	revisionValue = revisionValue.stripTags('input');
	revisionValue = revisionValue.stripTags('textarea');
	revisionValue = revisionValue.stripTags('form');
	revisionValue = revisionValue.stripTags('script');
	
	revisionValue = revisionValue.clean();
	revisionValue = escape(revisionValue);
	
	req = new Request({
		method: 'post',
		data: 'field_name='+fieldName+'&unit_id='+unitId+'&revision_value='+revisionValue+'&task_id='+taskId+'&domain_id='+domainId,
		url: '/ajax/add_revision/',
		onSuccess: function(response) {
			// console.log(response);		
			if(response == 'Disallowed Key Characters.') {
				
				new Message({
					icon: "cautionMedium.png",
					title: "Error!",
					message: "Couldn't save your data in "+field_name
				}).say();
				
			} else if (response == false) {
				
			} else {
				
				response_array = JSON.decode(response);
				if(response_array['not_changed']) {
					
					new Message({
						icon: "okMedium.png",
						title: "Not changed",
						message: 'Not changed'
					}).say();
					
				} else {

					if(taskId != '') {
						textarea_revisions = $(fieldName+'_'+taskId+'_textarea_revisions');
					} else {
						textarea_revisions = $(fieldName+'_'+domainId+'_textarea_revisions');
					}
					new_pos = parseInt(textarea_revisions.getElement('.revision_count').get('html'))+1;
					
					textarea_revisions.set('last_pos', new_pos);
					textarea_revisions.set('current_pos', new_pos);
					textarea_revisions.set('current_id', response_array['revision_id']);
					textarea_revisions.set('current_revision_timestamp', response_array['revision_timestamp']);
					textarea_revisions.set('last_revision_timestamp', response_array['revision_timestamp']);
					
					textarea_revisions.getElement('.revision_count').set('html', new_pos);
					if(textarea_revisions.get('first_revision_timestamp') == 0) {
						textarea_revisions.set('first_revision_timestamp',response_array['revision_timestamp']);
						
					}
					
					textarea_revisions.getElement('.revision_current_pos').set('html', new_pos);
					
					textarea_revisions.getElement('.revision_timestamp').set('html', response_array['revision_datetime']);
					textarea_revisions.getElement('.revision_user').set('html', response_array['user_name']);
					
					textarea_revisions.getElement('.previous').setStyle('background', 'url(/imgs/icons/arrow_left.png) no-repeat');
					textarea_revisions.getElement('.next').setStyle('background', 'url(/imgs/icons/arrow_right_disabled.png) no-repeat');
					textarea_revisions.getElement('.next').setStyle('cursor', 'default');
					
					if(new_pos > 1) {
						textarea_revisions.set('class','textarea_revisions');
					}
					
						
					
					captial_field_name = fieldName.replace("_", " ");
					
					captial_field_name = captial_field_name.replace("_", " ");
					
					captial_field_name = captial_field_name.capitalize();
					
					//if(Browser.name == 'ie' && Browser.version == 7) {
					/*	alert(Browser.name);
					if(Browser.name == 'ie') {
						
					} else {
						
					}*/
					
					new Message({
						icon: "okMedium.png",
						title: "Success!",
						message: captial_field_name+' saved'
					}).say();
					
				}
				
			}
		
		}
	}).send();
}

function make_unit_nav() {
	$$('.unit_phase').each(function(el) {
		el.addEvent('click', function(e) {
			
			$$('.show_phase').set('class', 'unit_phase_steps hidden_phase');
			el.getElement('.unit_phase_steps').set('class','unit_phase_steps show_phase');
			//$('phase_'+el.get('unit_phase_id')).getElement('div').set('class', 'show_phase');

			$('unit_phases').getElement('.current_unit_phase').set('class','unit_phase');
			el.set('class','unit_phase current_unit_phase');
			
		});
		
		el.addEvent('mouseover', function(e) {
			$$('.show_phase').set('class', 'unit_phase_steps hidden_phase');
			el.getElement('.unit_phase_steps').set('class','unit_phase_steps show_phase');
			//$$('.show_phase').set('class', 'hidden_phase');
			//$('phase_'+el.get('unit_phase_id')).getElement('div').set('class', 'show_phase');
		});
		
		el.addEvent('mouseleave', function(e) {
			$$('.show_phase').set('class', 'unit_phase_steps hidden_phase');
			$('unit_phases').getElement('.current_unit_phase').getElement('.unit_phase_steps').set('class','unit_phase_steps show_phase');
		});
	});
}

/*function make_instructions_toggleable() {
	$('instructions_toggle').addEvent('click', function(e) {
		
		instructions_array = $$('.instruction').getStyle('display');
		if(instructions_array[0] == 'none') {
			$$('.instruction').setStyle('display','block');	
			toggle_status = 'show';
		} else {
			$$('.instruction').setStyle('display','none');	
			toggle_status = 'hide';
		}
		
		req = new Request({
			method: 'post',
			data: 'instructions_toggle_status='+toggle_status,
			url: '/ajax/toggle_instructions/'
		}).send();

	});
}*/

function make_tutorial_toggleable() {
	$('tutorial_toggle').addEvent('click', function(e) {
		
		tutorial_array = $$('.tutorial_container').getStyle('display');
		if(tutorial_array[0] == 'none') {
			$$('.tutorial_container').set('class','tutorial_container_open drop_container tutorial_container');
			toggle_status = 'show';
			$('tutorial_toggle').set('class','tipz current');
			
		} else {
			$$('.tutorial_container').set('class','tutorial_container_closed drop_container tutorial_container');	
			toggle_status = 'hide';
			$('tutorial_toggle').set('class','tipz');
		}
		
		req = new Request({
			method: 'post',
			data: 'tutorial_toggle_status='+toggle_status,
			url: '/ajax/toggle_tutorial/'
		}).send();

	});
}

function make_attachments_toggleable() {

	$('attachments_toggle').addEvent('click', function(e) {
		
		instructions_array = $$('.textarea_attachments').getStyle('display');
		if(instructions_array[0] == 'none') {
			$$('.textarea_attachments').setStyle('display','block');	
			//$('attachments_toggle').set('html','Hide attachments');
		} else {
			$$('.textarea_attachments').setStyle('display','none');	
			//$('attachments_toggle').set('html','Show attachments');
		}

	});

}

/*function make_revisions(revisions_array) {
	revisions_array.each(function(el) {
			field = el.get('field');
			if(el.get('task_id')) {
				task_id = el.get('task_id');
			} else {
				task_id = '';
			}
			req = new Request({
				method: 'post',
				data: 'field='+field+'&unit_id='+itemID+'&task_id='+task_id,
				url: '/ajax/get_revisions/',
				onComplete: function(response) {
					// console.log(response);
				}
			}).send();
	});
}*/

function make_overlay() {
	var overlay = new Element('div', {
		'id': 'overlay',
		'styles': {
			//'display': 'none',
			'opacity': 0
		}
	});
	overlay.inject(document.body, 'top');
	//overlay.inject($('wrapper'));
}


function make_messages(message_array) {
	message_array['error'].each(function(el, index) {
		message = el
		new Message({
			icon: "okMedium.png",
			title: "Error!",
			message: el
		}).tell();
	});
	
	message_array['message'].each(function(el, index) {
		message = el
		new Message({
			icon: "cautionMedium.png",
			title: "Notification",
			message: el
		}).tell();
	});
	
	message_array['success'].each(function(el, index) {
		message = el
		new Message({
			icon: "okMedium.png",
			title: "Success!",
			message: el
		}).say();
	});
	
	message_array['warning'].each(function(el, index) {
		message = el
		new Message({
			icon: "okMedium.png",
			title: "Success!",
			message: el
		}).say();
	});
}

function make_toolkit() {
	$('toolkit_tab').addEvent('click', function(e) {
		if(this.get('toolkit') != 'loaded') {
			$('toolkit').set('html','<div class="loading">Loading ...</div>');
			this.set('toolkit', 'loaded');
			req = new Request({
				method: 'post',
				url: '/ajax/get_toolkit/',
				onComplete: function(response) {

					$('toolkit').set('html',response);

					mr_tree_init();
					
					/*if($$('.task_el') != '') {
						make_ghoast_draggable($$('.task_el'));
					}*/

					if($('editable_form')) {
						make_ghoast_draggable_toolkit($('editable_form').getElements('.textarea_attachments'), $$('.tool'));
					}
					
					make_boxable($$('.tool_info_link'));
				
					mr_tabs_init($('toolkit').getElements('.toolkit_tabs li'));
					
					//$('toolkit').getElements('.files_element').setStyle('height',parseInt($('toolkit').getSize().y)-70);
					/*var myAccordion = new Fx.Accordion($$('.toolkit_toggler'), $$('.toolkit_element'), {
						display: 1,
						alwaysHide: true,
					});*/
					
					
					$('toolkit_search_submit').addEvent('click', function(e) {
						req = new Request({
							method: 'post',
							data: 'search='+$('toolkit_search').get('value'),
							url: '/ajax/search_toolkit/',
							onComplete: function(response) {
								$('toolkit_search_results').set('html',response);
								mr_tree_init();
								make_boxable($('toolkit_search_results').getElements('.tool_info_link'));
								make_ghoast_draggable_toolkit($('editable_form').getElements('.textarea_attachments'), $('toolkit_search_results').getElements('.tool'));
							}
						}).send();
					
					});
				}
			}).send();
		}
	});	
}

function make_files() {
	$('attachments_tab').addEvent('click', function(e) {
		if(this.get('attachments') != 'loaded') {
			$('attachments').set('html','<div class="loading">Loading ...</div>');
			this.set('attachments', 'loaded');
			req = new Request({
				method: 'post',
				data: 'account_id='+accountID+'&unit_id='+itemID,
				url: '/ajax/get_attachments/',
				onComplete: function(response) {
					$('attachments').set('html',response);
					//make_attachments();
					if($('editable_form')) {
						make_ghoast_draggable_files($('editable_form').getElements('.textarea_attachments'), $$('.file'));
					}
					mr_tree_init();
					mr_tabs_init($('attachments').getElements('.file_tabs li'));
					make_boxable($$('.file_info_link'));
					
					
					$('attachments').getElements('.inner').setStyle('height',parseInt($('attachments').getSize().y)-70);
					var myAccordion = new Fx.Accordion($$('.files_toggler'), $$('.files_element'), {
						display: 0,
						alwaysHide: true
					});
					
					/*$('files_search_submit').addEvent('click', function(e) {
						if($('files_search_element').getSize().y == 0) {
							myAccordion.display(0);
						}
					});*/
					
					/*$('files_search_submit').addEvent('click', function(e) {
						req = new Request({
							method: 'post',
							data: 'search='+$('toolkit_search').get('value'),
							url: '/ajax/search_files/',
							onComplete: function(response) {
								$('files_search_results').set('html',response);
								mr_tree_init();
								make_boxable($('files_search_results').getElements('.file_info_link'));
							}
						}).send();
					});*/
					//attachFiles();
					loadRecent();
					fancyUploader();
					
				}
			}).send();
		}
	});	
}


function make_attachments_toggle() {
	$$('.editor_attachments_toggle').each(function(el) {
		el.addEvent('click', function(e) {
			editor_attachments_list = el.getParent().getParent().getElement('.editor_attachments_list');
			editor_attachments_toggle_img = el.getElement('img');
			if(editor_attachments_list.getStyle('display') == 'block') {
				editor_attachments_list.setStyle('display','none');
				editor_attachments_toggle_img.set('src','/imgs/icons/plus.png');
				
				el.getParent().setStyle('background','none');
				el.getParent().setStyle('border-top','1px solid #efefef');
				el.getParent().setStyle('border-left','1px solid #efefef');
				el.getParent().setStyle('border-right','1px solid #efefef');
			} else {
				editor_attachments_list.setStyle('display','block');
				editor_attachments_toggle_img.set('src','/imgs/icons/minus.png');
				el.getParent().setStyle('background','#7eef90');
				el.getParent().setStyle('border-top','1px solid #32853f');
				el.getParent().setStyle('border-left','1px solid #32853f');
				el.getParent().setStyle('border-right','1px solid #32853f');
			}
		});	
	});
}



function make_selected_standards() {
	$('selected_standards_tab').addEvent('click', function(e) {
		if(this.get('selected_standards_tab') != 'loaded') {
			this.set('selected_standards_tab', 'loaded');
			req = new Request({
				method: 'post',
				data: 'account_id='+accountID+'&unit_id='+itemID,
				url: '/ajax/load_selected_standards/',
				onComplete: function(response) {
					$('selected_standards').set('html',response);
				}
			}).send();
		}
	});	
}





function make_ghoast_draggable_files(dropElements, dragElements) {
	dragElements.makeGhostDraggable({
		droppables: dropElements,
		handle: 'draggable_handle',
		onStart: function(el, droppable) {
			el.setStyle('font-weight','100');
			el.setStyle('background','#fffcd6');
			el.setStyle('opacity','1');
			el.setStyle('font-size','16px');
			dropElements.setStyle('background','#ecb7ea');
			$$('.textarea_attachments_closed').setStyle('display','block');
		},
		onEnter: function(el, droppable) {
			el.setStyle('font-weight','100');
			el.setStyle('background','#fffcd6');
			el.setStyle('opacity','1');
		},
		onLeave: function(el, droppable) {
			el.setStyle('background','none');
			el.setStyle('opacity','.5');
		},
		onDrop: function(el, droppable) {
			dropElements.setStyle('background','#dff1e7');
			if (droppable) {			
				droppable.setStyle('display','block');
				droppable.set('class', 'textarea_attachments textarea_attachments_open');
				$$('.textarea_attachments_closed').setStyle('display','none');
				field_name = droppable.get('field_name');
				domain_id = droppable.get('domain_id');
				// console.log(domain_id);
				file_size = el.get('file_size');
				file_type_icon = el.get('file_type_icon');
				file_id = el.get('file_id');
				
				if(droppable.get('task_id')) {
					task_id = droppable.get('task_id');
					var file_checkbox = new Element('input', {
						'type': 'checkbox',
						'checked': 'checked',
						'id': el.get('file_id')+'_'+field_name,
						'name': task_id+'[task_attachments]['+field_name+'][0][files][]',
						//'name': 'attachments[][]'+field_name,
						'value': el.get('file_id')
					});

				} else {
					var file_checkbox = new Element('input', {
						'type': 'checkbox',
						'checked': 'checked',
						'id': el.get('file_id')+'_'+field_name,
						'name': 'attachments['+field_name+']['+domain_id+'][files][]',
						//'name': 'attachments[][]'+field_name,
						'value': el.get('file_id')
					});	

				}

				
				var attachment = new Element('div', {
					'class': 'attachment'
					
				});
				
				var file_size = new Element('span', {
					'html': '('+file_size+'K)&nbsp;'
					
				});
				
				var file_img = new Element('img', {
					'src': '/imgs/icons/'+file_type_icon+'.png'
				});	
				
				var file_download = new Element('a', {
					'href': '/attachments/download/'+file_id+'/'+accountID,
					'html': '(Download)'
				});	
				
				var file_label = new Element('label', {
					'for': el.get('file_id')+'_'+field_name,
					'html': ' '+el.get('html')
				});
				
				
				file_download.inject(attachment, 'top');
				file_size.inject(attachment, 'top');
				file_label.inject(attachment, 'top');
				file_img.inject(attachment, 'top');
				file_checkbox.inject(attachment, 'top');
				
				attachment.inject(droppable);


			} else {
				
				
			}
		}
	});	
}

function make_ghoast_draggable_toolkit(dropElements, dragElements) {
	dragElements.makeGhostDraggable({
		droppables: dropElements,
		handle: 'draggable_handle',
		onStart: function(el, droppable) {
			el.setStyle('font-weight','100');
			el.setStyle('background','#fffcd6');
			el.setStyle('opacity','1');
			el.setStyle('font-size','16px');
			dropElements.setStyle('background','#ecb7ea');
			$$('.textarea_attachments_closed').setStyle('display','block');
		},
		onEnter: function(el, droppable) {
			el.setStyle('font-weight','100');
			el.setStyle('background','#fffcd6');
			el.setStyle('opacity','1');
		},
		onLeave: function(el, droppable) {
			el.setStyle('background','none');
			el.setStyle('opacity','.5');
		},
		onDrop: function(el, droppable) {
			dropElements.setStyle('background','#dff1e7');
			if(droppable) {
				droppable.setStyle('display','block');
				droppable.set('class', 'textarea_attachments textarea_attachments_open');
				$$('.textarea_attachments_closed').setStyle('display','none');
				
				field_name = droppable.get('field_name');
				tool_id = el.get('tool_id');
				if(droppable.get('task_id')) {
					task_id = droppable.get('task_id');
					var tool_checkbox = new Element('input', {
						'type': 'checkbox',
						'checked': 'checked',
						'id': tool_id+'_'+field_name,
						'name': task_id+'[task_attachments]['+field_name+'][0][tools][]',
						'value': tool_id
					});
				} else {
					domain_id = droppable.get('domain_id');
					var tool_checkbox = new Element('input', {
						'type': 'checkbox',
						'checked': 'checked',
						'id': tool_id+'_'+field_name,
						'name': 'attachments['+field_name+']['+domain_id+'][tools][]',
						'value': tool_id
					});	
				}
				domain_id = droppable.get('domain_id');
				task_id = droppable.get('task_id');
				//editor_attachments_list = droppable('.textarea_attachments');
				
				var attachment = new Element('div', {
					'class': 'attachment'
					
				});
				
				var toolkit_info_link = new Element('span', {
					'class': 'attachment_info_link',
					'header': el.get('html'),
					'target': 'toolkit_'+tool_id,
					'ajax': '/ajax/get_tool/'+tool_id+'/'+accountID,
					'html': '<img src="/imgs/icons/popup.png" />'
				});	
				
				boxable(toolkit_info_link);
				
				var tool_img = new Element('img', {'src': '/imgs/icons/wrench.png'});	
				
				var tool_label = new Element('label', {
					'for': tool_id+'_'+field_name,
					'html': ' '+el.get('html')
				});
				
			
				toolkit_info_link.inject(attachment, 'top');
				tool_label.inject(attachment, 'top');
				tool_img.inject(attachment, 'top');
				tool_checkbox.inject(attachment, 'top');
				
				attachment.inject(droppable);
				
				/*if(droppable.getStyle('display') == 'none') {
					droppable.setStyle('display','block');
					//toggle_image = droppable.getParent().getElement('.editor_attachments_toggle img');
					//toggle_image.set('src','/imgs/icons/minus.png');
				}*/


			};
		}
	});	
}



function make_ghoast_draggable(dropElements) {
	dragElements.makeGhostDraggable({
		droppables: dropElements,
		handle: 'draggable_handle',
		onEnter: function(el, droppable) {
			//droppable.setStyle('background','#fffcd6');
			el.setStyle('font-weight','100');
			el.setStyle('background','#fffcd6');
			el.setStyle('opacity','1');
			droppable.setStyle('border','1px solid black');
		},
		onLeave: function(el, droppable) {
			//droppable.setStyle('background','#ffffff');
			el.setStyle('background','none');
			el.setStyle('opacity','.5');
			droppable.setStyle('border','none');
		},
		onDrop: function(el, droppable) {
			droppable.setStyle('border','none');
			if (droppable) {
				//attachment_count = droppable.getElement('.count').get('html'); 
				//new_attachment_count = parseInt(attachment_count)+1;
				//droppable.getElement('.count').set('html', new_attachment_count);
				//editor_attachments_list = droppable.getParent().getElement('.editor_attachments_list');
				
				field_name = droppable.getElement('.textarea_attachments').get('field_name');
				domain_id = droppable.getElement('.textarea_attachments').get('domain_id');
				file_size = el.get('file_size');
				file_type_icon = el.get('file_type_icon');
				file_id = el.get('file_id');
				// console.log(field_name);
				// console.log(domain_id);
				editor_attachments_list = droppable.getElement('.textarea_attachments');
				
				var attachment = new Element('div', {
					'class': 'attachment'
					
				});
				
				var file_size = new Element('span', {
					'html': '('+file_size+'K)&nbsp;'
					
				});
				
				var file_img = new Element('img', {
					'src': '/imgs/icons/'+file_type_icon+'.png'
				});	
				
				var file_download = new Element('a', {
					'href': '/attachments/download/'+file_id,
					'html': '(Download)'
				});	
				
				var file_checkbox = new Element('input', {
					'type': 'checkbox',
					'checked': 'checked',
					'id': el.get('file_id')+'_'+field_name,
					'name': 'attachments['+field_name+']['+domain_id+'][]',
					//'name': 'attachments[][]'+field_name,
					'value': el.get('file_id')
				});	
				
				var file_label = new Element('label', {
					'for': el.get('file_id')+'_'+field_name,
					'html': ' '+el.get('html')
				});
				
				
				file_download.inject(attachment, 'top');
				file_size.inject(attachment, 'top');
				file_label.inject(attachment, 'top');
				file_img.inject(attachment, 'top');
				file_checkbox.inject(attachment, 'top');
				
				attachment.inject(editor_attachments_list);
				
				if(editor_attachments_list.getStyle('display') == 'none') {
					editor_attachments_list.setStyle('display','block');
					toggle_image = editor_attachments_list.getParent().getElement('.editor_attachments_toggle img');
					toggle_image.set('src','/imgs/icons/minus.png');
				}


			};
		}
	});	
}

function resize_details_container(nav_array) {
	nav_array.each(function(el) {
		el.addEvent('click', function(e) {
			details_container = $(el.getParent().get('rel')).getElement('.details_container');
			details_container.tween('top','230px');
		});
	});
}

function resize_textareas(textarea_array) {
	textarea_array.each(function(el, i) {
		el.setStyle('height','20px');
		el.setStyle('width','800px');	
		add_editor_instance(el.get('id'));
	});
}

function make_rich_text_editable(id) {
	var myNicEditor = new nicEditor({
		xhtml : true,
		buttonList : ['ol','ul','bold','italic','underline','left','center','right']
	});
	myNicEditor.setPanel(id+'_nic_panel');
}

function make_overlay_closeable(el) {
	el.addEvent('click', function (e) {
		close_overlay();
		close_box();
	});
}
function open_overlay() {
	body_size = document.getCoordinates();
	doc_size = document.getScrollSize();
	$('overlay').setStyle('height', doc_size.y);
	$('overlay').setStyle('width', body_size.x);
	$('overlay').tween('opacity','0', '.9'); 
}
function close_overlay() {
	$('overlay').tween('opacity','0');
	//$('loading').setStyle('display','none'); 
}
function make_selected_standards_closeable(el)
{
	el.addEvent('click', function (e) {
		//$('selected_standards').setStyle('display','none'); 
		$('selected_standards').set('class', 'closed_target');
	});
}

function make_tool_tips(tooltip_array)
{
	tooltip_array.each(function(element,index) {
		var content = element.get('title');
		element.store('tip:title','');
		element.store('tip:text', content);
		element.fade('in');
	});
	var tipz = new Tips('.tipz',{
		className: 'tip_container',
		fixed: true,
		hideDelay: 500
		/*showDelay: 1000,
		offset: {'x': 0, 'y': 50}*/
		//windowPadding : {'x': 100, 'y': 100}
	});	
}

function make_boxable(boxable_array) {
	boxable_array.each(function(el) {
		boxable(el);
	});
}

function boxable(el) {
	el.addEvent('click', function (e) {	
		$('box').set('html','');
		open_overlay();
		
		if($(el.get('target'))) {		
			target_dimensions = $(el.get('target')).getDimensions();
			box_size = get_box_size(target_dimensions.height, target_dimensions.width);
			resize_box(box_size);
			make_box_header(box_size, el.get('header'));
			$('box').set('html',$(el.get('target')).get('html'));
		} else {
			special_function = false;
			if(el.get('class') == 'link_selected_standards') {
				special_function = 'link_selected_standards';
			}
			if(el.get('class') == 'open_tab') {
				special_function = 'open_tab';
			}
			if(el.get('ajax')) {
				get_box_ajax(el.get('ajax'), el.get('target'), el, special_function);	
			} else {
			}
			
		}
		if($('box').getStyle('display') == 'none') {
			open_box();
		}
	});
}
function get_box_ajax(ajax, target_id, el, special_function) {
	req = new Request({
		url: ajax,
		onComplete: function(response) {

			var box = new Element('div', {
				'id': 'box',
				'html': response
			});
			$('box').set('html',response);
			var target_hidden = new Element('div', {
				'class': 'target_hidden',
				'id': target_id,
				'html': response
			});
	
			target_hidden.inject($('box'), 'after');
			target_hidden_dimensions = target_hidden.getDimensions();
			
			box_size = get_box_size(target_hidden_dimensions.height, target_hidden_dimensions.width);
			resize_box(box_size);
			make_box_header(box_size, el.get('header'));

			if(special_function == 'link_selected_standards') {
				//make_standards_link_saveable($('box').getElement('.save_submit_standards_link'));
				//make_box_closeable($('box').getElement('.save_submit_standards_link'), $('box'));
				//make_overlay_closeable($('box').getElement('.save_submit_standards_link'));
				make_standards_linkable($('box').getElements('input'));

			}
			
			if(special_function == 'open_tab') {
				// console.log('hello');
				// console.log(el);
				on_click_close_tab($('box_header').getElement('.close_box'), el);
				on_click_close_tab($('overlay'), el);
			}
			//make_box_closeable($('box').getElement('.close_box'), $('box'));
			//make_overlay_closeable($('box').getElement('.close_box'));
			
		}
	}).send();
}

function close_box() {
	$('box').setStyle('display', 'none');
	$('box').setStyle('border', 'none');
	if($('box_header')) {
		$('box_header').destroy();
	}
}

function open_box() {
	$('box').setStyle('display', 'block');
	$('box').setStyle('margin', 'auto');
	//$('box').setStyle('border', '5px solid black');

}

function make_box_closeable(el) {
	el.addEvent('click', function(e) {
		close_box();
	});
}

function get_box_size(height, width) {
	body_size = document.getSize();
	if(height > (body_size.y) - parseInt(body_size.y/8)) {
		marginTop = parseInt(body_size.y/8) + 25;
		height = parseInt(body_size.y - (body_size.y/4));
		marginLeft = parseInt(body_size.x/8);
		width = parseInt(body_size.x - (body_size.x/4));
		overflow = 'auto';
	} else {
		half_body_height = body_size.y/2;
		half_box_height = height/2;
		marginTop = parseInt(half_body_height - half_box_height + 25);
		half_body_width = body_size.x/2;
		half_box_width = width/2;
		marginLeft = half_body_width - half_box_width;
		overflow = 'hidden';
	}
	
	var box_size = {
		'marginTop': marginTop,
		'height':height,
		'marginLeft':marginLeft,
		'width':width,
		'overflow':overflow
	};
	return box_size;
}

function resize_box(box_size) {
	
	$('box').setStyle('overflow', box_size.overflow);
	var boxResizeEffect = new Fx.Morph($('box'), {
		duration: 'long',
		transition: Fx.Transitions.Sine.easeOut
	});
	

	
	/*boxResizeEffect.start({
		'height': box_size.height,
		'width': box_size.width,
		'left': box_size.marginLeft,
		'top': box_size.marginTop
	});*/
	
	
	$('box').setStyle('top', box_size.marginTop);
	$('box').setStyle('left', box_size.marginLeft);
	$('box').setStyle('height', box_size.height);
	$('box').setStyle('width', box_size.width);
	
}



function make_box_header(box_size, header) {
	var box_close = new Element('div', {
		'class': 'close_box',
		'html': 'Close',
		'events': {
        'click': function(){
            close_box();
			close_overlay();
        }
    }
	});
	var box_header = new Element('div', {
		'id': 'box_header',
		'html': header,
		'styles': {
			'margin-top': box_size.marginTop-195,
			'height': 15,
			'width': box_size.width-20,
			'margin-left': box_size.marginLeft,
			'z-index': 2000
    	}
	});
	box_close.inject(box_header,'top');
	box_header.inject($('box'),'before');
}

var ignoreConfirmExitIfModified = false;
var confirmExitIfModified = (function() {
	function formIsDirty(form) 	{
		if (form) {
			for (var i = 0; i < form.elements.length; i++) {
				var element = form.elements[i];
				var type = element.type;
				if (type == "checkbox" || type == "radio") {
					if (element.checked != element.defaultChecked) {
						// console.log('checkbox or radio');
						return true;
					};
				} else if (type == "hidden" || type == "password" || type == "text" || type == "textarea") {
					if (element.value != element.defaultValue) {
						// console.log('hidden or password or text or textarea');
						return true;
					};
				} else if (type == "select-one" || type == "select-multiple") {
					for (var j = 0; j < element.options.length; j++) {
						if (element.options[j].selected != element.options[j].defaultSelected) {
							// console.log('select');
							// console.log(element.options[j].selected);
							// console.log(element.options[j].defaultSelected);
							// console.log(element);
							return true;
						};
					};
				};
			};
		};
		return false;
	};

	return function(form, message) {
		window.onbeforeunload = function(e) {
			if (ignoreConfirmExitIfModified != true) {
				e = e || window.event;
				if (formIsDirty(document.forms[form])) {
					if(accountID != 2) {
						//// console.log(e);
						//e.stop();
						// For IE and Firefox
						if(e) {
							e.returnValue = message;
						};
						// For Safari
						return message;
					}
				};
			};
		};
	};
	
})();

if (document.getElementById('submit')) {
	document.getElementById('submit').onclick = function() {
		ignoreConfirmExitIfModified = true;
	};
};

confirmExitIfModified("editable_form", "You have made modifications to the current page but have not yet saved. If you wish to save your work, stay on the current page and press 'Save'.");

function dirtyFormMessage() {
	
	new Message({
		icon: 'mediumQuestion.png',
		title: 'Question!',
		message: 'Are you sure you want to delete this task?',
		callback: true
	}).ask();

}

var keep_alive = setTimeout( function() { keep_alive_init() }, 15*1000);
var ao = false;

function keep_alive_init() {
	//ao = new AjaxObject101();	
	//run_keep_alive();
}

function run_keep_alive() {
	//ao.sndReq('get','/user/session');
}
function overlay(item_to_overlay, show)
{
	item_to_overlay = $(item_to_overlay);
	if (!$('overlay')) {
		parent = item_to_overlay.getParent();
		overlayElement = new Element('div', {id: 'overlay', html: 'LOADING'});
		overlayElement.setStyle('opacity', '0');
		overlayElement.inject(parent);
	} else {
		overlayElement = $('overlay');
	}
if (show == true) {
		coords = item_to_overlay.getCoordinates();	
		overlayElement.setStyle('width', coords.width);
		overlayElement.setStyle('height', coords.height);
		overlayElement.setStyle('top', coords.top);
		overlayElement.setStyle('left', coords.left);
		overlayElement.setStyle('z-index', '1000');
		overlayElement.setStyle('padding-top', ((coords.height) / 2));	
		overlayElement.fade('0.8'); //setStyle('display', 'block');		
	} else {
		overlayElement.fade('0');
		overlayElement.setStyle('z-index', '0');		
	}
}

/*
if(document.getElementById('controls')) {
	floatingMenu.init = function()
	{
		floatingMenu.initSecondary();
		floatingMenu.doFloat();
	};
	
	// Some browsers init scrollbars only after
	// full document load.
	floatingMenu.initSecondary = function()
	{
		floatingMenu.computeShifts();
		floatingMenu.nextX = floatingMenu.calculateCornerX();
		floatingMenu.nextY = floatingMenu.calculateCornerY();
		floatingMenu.move();
	};
	
	if (document.layers) {
		floatingMenu.addEvent(window, 'onload', floatingMenu.init);
	} else {
		floatingMenu.init();
		floatingMenu.addEvent(window, 'onload',
			floatingMenu.initSecondary);
	}	
}*/



	
	/*$$('.top').each(function(el) {
		el.addEvent('click', function(e) {
				
			//scrollbar = el.getParent();
			//target = scrollbar.getParent();
			targetID = el.get('rel');
	
			scrolled = $(targetID).getScroll();

			target = $(targetID);
			// console.log(target);

			new Fx.Scroll(target).set(10, 10);
			// console.log('hello');


		});
	});*/

	/*$$('.inject_step').each(function(el) {
		el.addEvent('click', function(e) {
			e.stop();
			stepName = el.get('rel');
			stepData = el.get('title');
			// console.log(stepData);
			req = new Request({
				method: 'post',
				data: 'step_name='+stepName+'&step_data='+stepData,
				url: '/ajax/inject_step/',
				onComplete: function(response) {

					newStep = new Element('div', {
					'class': 'new_step',
					'html': response,
					'styles': {
						'display': 'block',
					},
					'events': {
						'click': function(){
							//alert('clicked');
						},
						'mouseover': function(){
							//alert('mouseovered');
						}
					}
				});

					// console.log(response);
					newStep.inject($('editable_form'));
				}
			}).send();
		});
	});
	

*/

$$('#messages_box .close').each(function(el) {
	el.addEvent('click', function(e) {
		e.stop();
		message_id = el.get('rel');
		var messages = new Request({url: '/messages/mark_as_read/'+message_id}).send('');
		
		var message_tween = new Fx.Tween($('message_'+message_id), {property: 'opacity'});
		message_tween.start(1,0).chain(
		    function(){ $('message_'+message_id).setStyle('display', 'none'); }
		);
	});
});

$$('.option_toggle').each(function(el) {
	el.addEvent('click', function(e) {
		rel = el.get('rel');
		// console.log(el);
		if(el.hasClass('closed_toggle')) {
			// console.log('closed');
			el.addClass('open_toggle');
			el.removeClass('closed_toggle');
			// console.log(el);
			el.getElement('span').addClass('minus');
			el.getElement('span').removeClass('plus');			
			$(rel+'_div').removeClass('closed');
		} else {
			// console.log('open_toggle');
			el.removeClass('open_toggle');
			el.addClass('closed_toggle');		
			el.getElement('span').addClass('plus');
			el.getElement('span').removeClass('minus');		
			// console.log(rel);
			$(rel+'_div').addClass('closed');					
		}
	});
});

if ($('print_setup')) {
	$$('.all').each(function(el) {
		el.addEvent('click', function(e) {
			parent = el.getParent('div');
			parent.getElements('input').set('checked', el.get('checked'));
		});
	});
	
	if ($('print_setup')) {
		$('print_setup').addEvent('change', function(e) {
			check_print_settings();	
		});
	}

	check_print_settings();
	
	var mySortables = new Sortables('.sortable_list', {
	    revert: { duration: 500, transition: 'elastic:out', constrain : true }
	});
};

function check_print_settings()
{
	if ($('tasks_option') && $('task_settings')) {
		if ($('tasks_option').get('checked')) {
			$('task_settings').removeClass('hidden');
		} else {
			$('task_settings').addClass('hidden');
		}
	}
	
	if ($('standard_fields_option') && $('standard_fields_option')) {
		if ($('standard_fields_option').get('checked')) {
			$('standard_fields_settings').removeClass('hidden');
		} else {
			$('standard_fields_settings').addClass('hidden');
		}
	}
}

if ($('teacher_preparation_toggle')) { 
	$('teacher_preparation_toggle').addEvent('click', function (e) {
		$('teacher_preparation_summary_table').toggleClass('hidden');
		
		if ($('teacher_preparation_summary_table').hasClass('hidden')) {
			$('teacher_preparation_toggle').set('text', 'Show Teacher Preparation Summary');
		} else {
			$('teacher_preparation_toggle').set('text', 'Hide Teacher Preparation Summary');		
		}
	});
}

if ($$('.print_submit')) {
	$$('.print_submit').each(function(el){
		el.addEvent('click', function(e) {
			
			new Message({
				icon: "loading.gif",
				title: "Generating PDF",
				message: "Please wait..."
			}).waiter();
		});
	});
}

if ($$('.print_submit_summary')) {
	$$('.print_submit_summary').each(function(el){
		el.addEvent('click', function(e) {
			new Message({
				icon: "loading.gif",
				title: "Generating",
				message: "Please wait..."
			}).waiter();
		});
	});
}

