function AJremove(theVar){
	var theParent = theVar.parentNode;
	theParent.removeChild(theVar);
}
function AJaddEvent(obj, evType, fn){
	if(obj.addEventListener)
	    obj.addEventListener(evType, fn, true)
	if(obj.attachEvent)
	    obj.attachEvent("on"+evType, fn)
}
function AJremoveEvent(obj, type, fn){
	if(obj.detachEvent){
		obj.detachEvent('on'+type, fn);
	}else{
		obj.removeEventListener(type, fn, false);
	}
}
function isWebKit(){
	return RegExp(" AppleWebKit/").test(navigator.userAgent);
}
function ajaxUpload(form,url_action,id_element,html_show_loading,html_error_http){
	var detectWebKit = isWebKit();
	form = typeof(form)=="string"?$(form):form;
	var erro="";
	if(form==null || typeof(form)=="undefined"){
		erro += "The form of 1st parameter does not exists.\n";
	}else if(form.nodeName.toLowerCase()!="form"){
		erro += "The form of 1st parameter its not a form.\n";
	}
	if($(id_element)==null){
		erro += "The element of 3rd parameter does not exists.\n";
	}
	if(erro.length>0){
		alert("Error in call ajaxUpload:\n" + erro);
		return;
	}
	var iframe = document.createElement("iframe");
	iframe.setAttribute("id","ajax-temp");
	iframe.setAttribute("name","ajax-temp");
	iframe.setAttribute("width","0");
	iframe.setAttribute("height","0");
	iframe.setAttribute("border","0");
	iframe.setAttribute("style","width: 0; height: 0; border: none;");
	form.parentNode.appendChild(iframe);
	window.frames['ajax-temp'].name="ajax-temp";
	var doUpload = function(){
		AJremoveEvent($('ajax-temp'),"load", doUpload);
		var cross = "javascript: ";
		cross += "window.parent.$('"+id_element+"').innerHTML = document.body.innerHTML; void(0);";
		$(id_element).innerHTML = '';
		$('ajax-temp').src = cross;
		if(detectWebKit){
        	AJremove($('ajax-temp'));
        }else{
        	setTimeout(function(){ AJremove($('ajax-temp'))}, 250);
        }
    }
	AJaddEvent($('ajax-temp'),"load", doUpload);
	form.setAttribute("target","ajax-temp");
	form.setAttribute("action",url_action);
	form.setAttribute("method","post");
	form.setAttribute("enctype","multipart/form-data");
	form.setAttribute("encoding","multipart/form-data");
	if(html_show_loading.length > 0){
		$(id_element).innerHTML = html_show_loading;
	}
	form.submit();
}
function clText(tfield){
	if(tfield.value == 'Search'){
		tfield.value = '';
	}
}
function chText(tfield){
	if(tfield.value == ''){
		tfield.value = 'Search';
	}
}
function delCall(delnum){
	var delit=confirm("Are you sure you want to permanently delete this call?");
	if(delit){
		ajaxLoad('method=delconfirm&id='+delnum,'main_col','server-side/list.php');
	}
};

function changeWallpaper(theSource){
	var wallPaperFadeOut = new Fx.Morph('desktop_bg',{
		duration: 2400
	});
	var wallPaperFadeIn = new Fx.Morph('desktop_bg',{
		duration: 2400
	});
	wallPaperFadeOut.addEvent('onComplete',function(){
		var saveWallpaper = new Request({method: 'post', url: 'server-side/savewallpaper.php'});
		saveWallpaper.send('desktop_bg='+theSource);
		$('desktop_bg').setProperty('src', "wallpaper/"+theSource);
		var delayFadeIn = function(){
			wallPaperFadeIn.start({
				opacity: 1
			});
		};
		delayFadeIn.delay(200);
	});
	wallPaperFadeOut.start({
		opacity: 0
	});
}
function wplist_hover(element){
    element.addClass('wp_list_hover');
}
function wplist_norm(element){
    element.removeClass('wp_list_hover');
}
function call_list_norm(element,bg_orig,col_orig,bor_orig){
	element.set('morph');
	element.morph({
		'background-color': bg_orig,
		'borderColor': bor_orig,
		'color': col_orig,
		//'line-height': '20px',
		//'font-size': '12px',
		fps: 60,
		transition: Fx.Transitions.Sine.easeOut
	});
}
function call_list_hover(element){
	element.set('morph');
	element.morph({
		'background-color': '#f9ff60',
		'borderColor': '#ffff00',
		'color': '#5698e5',
		//'line-height': '24px',
		//'font-size': '14px',
		fps: 60,
		transition: Fx.Transitions.Sine.easeOut
	});
}
function ajaxUtilities(theData,containerID,theSource){
	new Request.HTML({
			url: theSource,
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
				$(containerID).set('color', '#ffffff');
				$(containerID).value=responseHTML; 
				$(containerID).tween('color', ['#ffffff', '#000000'])
			}
		}).send(theData);
}
var ajaxLoad = function(theData,containerID,theSource) {
	new Request.HTML({
		url: theSource,
		onRequest: function() {
			if(containerID=='main_col'){
				$('loader').set({
					'class': 'display_block',
					opacity: 0
				}).tween('opacity', [0, 1]);
			}
			var hideMain = new Fx.Tween(containerID,{duration:100});
			hideMain.start('opacity', '1', '0');
		},
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
			if(containerID=='main_col'){
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				var mainErrorCheck = responseHTML.split('||');
				if(mainErrorCheck[0]=="ERROR") {
					varCreateErrorMess = '<div class="sys_error">'+mainErrorCheck[1]+'</div>';
					$(containerID).set('text', '');
					$(containerID).set('html', varCreateErrorMess);
				}else{
					$(containerID).set('text', '');
					$(containerID).adopt(responseTree);
				}
			}else{
				$(containerID).set('text', '');
				$(containerID).adopt(responseTree);
			}
			if(theSource=='server-side/appointments.php'){
				var checkAppt = new FormValidator('createAppt', {
					onFormValidate: createAppt,
					evaluateFieldsOnChange: true,
					evaluateFieldsOnBlur: true,
					useTitles: true
				});
				var checkApptDate = new DatePicker('call_time', {
					additionalShowLinks:['datePickerImg'],
					time: true,
					format: '%x %I:%M %p',
					hideCalendarOnPick:false
				});
			}
			if(theSource=='server-side/adv_search.php' && theData=='method=search'){
				var checkSearch = new FormValidator('advSearchForm', {
					onFormValidate: doAdvSearch,
					evaluateFieldsOnChange: true,
					evaluateFieldsOnBlur: true,
					useTitles: true
				});
				var checkStartDate = new DatePicker('start_date', {
					additionalShowLinks:['datePickerImg1'],
					time: true,
					format: '%x %I:%M %p',
					hideCalendarOnPick:false
				});
				var checkEndDate = new DatePicker('end_date', {
					additionalShowLinks:['datePickerImg2'],
					time: true,
					format: '%x %I:%M %p',
					hideCalendarOnPick:false
				});
			}
			if(theSource=='server-side/support.php' && theData=='method=form'){
				var supForm = new FormValidator('techSupportForm', {
					onFormValidate: sendSupportForm,
					evaluateFieldsOnChange: true,
					evaluateFieldsOnBlur: true,
					useTitles: true
				});
			}
			(function(){
					$(containerID).tween('opacity', [0, 1])
			}).delay(300);
		},
		onFailure: function() {
			if(containerID=='main_col'){
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
			}
			$(containerID).set('html', '<i>An Unknown Error Occured. Please report this to technical support</i>');
			addEvent('domready',function(){
				(function(){ $(containerID).tween('opacity', [0, 1])}).delay(300);
			});
		}
	}).send(theData);
}
var createAppt = function(passed,element,theaction){
	if(passed){
		theaction.stop();
		element.set('send', {
			url: 'server-side/list.php',
			onRequest: function() {
				$('loader').set({
					'class': 'display_block',
					opacity: 0
				}).tween('opacity', [0, 1]);
				var hideMain = new Fx.Tween($('main_col'),{duration:100});
				hideMain.start('opacity', '1', '0');
			},
			onSuccess: function(response) {
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				var mainErrorCheck = response.split('||');
				if(mainErrorCheck[0]=="ERROR") {
					varCreateErrorMess = '<div class="sys_error">'+mainErrorCheck[1]+'</div>';
					$('main_col').set('text', '');
					$('main_col').set('html', varCreateErrorMess);
				}else{
					$('main_col').set('text', '');
					$('main_col').set('html', response);
				}
				(function(){
						$('main_col').tween('opacity', [0, 1])
				}).delay(300);
			},
			onFailure: function() {
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				$('main_col').set('html', '<i>An Unknown Error Occured. Please report this to technical support</i>');
				addEvent('domready',function(){
					(function(){ $('main_col').tween('opacity', [0, 1])}).delay(300);
				});
			}
		}).send();
	}
}
var doAdvSearch = function(passed,element,theaction){
	if(passed){
		theaction.stop();
		element.set('send', {
			url: 'server-side/adv_search.php',
			onRequest: function() {
				$('loader').set({
					'class': 'display_block',
					opacity: 0
				}).tween('opacity', [0, 1]);
				var hideMain = new Fx.Tween($('main_col'),{duration:100});
				hideMain.start('opacity', '1', '0');
			},
			onSuccess: function(response) {
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				var mainErrorCheck = response.split('||');
				if(mainErrorCheck[0]=="ERROR") {
					varCreateErrorMess = '<div class="sys_error">'+mainErrorCheck[1]+'</div>';
					$('main_col').set('text', '');
					$('main_col').set('html', varCreateErrorMess);
				}else{
					$('main_col').set('text', '');
					$('main_col').set('html', response);
				}
				(function(){
						$('main_col').tween('opacity', [0, 1])
				}).delay(300);
			},
			onFailure: function() {
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				$('main_col').set('html', '<i>An Unknown Error Occured. Please report this to technical support</i>');
				addEvent('domready',function(){
					(function(){ $('main_col').tween('opacity', [0, 1])}).delay(300);
				});
			}
		}).send();
	}
}
var sendSupportForm = function(passed,element,theaction){
	if(passed){
		theaction.stop();
		element.set('send', {
			url: 'server-side/support.php',
			onRequest: function() {
				$('loader').set({
					'class': 'display_block',
					opacity: 0
				}).tween('opacity', [0, 1]);
				var hideMain = new Fx.Tween($('main_col'),{duration:100});
				hideMain.start('opacity', '1', '0');
			},
			onSuccess: function(response) {
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				var mainErrorCheck = response.split('||');
				if(mainErrorCheck[0]=="ERROR") {
					varCreateErrorMess = '<div class="sys_error">'+mainErrorCheck[1]+'</div>';
					$('main_col').set('text', '');
					$('main_col').set('html', varCreateErrorMess);
				}else{
					$('main_col').set('text', '');
					$('main_col').set('html', response);
				}
				(function(){
						$('main_col').tween('opacity', [0, 1])
				}).delay(300);
			},
			onFailure: function() {
				$('loader').set({
					'class': 'display_none',
					opacity: 0
				}).tween('opacity', [1, 0]);
				$('main_col').set('html', '<i>An Unknown Error Occured. Please report this to technical support</i>');
				addEvent('domready',function(){
					(function(){ $('main_col').tween('opacity', [0, 1])}).delay(300);
				});
			}
		}).send();
	}
}
window.addEvent('domready', function() {
	var buttonHolder = $('buttonholder');
	var loginBox = $('login');
	var loginBoxBg = $('login_bg');
	var logoutButton = $('logout');
	var wallPaperMenu = $('wallpaper_menu');
	var wallPaperList = $('wallpaper_list');
	var wallPaperLoadMessage = 'Loading, Please be patient...';
	var loginForm = $('loginform');
	function loginFadeOut(){
		$('login').fade('out')
		$('login_bg').fade('0')
		$('login').morph('.display_none');
		$('login_bg').morph('.display_none');
	}
	var loginFadeIn = function(){
		var showLogin = $('login').set({
			'class': 'display_block',
			opacity: 0
		});
		var showLoginBg = $('login_bg').set({
			'class': 'display_block',
			opacity: 0
		});
		showLogin.tween('opacity', [0, 1]);
		showLoginBg.tween('opacity', [0, .95]);

	}
	function refreshLogin(){
		loginBox.set('class','display_block');
		loginBoxBg.set('class','display_block');
		$('loader').set('class','display_none');
		$('main_col').set('text', '');
		$('welcome').set('text', '');
		$('logoutmess').set('class', 'logoutmess_error');
		$('logoutmess').set('html', 'Your session ended, Please login again.');
		$('loadmessage').set('class', 'display_none');
		buttonHolder.set('class', 'display_block');
	}
	function doLogout(success,theStatus){
		loginFadeIn();
		$('main_col').fade('out');
		$('welcome').fade('out');
		$('loader').set('class','display_none');
		var fadeInLogoutMess = function(){
			if(success='TRUE'){
				$('logoutmess').set('class', 'logoutmess_ok');
			}else{
				$('logoutmess').set('class', 'logoutmess_error');
			}
			$('debug_toggle').set('class', 'display_none');
			$('logoutmess').set('html', theStatus).tween('opacity', [0, 1]);
			$('loadmessage').set('class', 'display_none');
			buttonHolder.set('class', 'display_block');
		}
		$('logoutmess').set('opacity',0);
		fadeInLogoutMess.delay(1000);
	}
	var getWallPaper = new Request.HTML({
		method: 'post',
		url:'server-side/wallpaper.php',
		onRequest: function() {
			wallPaperList.set('text', '');
			wallPaperList.set('html', wallPaperLoadMessage);
		},
		onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
			var wpErrorCheck = responseHTML.split('||');
			if(wpErrorCheck[0]=="ERROR") {
				wpCreateErrorMess = '<div class="wp_sys_error">'+wpErrorCheck[1]+'</div>';
				wallPaperList.set('text', '');
				wallPaperList.set('html', wpCreateErrorMess);
			}else{
				wallPaperList.set('text', '');
				wallPaperList.adopt(responseTree);
			}
		},
		onFailure: function() {
			wallPaperList.set('text', '');
			wallPaperList.set('html', '<i>An Unknown Error Occured</i>');
		}
	});
	$('forgot_pass_link').addEvent('click', function(e) {
		e.stop();
		alert('The requested feature is not available for beta testing\n\nOnTime 1405 beta');
	});
	/*
	$('q').addEvent('click', function(e) {
		e.stop();
		alert('The requested feature is not available for beta testing\n\nOnTime 1405 beta');
	});
	$('info').addEvent('click', function(e) {
		e.stop();
		alert('The requested feature is not available for beta testing\n\nOnTime 1405 beta');
	});
	$('password').addEvent('click', function(e) {
		e.stop();
		alert('The requested feature is not available for beta testing\n\nOnTime 1405 beta');
	});
	*/
	$('tech_support').addEvent('click', function(e) {
		var techSupport = ajaxLoad("method=form","main_col","server-side/support.php");
		techSupport;
	});
	$$('.button_holder').addEvent('mouseenter', function(e) {
		e.stop();
		this.set('tween', {duration: 200});
		this.tween('opacity', 1);

	});
	$$('.button_holder').addEvent('mouseleave', function(e) {
		e.stop();
		this.set('tween', {duration: 200});
		this.tween('opacity', .85);
	});
	$$('.button_holder').addEvent('domready', function(e) {
		$$('.button_holder').tween('opacity', [1, .85]);
	});
	$$('.left_hand_nav').addEvent('mouseenter', function(e) {
		e.stop();
		this.set('tween', {duration: 200});
		this.tween('opacity', 1);
	});
	$$('.left_hand_nav').addEvent('mouseleave', function(e) {
		e.stop();
		this.set('tween', {duration: 200});
		this.tween('opacity', .85);
	});
	$$('.left_hand_nav').addEvent('domready', function(e) {
		$$('.left_hand_nav').tween('opacity', [1, .85]);
	});
	$$('.left_hand_ia').addEvent('domready', function(e) {
		$$('.left_hand_ia').tween('opacity', [1, .20]);
	});
	$$('.polarize').addEvent('mouseenter', function(e) {
		e.stop();
		this.set('tween', {duration: 200});
		this.tween('opacity', 1);
	});
	$$('.polarize').addEvent('mouseleave', function(e) {
		e.stop();
		this.set('tween', {duration: 200});
		this.tween('opacity', .73);
	});
	$$('.polarize').addEvent('domready', function(e) {
		$$('.polarize').tween('opacity', [1, .73]);
	});
	wallPaperMenu.addEvent('mouseenter', function(e) {
		e.stop();
		wallPaperList.morph('.wallpaper_list_open');
		getWallPaper.send();
	});
	wallPaperList.addEvent('mouseleave', function(e) {
		e.stop();
		wallPaperList.morph('.wallpaper_list_close');
		wallPaperList.set('text', '');
	});
	wallPaperList.addEvent('click', function(e) {
		e.stop();
		wallPaperList.morph('.wallpaper_list_close');
		wallPaperList.set('text', '');
	});
	var debugPanel = $('debug_panel');
	var grabDebug = new Request.HTML({
		method: 'post',
		url:'server-side/debug.php',
		onSuccess: function(html) {
			debugPanel.set('text', '');
			debugPanel.adopt(html);
		},
		onFailure: function() {
			debugPanel.set('text', '');
			debugPanel.set('html', '<i>An Unknown Error Occured</i>');
		}
	});
	$('debug_toggle').addEvent('click', function() {
		grabDebug.send();
		debugPanel.fade();
	});
	$('right_arrow').addEvent('click', function() {
		var advCal = ajaxLoad('method=plus',"main_col","server-side/makecal.php");
		advCal;
	});
	$('left_arrow').addEvent('click', function() {
		var prvCal = ajaxLoad('method=minus',"main_col","server-side/makecal.php");
		prvCal;
	});
	$('calendar').addEvent('click', function() {
		var curCal = ajaxLoad('method=current',"main_col","server-side/makecal.php");
		curCal;
	});
	$('today').addEvent('click', function() {
		var listToday = ajaxLoad('method=today',"main_col","server-side/list.php");
		listToday;
	});
	$('sys_home').addEvent('click', function() {
		var sysHome = ajaxLoad('method=current',"main_col","server-side/makecal.php");
		sysHome;
	});
	$('create_appointment').addEvent('click', function() {
		var creAppt = ajaxLoad('method=create',"main_col","server-side/appointments.php");
		creAppt;
	});
	$('list_month_appt').addEvent('click', function() {
		varlistMoAppt = ajaxLoad("method=month","main_col","server-side/list.php");
		varlistMoAppt;
	});
	$('import_csv').addEvent('click', function() {
		varlistMoAppt = ajaxLoad("method=upload","main_col","server-side/import_csv.php");
		varlistMoAppt;
	});
	$('export_schedule').addEvent('click', function() {
		window.open('export.php','Export CSV','height=8,width=2,left=0,top=0,menubar=no,location=no,resizable=no,scrollbars=no,status=no');
		return false;
	});
	debugPanel.addEvent('domready', function() {
		debugPanel.set('opacity',0);
	});
	$('sys_search').addEvent('submit', function(e) {
		e.stop();
		sysSearch = ajaxLoad("q="+$('q').value,"main_col","server-side/search.php");
		sysSearch;
		$('q').value = "Search";
		$('q').blur()
	});
	loginForm.addEvent('submit', function(e) {
		e.stop();
		$('loadmessage').removeClass('display_none').addClass('display_block');
		$('logoutmess').empty().removeClass('logoutmess_ok').removeClass('logoutmess_error').addClass('logoutmess_none');
		buttonHolder.removeClass('display_block').addClass('display_none');
		this.set('send', {
			onSuccess: function(response) {
				var logResponse = response.split('||');
				if(logResponse[0]=='ERROR'){
					var fadeIn = $('logoutmess').addClass('logoutmess_error').set('html', logResponse[1]).set('opacity', 0);
					fadeIn.tween('opacity', [0, 1]);
					$('loadmessage').removeClass('display_block').addClass('display_none');
					buttonHolder.removeClass('display_none').addClass('display_block');
				}
				if(logResponse[0]=='NEUTRAL'){
					$('logoutmess').addClass('logoutmess_none').set('html', logResponse[1]);
					$('loadmessage').removeClass('display_block').addClass('display_none');
					buttonHolder.removeClass('display_none').addClass('display_block');
				}
				if(logResponse[0]=='SUCCESS'){
					loginFadeOut();
					var addWelcomeMess = ajaxLoad('1',"welcome","server-side/welcome.php");
					var addCalendar = ajaxLoad('1',"main_col","server-side/makecal.php");
					addWelcomeMess;
					addCalendar;
					var loadUserWallPaper = function(){
						new Request({
							method: 'post',
							url:'server-side/userwallpaper.php',
							onSuccess: function(response) {
								if(response != 'DEFAULT'){
									changeWallpaper(response);
								}
							}
						}).send();
					}
					loadUserWallPaper.delay(1500);
					var isSysAdmin = function(){
						new Request({
							method: 'post',
							url:'server-side/sysadmin.php',
							onSuccess: function(response) {
								if(response == 'TRUE'){
									$('debug_toggle').set({
										'class': 'display_block',
										opacity: 0
									}).tween('opacity', [0, .95]);
								}
							}
						}).send();
					}
					isSysAdmin.delay(500);
				}
			},
			onFailure: function() {
				$('logoutmess').addClass('logoutmess_error').set('html', '<i>An Unknown Error Occured</i>');
				buttonHolder.removeClass('display_none').addClass('display_block');
			}
		});
		this.send();
	});
	logoutButton.addEvent('click', function(e) {
		e.stop();
		var killSession = new Request({
			method: 'post',
			url: 'server-side/logout.php',
			onSuccess: function(response) {
				if(response=='TRUE'){
					doLogout('TRUE','You have been logged out.');
				}else{
					doLogout('FALSE','You may not have been logged out.');
				}
			},
			onFailure: function() {
				doLogout('FALSE','A Server error occured.')
			}	
		});
		killSession.send();
	});
	var updateClock = function(){
		var currentTime = new Date();
		var currentHours = currentTime.getHours();
		var currentMinutes = currentTime.getMinutes();
		var currentSeconds = currentTime.getSeconds();
		currentMinutes = (currentMinutes < 10 ? "0" : "")+currentMinutes;
		currentSeconds = (currentSeconds < 10 ? "0" : "")+currentSeconds;
		var timeOfDay = (currentHours < 12) ? "a.m." : "p.m.";
		currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
		currentHours = ( currentHours == 0 ) ? 12 : currentHours;
		var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds + " " + timeOfDay;
		$('clock').set('text',currentTimeString);
	}
	updateClock.periodical(1000);
});