function createAjaxLoader($container){
	if($container){
		$container.html('');
		//var pos = $container.position();
		//alert(pos.left+' , '+pos.top);
		//var off = $container.offset();
		//var height = $container.height();
		//var width = $container.width();
		//alert(height+', '+width);
		//alert(off.left + ', ' + off.top);
		//var top = (off.top/2)+(height/2);
		//var left = (off.left/2)+(width/2);
		$('<img src="images/ajax-loader.gif" height="20" width="20" border="0" alt="Loading..."></img>')
		.appendTo($container);
	}
}

function loaderImageOnNewTab(){
	return '<img src="images/ajax-loader.gif" height="20" width="20" border="0" alt="Loading..."></img>';
}

function changeCheckboxStatus(obj, elementNameToCheck){
	if(obj && elementNameToCheck){
		var form = obj.form;
		if(form){
			var chks = elementNameToCheck.split(',');
			var elements = form.elements;
			for(var ii=0; ii<elements.length; ii++){
				if(elements[ii].type.toLowerCase() == 'checkbox'){
					for(var jj=0; jj<chks.length; jj++){
						if(elements[ii].name == chks[jj]){
							elements[ii].checked = obj.checked;
							break;
						}
					}
				}
			}
		}
	}
}

//login
function setAction(form,val){
	document.forms[form.name].action.value = val;
}
function checkFields(form){ 
	if(document.forms[form.name].userid.value.length==0){
		alert('User ID is not provided');
		document.forms[form.name].userid.focus();
		return false;
	}
	
	if(document.forms[form.name].password.value.length==0){
		alert('Password is not provided');
		document.forms[form.name].password.focus();
		return false;
	}
	setAction(form,'login');
	return true;
}
//end login

function navigateModule(moduleid){
	var form = document.forms['NavigationForm'];
	if(form){
		switch(moduleid){
			case 1://dashboard
				form.pAction.value = 'Dashboard';
				break;
			case 2://project center
				form.pAction.value = 'ProjectCenter';
				break;
			case 3://Deliverables
				form.pAction.value = 'Deliverables';
				break;
			case 4://Task Center
				form.pAction.value = 'TaskCenter';
				break;
			case 5://Resource Center
				form.pAction.value = 'ResourceCenter';
				break;
			case 6://Timesheet Center
				form.pAction.value = 'Timesheet';
				break;
			case 7://Status Report
				form.pAction.value = 'StatusReport';
				break;
			case 8://financial
				break;
			case 9://document
				break;
			case 10://Discussion Center
				form.pAction.value = 'DiscussionCenter';
				break;
			case 11://List Center
				form.pAction.value = 'ListCenter';
				break;
			case 12://Admin Center
				form.pAction.value = 'AdminCenter';
				break;
		}
		return true;
		//form.submit();
	}
	return false;
}

function getDocument(){
	//alert(document == window.top.document);
	if(document != window.top.document)
		return window.top.document;
	return document;
}

function globalMessageOk(type, obj){
	//type - 'project', 'user'
	var form = obj.form;
	if(form){
		switch(type){
			case 'project':
				break;
			case 'user':
				cancelUserForm('divUserAccountList');
				break;
		}
	}
	else{
		switch(type){
			case 'project':
				deleteTab('project','tabView');
				break;
			case 'user':
				break;
		}
	}
}

/*
**Message
*/
function setupMessageRowsAndPages(){
	if(document.forms['MessagesForm'])
		setupRowsAndPages(document.forms['MessagesForm'], 'divMessageList', 'spanMessageRows', 'spanMessagePages');
}

function createNewMessage(fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		if(document.forms['DefaultProjectForm'].projectId.value.length == 0){
			alert('No Project has been selected !');
			return;
		}
	
		var currenttime = new Date().getTime();
		form.projectId.value = document.forms['DefaultProjectForm'].projectId.value;
		form.action.value = 'newmessage';
		callAjax('message.do?time'+currenttime, form.name, fieldId);
	}
}

function getBoxMessage(obj, fieldId, boxname, tabArr){
	var form = document.forms['MessagesForm'];
	if(form){
		var currenttime = new Date().getTime();
		changeMessageTabView(obj, tabArr);
		form.action.value=boxname;
		callAjax('message.do?time'+currenttime, form.name, fieldId, setupMessageRowsAndPages);
	}
}
	
function onCancelNewMessage(fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		var currenttime = new Date().getTime();
		form.action.value = 'viewmessages';
		callAjax('message.do?time'+currenttime, form.name, fieldId, setupMessageRowsAndPages);
	}
}

var boxName;
function changeMessageTabOnBackFromReply(){
	var tabArr = ['messageTab1','messageTab2','messageTab3'];
	switch(boxName){
		case 'outbox':
			changeMessageTabView(document.getElementById(tabArr[1]), tabArr);
			break;
		case 'trash':
			changeMessageTabView(document.getElementById(tabArr[2]), tabArr);
			break;
		case 'inbox':
		default:
			changeMessageTabView(document.getElementById(tabArr[0]), tabArr);
			break;
	}
	setupMessageRowsAndPages();
}

function backFromReplyMessage(boxName, fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		this.boxName = boxName;
		var currenttime = new Date().getTime();
		form.action.value = 'BackFromReply';
		callAjax('message.do?boxName='+boxName+'&time'+currenttime, form.name, fieldId, changeMessageTabOnBackFromReply);
	}
}

function setupReplyMessageToSender(id, fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		var currenttime = new Date().getTime();
		form.action.value = 'SetupReplyToSender';
		callAjax('message.do?editmessageid='+id+'&time='+currenttime, form.name, fieldId);
	}
}

function setupReplyMessageToAll(id, fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		var currenttime = new Date().getTime();
		form.action.value = 'SetupReplyToAll';
		callAjax('message.do?editmessageid='+id+'&time='+currenttime, form.name, fieldId);
	}
}

function setupForwardMessage(id, fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		if(document.forms['DefaultProjectForm'].projectId.value.length == 0){
			alert('No Project has been selected !');
			return;
		}
	
		var currenttime = new Date().getTime();
		form.action.value = 'SetupForward';
		callAjax('message.do?editmessageid='+id+'&time='+currenttime, form.name, fieldId);
	}
}

function restoreTrashMessages(fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		if(form.boxName.value == 'trash'){
			var currenttime = new Date().getTime();
			setMessgesid(form);
			if(form.inboxIds.value.length == 0 && form.outboxIds.value.length == 0){
				alert('No messages has been selected !');
				return;
			}
			
			form.action.value = 'RestoreTrash';
			callAjax('message.do?time='+currenttime, form.name, fieldId, setupMessageRowsAndPages);
		}
	}
}

function onMessageFilterChange(fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		var currenttime = new Date().getTime();
		form.action.value = 'applyfilter';
		callAjax('message.do?time'+currenttime, form.name, fieldId, setupMessageRowsAndPages);
	}
}
	
function setName(obj, div){
	var form = obj.form;
	if(form){
		var elements = form.elements;
		var chks = new Array();
		for(var ii=0; ii<elements.length; ii++){
			if(elements[ii].type == 'checkbox' && elements[ii].name == 'chkSelUser' && elements[ii].checked)
				chks[chks.length] = elements[ii].value;
		}
		form.to.value = chks;
		if(document.getElementById(div))
			document.getElementById(div).style.display = 'none';
	}	
}

function getMessageInfo(fieldId, messagesid){
	var form = document.forms['MessagesForm'];
	if(form){
		var currenttime = new Date().getTime();
		form.projectId.value = document.forms['DefaultProjectForm'].selectProject.value;
	    form.editmessageid.value = messagesid;
		form.action.value = 'messagedetails';
		//form.action.value = 'newmessage';
		callAjax('message.do?time'+currenttime, form.name, fieldId);
	}
}

function searchEmployeeForMessage(obj, popupid){
	var popup = document.getElementById(popupid);
	if(popup){
		document.onkeypress = function(e){
			if(e.keyCode == 27 && popup.style.display == 'block')
				popup.style.display = 'none';
		}
			
		if(popup.style.display == 'none'){
			var top = left = 0;
			do{
				top += obj.offsetTop;
				left += obj.offsetLeft;
			}while(obj = obj.offsetParent);
				
			popup.style.position = 'absolute';
			popup.style.border = '1px solid #000';
			popup.style.left = left+'px';
			popup.style.top = (top+10)+'px';
			popup.style.display = 'block';
		}
		else{
			popup.style.display = 'none';
		}
	}
}

function deleteMessage(fieldId){
	var form = document.forms['MessagesForm'];
	if(form){
		setMessgesid(form);
		if(form.inboxIds.value.length == 0 && form.outboxIds.value.length == 0){
			alert('No messages has been selected !');
			return;
		}
		
		var currenttime = new Date().getTime();
		
		if(form.boxName.value == 'inbox' || form.boxName.value == 'outbox'){
			var yesNo = confirm('Sure to delete ?');
			if(!yesNo)
				return;
		}
		else if(form.boxName.value == 'trash'){
			var yesNo = confirm('This will delete forever! \n\nWant to continue ?');
			if(!yesNo)
				return;
		}
		
		form.action.value = 'deletemessages';
		callAjax('message.do?time'+currenttime, form.name, fieldId, setupMessageRowsAndPages);
	}
}

function postMessage(obj){
	var form = obj.form;
	//var form = document.forms['MessagesForm'];
	if(form){
		if (trim(form.to.value).length == 0){
			alert("To field can not left blank ");
			return false;
		}
		if(trim(form.subject.value).length == 0){
			var check = confirm("Send this message without subject?");
			if (!check){
				return false;
			}
		}
		if(trim(form.subject.value).length > 100){
			alert("Subject field can not more than 100 characters. ");
			return false;
		}
		if(trim(form.message.value).length == 0){
			var check = confirm("Send without content?");
			if(!check)
				return false;
		}
		var currenttime = new Date().getTime();
		form.action.value = 'postmessage';
		callAjax('message.do?time'+currenttime, form.name, 'divMessageContainer', setupMessageRowsAndPages);
	}
}

function setMessgesid(form){
	if(form){
		var elements = form.elements;
		if(form.boxName.value == 'inbox'){
			var chks = new Array();
			for(var ii=0; ii<elements.length; ii++){
				if(elements[ii].type == 'checkbox' && elements[ii].name == 'inboxid' && elements[ii].checked)
					chks.push(elements[ii].value);
			}
			form.inboxIds.value = chks;
		}
		else if(form.boxName.value == 'outbox'){
			var chks = new Array();
			for(var ii=0; ii<elements.length; ii++){
				if(elements[ii].type == 'checkbox' && elements[ii].name == 'outboxid' && elements[ii].checked)
					chks.push(elements[ii].value);
			}
			form.outboxIds.value = chks;
		}
		else if(form.boxName.value == 'trash'){
			var chks = new Array();
			for(var ii=0; ii<elements.length; ii++){
				if(elements[ii].type == 'checkbox' && elements[ii].name == 'trashinboxid' && elements[ii].checked)
					chks.push(elements[ii].value);
			}
			form.inboxIds.value = chks;
			chks = new Array();
			for(var ii=0; ii<elements.length; ii++){
				if(elements[ii].type == 'checkbox' && elements[ii].name == 'trashoutboxid' && elements[ii].checked)
					chks.push(elements[ii].value);
			}
			form.outboxIds.value = chks;
		}
	}
} 
	
function changeMessageTabView(obj, tabArr, form){
	if(obj && tabArr){
		for(var ii=0; ii<tabArr.length; ii++){
			if(obj.id == tabArr[ii])
				document.getElementById(tabArr[ii]).className = 'tab tabfocus';
			else
				document.getElementById(tabArr[ii]).className = 'tab tabhold';
		}
	}
	
	if(form){
		for(var ii=0; ii<form.elements.length; ii++){
			if(form.elements[ii].type == 'checkbox')
				form.elements[ii].checked = false;
		}
	}
}
	
/*
**Notes
*/
function setupNoteRowsAndPages(){
	if(document.forms['NotesForm'])
		setupRowsAndPages(document.forms['NotesForm'], 'divFilteredNoteDetails', 'spanNoteRows', 'spanNotePages');
}

function createNewNote(currenttime, fieldId){
	var form = document.forms['NotesForm'];
	if(form){
		form.action.value = 'newnote';
		//makeRequest('common.do?time'+currenttime, form.name, fieldId);
		callAjax('common.do?time'+currenttime, form.name, fieldId, setupNoteRowsAndPages);
	}
}

function addEditNote(currenttime, fieldId, type, error, noteId){
	var form = document.forms['NotesForm'];
	if(form){
		var title = form.title.value;
		if(title.length > 100){
			alert(error);
		}
		else{
			if(type == 'add'){
				if(form.title.value.length == 0){
					alert("Title should not empty");
					return false;
				}
				if(form.note.value.length == 0){
					var chk= confirm("Want to save without any content?")
					if (!chk)
						return false;
				}
				
				form.action.value = 'addnote';
				form.noteId.value = '';
				//makeRequest('common.do?time'+currenttime, form.name, fieldId);
				callAjax('common.do?time'+currenttime, form.name, fieldId);
			}
			else if(type == 'edit'){
				form.action.value = 'addnote';
				form.noteId.value = noteId;
				//makeRequest('common.do?time'+currenttime, form.name, fieldId);
				callAjax('common.do?time'+currenttime, form.name, fieldId);
			}
		}
	}
}

function onCancelNewNote(currenttime, fieldId){
	var form = document.forms['NotesForm'];
	if(form){
		form.action.value = 'viewnotes';
		//makeRequest('common.do?time'+currenttime, form.name, fieldId);
		callAjax('common.do?time'+currenttime, form.name, fieldId, setupNoteRowsAndPages);
	}
}
function viewNoteDetails(currenttime, fieldId, noteId){
	var form = document.forms['NotesForm'];
	if(form){
		form.action.value = 'viewnotedetails';
		form.noteId.value = noteId;
		//makeRequest('common.do?time'+currenttime, form.name, fieldId);
		callAjax('common.do?time'+currenttime, form.name, fieldId);
	}
}
function deleteSelectedNotes(currenttime, fieldId){
	var form = document.forms['NotesForm'];
	if(form){
		var ids = getSelectedCheckboxValue(form.noteIds);
		if(ids.length == 0){
			alert('No notes selected !');
			return;
		}
		form.action.value = 'deleteselectednotes';
		form.noteId.value = ids;
		callAjax('common.do?time'+currenttime, form.name, fieldId, setupNoteRowsAndPages);
	}
}
function deleteAllNotes(currenttime, fieldId, message){
	var form = document.forms['NotesForm'];
	if(form && message){
		var yesNo = confirm(message);
		if(!yesNo)return;
		form.action.value = 'deleteallnotes';
		callAjax('common.do?time'+currenttime, form.name, fieldId, setupNoteRowsAndPages);
	}
}
	
	
function deleteNote(currenttime, fieldId, noteId){
	var form = document.forms['NotesForm'];
	if(form){
		form.action.value = 'deletenotes';
		form.noteId.value = noteId;
		callAjax('common.do?time'+currenttime, form.name, fieldId, setupNoteRowsAndPages);
	}
}
function onEditNote(currenttime, fieldId, noteId){
	var form = document.forms['NotesForm'];
	if(form){
		form.action.value = 'editnote';
		form.noteId.value = noteId;
		//makeRequest('common.do?time'+currenttime, form.name, fieldId);
		callAjax('common.do?time'+currenttime, form.name, fieldId);
	}
}
function selectAllNotes(){
	var form = document.forms['NotesForm'];
	if(form){
		var chk = form.selectAll;
		var elements = form.elements;
		for(var ii=0; ii<elements.length; ii++){
			if(elements[ii].type == 'checkbox' && elements[ii].name == 'noteIds'){
				if(chk.checked)
					elements[ii].checked = true;
				else
					elements[ii].checked = false;
			}
		}
	}
}
function onFilterChange(currenttime, fieldId){
	var form = document.forms['NotesForm'];
	if(form){
		form.action.value = 'filternotes';
		//makeRequest('common.do?time'+currenttime, form.name, fieldId);
		callAjax('common.do?time'+currenttime, form.name, fieldId, setupNoteRowsAndPages);
	}
}

function getSelectedCheckbox(buttonGroup){
	var retArr = new Array();
	var lastElement = 0;
	if (buttonGroup[0]){
		for (var i=0; i<buttonGroup.length; i++){
			if (buttonGroup[i].checked){
				retArr.length = lastElement;
				retArr[lastElement] = i;
				lastElement++;
			}
		}
	}
	else{
		if (buttonGroup.checked){
			retArr.length = lastElement;
			retArr[lastElement] = 0;
		}
	}
	return retArr;
}
	
function getSelectedCheckboxValue(buttonGroup){
	var retArr = new Array();
	var selectedItems = getSelectedCheckbox(buttonGroup);
	if (selectedItems.length != 0){
		retArr.length = selectedItems.length;
		for (var i=0; i<selectedItems.length; i++){
			if (buttonGroup[selectedItems[i]]){
				retArr[i] = buttonGroup[selectedItems[i]].value;
			}
			else{
				retArr[i] = buttonGroup.value;// return that value
			}
		}
	}
	return retArr;
}
	
//dates
//date formats is in mm/dd/yyyy
function getDate(date){
	var arr = date.split('/');
	return arr[1];
}

function getMonth(date){
	var arr = date.split('/');
	return arr[0];
}
function getYear(date){
	var arr = date.split('/');
	return arr[2];
}

function compareDates(start, end){
	var sTime = new Date(getYear(start), getMonth(start), getDate(start)).getTime();
	var eTime = new Date(getYear(end), getMonth(end), getDate(end)).getTime();
	if(eTime < sTime)
		return false;
	return true;
}

// user logs
function trackFormChangeElements(form){
	var returnString = '';
	var elms = form.elements;
	if(elms.length > 0)
		returnString += form.name + '(';
	for(var ii=0; ii<elms.length; ii++){
		if(elms[ii].tagName.toLowerCase()!='fieldset' && elms[ii].type.toLowerCase() == 'select-one'){
			var val = elms[ii].value;
			var optns = elms[ii].options;
			for(var jj=0; jj<optns.length; jj++){
				if(optns[jj].defaultSelected && optns[jj].value != val && val != ''){
					returnString += '['+elms[ii].name+':{@'+optns[jj].text+'}-{@'+elms[ii].options[elms[ii].options.selectedIndex].text+'}]';
				}
			}
		}
		else if(elms[ii].tagName.toLowerCase()!='fieldset' && elms[ii].type.toLowerCase() == 'select-multiple'){
			if(elms[ii].options.length > 0){
				var str = '';
				for(var jj=0; jj<elms[ii].options.length; jj++){
					str += str.length==0?elms[ii].options[jj].text:','+elms[ii].options[jj].text;
				}
				if(str.length > 0)
					returnString += '['+elms[ii].name+':{@'+str+'}]';
			}
		}
		//else if(elms[ii].type == 'text' || elms[ii].type == 'checkbox' || elms[ii].type == 'radio'){
		else if(elms[ii].tagName.toLowerCase()!='fieldset' && (elms[ii].type.toLowerCase() == 'text' || elms[ii].type.toLowerCase() == 'textarea')){
			if(elms[ii].defaultValue != elms[ii].value)
				returnString += '['+elms[ii].name+':{@'+elms[ii].defaultValue+'}-{@'+elms[ii].value+'}]';
		}
	}
	if(elms.length > 0)
		returnString += ')';
	return returnString;
}

function ManageTabPanelDisplay(obj, content, tabList, contentList){
	if(tabList && tabList.length == 0){return;}
	if(contentList && contentList.length == 0){return;}
	for(var i = 0; i < tabList.length; i++){
   		if(tabList[i] == obj.id){
   			//document.getElementById(tabList[i]).className = 'tab tabfocus';
   			getDocument().getElementById(tabList[i]).className = 'tab tabfocus';
   		}
   		else{
   			//document.getElementById(tabList[i]).className = 'tab tabhold';
   			getDocument().getElementById(tabList[i]).className = 'tab tabhold';
   		}
  	}
	for(var i = 0; i < contentList.length; i++){
   		if(contentList[i] == content){
   			//document.getElementById(contentList[i]).style.display = 'block';
   			getDocument().getElementById(contentList[i]).style.display = 'block';
   		}
   		else{
   			//document.getElementById(contentList[i]).style.display = 'none';
   			getDocument().getElementById(contentList[i]).style.display = 'none';
   		}
  	}
}

function setUserSettings(title, url, moduleid){
	var tabview ;
	url = 'admin.do?time='+new Date().getTime()+'&action=LoadUserSettings';
	//alert(moduleid);
	switch(parseInt(moduleid)){
		case MODULE_DASHBOARD://Dashboard
			break;
		case MODULE_PROJECT://Project Center
			tabview = 'tabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
		case MODULE_TASK://Task Center
			tabview = 'taskTabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
		case MODULE_RESOURCE://Resource Center
			tabview = 'resourceTabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
		case MODULE_TIMESHEET://Timesheet Center
			tabview = 'timesheetTabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
		case MODULE_STATUS_REPORT:
			tabview = 'statusReportTabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
		case MODULE_LIST://List Panel
			tabview = 'listTabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
		case MODULE_ADMIN://Control Panel
			tabview = 'adminTabView';
			createNewTab(tabview, title,loaderImageOnNewTab(),url, true);
			break;
	}
}


function saveUserSettings(obj){
	var form = obj.form;
	if(form){
		if(!(form.password.value.length == 0)){
			if(form.password.value.length < 6){
				alert("Password length should be greater than six character");
				form.password.focus();
				return false;
			}
		}
    
		if(form.fname.value.length == 0){
			form.fname.focus();
			alert("First name not empty");
			return false;
		}
		else{
			var charvalidate = /[a-zA-Z]+$/;
			if(!(charvalidate.test(form.fname.value))){
				form.fname.focus();
				alert("First name allows only character");
				return false;
			}
		}
    
		if (form.lname.value.length > 0 ){
			var charvalidate = /[a-zA-Z]+$/;
			if (!(charvalidate.test(form.lname.value))){
				form.lname.focus();
				alert("Last name allows only character");
				return false;
			}
		}
    
	    if (form.email.value.length == 0){
			form.email.focus();
			alert("Please enter Email-Id");
			return false;
	    }
	    else {
			var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i;
			if(!(emailfilter.test(form.email.value))){
				form.email.focus();
				alert("Please Enter a Valid Email-Id");
				return false;
			}
		}
    
		if (form.country.value.length > 0 ){
			var charvalidate = /[a-zA-Z]+$/;
			if(!(charvalidate.test(form.country.value))){
				form.country.focus();
				alert("Country name allows only character");
				return false;
			}
		}
     
		if(form.state.value.length > 0 ){
			var charvalidate = /[a-zA-Z]+$/;
			if (!(charvalidate.test(form.state.value))){
				form.state.focus();
				alert("State name allows only character");
				return false;
			}
		}
    
		if(form.city.value.length > 0 ){
			var charvalidate = /[a-zA-Z]+$/;
			if (!(charvalidate.test(form.city.value))){
				form.city.focus();
				alert("City name allows only character");
				return false;
			}
		}
    
		if (form.mobile.value.length > 0 ){
			var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
			if (!(RegExp.test(form.mobile.value))){
				form.mobile.focus();
				alert("Mobile Number allwos only numeric character");
				return false;
			}
		}
    
		if (form.zip.value.length > 0 ){
			var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
			if (!(RegExp.test(form.zip.value))){
				form.zip.focus();
				alert("Zip code allwos only numeric character");
				return false;
			}
		}
    
		if (form.phone.value.length > 0 ){
			var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
			if (!(RegExp.test(form.phone.value))){
				form.phone.focus();
				alert("Phone Number allwos only numeric character");
				return false;
			}
		}
    
		if (form.fax.value.length > 0 ){
			var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
			if (!(RegExp.test(form.fax.value))){
				form.fax.focus();
				alert("Fax Number allwos only numeric character");
				return false;
			}
		}
		
		var currenttime = new Date().getTime();
		form.actionUpdateData.value = 'update';
		form.action.value = 'usersettings';
		if(form.emailnofication.checked)
			form.notifybyemail.value = 1;
		if(form.massagenofication.checked)
			form.notifybymassage.value = 1;
		form.logmessage.value = trackFormChangeElements(form);
		//makeRequest('userregister.do?time=currenttime', form.name, 'divUserSettings');
		callAjax('userregister.do?time='+currenttime, form.name, 'divUserSettings', getUserLogs);
	}
}
					
					
/**
/**Change Default Project 
**/
function changeDefaultProject(obj){
	var div = document.getElementById('divDefaultProject');
	if(div){
		if(div.style.display == 'block'){
			div.style.display = 'none';
		}
		else{
			var top = left = 0;
			do{
				top += obj.offsetTop;
				left += obj.offsetLeft;
			}while(obj = obj.offsetParent);
			
			div.style.position = 'absolute';
			div.style.display = 'block';
			div.style.top = (top+10)+'px';
			div.style.left = left+'px';
			
			var element = div.getElementsByTagName('select');
			if(element.length > 0){
				element[0].onclick = function(){
					var lbl = document.getElementById('lblDefaultProject');
					lbl.innerHTML = element[0].options[element[0].options.selectedIndex].text;
					div.style.display = 'none';
					
					var form = element[0].form;
					if(form){
						var oProjectId = form.projectId.value;
						form.projectId.value = element[0].value;
						if(oProjectId != form.projectId.value){
							switch(form.moduleId.value){
								case MODULE_DASHBOARD://Dashboard
									break;
								case MODULE_TASK://Task Center
									resetDefaultsForTaskCenter();
									//loadTaskList();
									break;
								case MODULE_RESOURCE://Resource Center
									restoreDefaultsForResourceCenter();
									//generateResourceView(document.forms['ResourceListWithMenuForm']);
									break;
								case MODULE_TIMESHEET://TimeSheet Center
								    getContentList();
									break;
								case MODULE_STATUS_REPORT://Status Report Center
									changeStatusReportView();
									break;
								case MODULE_LIST://List Report Center
								    loadListReport();
									break;
								default:
									break;
							}
						}
					}
				};
			}
		}
	}
}

function loadAnnouncementsOnProjectChange(){
	
}

/*
**JavaScript for generating rows and pages
*/
function setupRowsAndPages(form, containerid, rowspanid, pagespanid){
	if(form){
		var elements = form.elements;
		var totalRows = 0;
		var userRows = 0;
		var interval = parseInt(form.rowsInterval.value);
		var maxRows = parseInt(form.maxRows.value);
		//get user row record
		for(var ii=elements.length-1; ii>=0; ii--){
			if(elements[ii].name == 'userRows'){
				userRows = elements[ii].value;
				break;
			}
		}
		//generate rows
		var rowElement;
		for(var ii=0; ii<elements.length; ii++){
			if(elements[ii].name == 'rows'){
				rowElement = elements[ii];
				break;
			}
		}
		if(rowElement){
			//var rowElement = form.rows;
			totalRows = parseInt(form.totalRows.value);
			for(var ii=rowElement.options.length-1; ii>=0; ii--)
				rowElement.remove(ii);
			if(interval > totalRows){
				var optn = new Option(totalRows, totalRows);
				rowElement.options.add(optn);
			}
			else{
				var ii = interval;
				while(ii <= maxRows){
					if(ii > totalRows){
						var optn = new Option(totalRows, totalRows);
						if(ii<=userRows)optn.selected = true;
						rowElement.options.add(optn);
						break;
					}
					var optn = new Option(ii, ii);
					if(ii<=userRows)optn.selected = true;
					rowElement.options.add(optn);
					if(ii == totalRows)break;
					ii = (ii>=interval*interval)?(2*ii):(ii+interval);
				}
			}
			if(rowspanid){
				if(document.getElementById(rowspanid))
					document.getElementById(rowspanid).innerHTML = ''+totalRows;
			}
			else{
				if(document.getElementById('spanRows'))
					document.getElementById('spanRows').innerHTML = ''+totalRows;
			}
		}
		
		regenerateGridByRowAndPage(containerid, form, true, pagespanid);
	}
}

function regenerateGridByRowAndPage(containerid, form, generatepage, pagespanid){
	if(form){
		var elements = form.elements;
		if(generatepage){
			//generate pages
			var pageElement;
			for(var ii=0; ii<elements.length; ii++){
				if(elements[ii].name == 'pages'){
					pageElement = elements[ii];
					break;
				}
			}
			if(pageElement){
				//var pageElement = form.pages;
				for(var ii=pageElement.options.length-1; ii>=0; ii--)
					pageElement.remove(ii);
				
				var pages = new Array();
				if(form.totalRows.value != 0){
					if(parseInt(form.rowsInterval.value) > parseInt(form.totalRows.value))
						pages[pages.length] = 1;
					else{
						for(var ii=1; ii<(parseInt(form.totalRows.value)/form.rows.value)+1; ii++){
							pages[pages.length] = ii;
						}
					}
				}
				else{
					pages[pages.length] = 0;
				}
				for(var ii=0; ii<pages.length; ii++){
					var optn = new Option(pages[ii], pages[ii]);
					pageElement.options.add(optn);
				}
				if(pagespanid){
					if(document.getElementById(pagespanid))
						document.getElementById(pagespanid).innerHTML = ''+((pages.length==1&&pages[0]==0)?'0':pages.length);
				}
				else{
					if(document.getElementById('spanPages'))
						document.getElementById('spanPages').innerHTML = ''+((pages.length==1&&pages[0]==0)?'0':pages.length);
				}
			}
		}
		
		var row = 0;
		var page = 0;
		for(var ii=0; ii<elements.length; ii++){
			if(elements[ii].name == 'rows')row = elements[ii].value;
			else if(elements[ii].name == 'pages')page = elements[ii].value;
		}
		//alert(form.name+','+row+','+page);
		var container = document.getElementById(containerid);
		if(container){
			//var tables = container.getElementsByClassName('gridList');
			var tables = container.getElementsByTagName('table');
			if(tables){
				for(var jj=0; jj<tables.length; jj++){
					var table = tables[jj];
					if(table.className == 'gridList'){
						var rows = table.rows;
						if(rows){
							for(var ii=0; ii<rows.length; ii++){
								rows[ii].style.display = '';
							}
							var from = (row * (page-1)) + 1;
							var count = 0;
							for(var ii=0; ii<rows.length; ii++){
								var cells = rows[ii].getElementsByTagName('td');
								if(cells && cells.length > 0){
									if(ii >= from && count < row){
										rows[ii].style.display = '';
										count++;
									}
									else
										rows[ii].style.display = 'none';
								}
							}
						}
					}
				}
			}
		}
	}
}



/**
/**Date Range
**/
function defineListOnDateRange(form, url, fieldId, dateformat){
	if(form){
		if(document.getElementById('divSearchOnDateRange'))
			document.body.removeChild(document.getElementById('divSearchOnDateRange'));
			
		var newDiv = document.createElement('div');
		newDiv.id = 'divSearchOnDateRange';
		newDiv.style.border = '1px solid #000';
		newDiv.style.background = '#ddd';
		newDiv.style.height = '100px';
		newDiv.style.width = '300px';
		var table = document.createElement('table');
		table.style.width = '90%';
		var row, rowLength=0;
		var col, colLength=0;
		var element;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		col.colSpan = '2';
		col.align = 'center';
		element = document.createElement('span');
		element.innerHTML = 'Enter a date range';
		element.className = 'bold';
		col.appendChild(element);
		rowLength++;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		element = document.createElement('label');
		element.innerHTML='After';
		element.className = 'text1';
		col.appendChild(element);
		col = row.insertCell(1);
		element= document.createElement('input');
		element.type='text';
		element.className = 'text1';
		element.id = 'dateRangeStart';
		element.onclick = function(){displayDatePicker(this.id,this,dateformat);};
		col.appendChild(element);
		rowLength++;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		element = document.createElement('label');
		element.innerHTML='Before';
		element.className = 'text1';
		col.appendChild(element);
		col = row.insertCell(1);
		element= document.createElement('input');
		element.type='text';
		element.className = 'text1';
		element.id = 'dateRangeEnd';
		element.onclick = function(){displayDatePicker(this.id,this,dateformat);};
		col.appendChild(element);
		rowLength++;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		col.colSpan = '2';
		col.align = 'center';
		element = document.createElement('input');
		element.type = 'button';
		element.value = 'OK';
		element.className = 'buttons';
		element.onclick = function(){
			form.fromDateRange.value = newDiv.getElementsByTagName('input')[0].value;
			form.toDateRange.value = newDiv.getElementsByTagName('input')[1].value;
			
			if(!isDate(form.fromDateRange.value, dateformat)){
				alert('Date range start is not valid !');
				newDiv.getElementsByTagName('input')[0].focus();
				return;
			}
			if(!isDate(form.toDateRange.value, dateformat)){
				alert('Date range finish is not valid !');
				newDiv.getElementsByTagName('input')[1].focus();
				return;
			}
			if(!userDate.compareDates(userDate.getUserDate(form.fromDateRange.value, dateformat), userDate.getUserDate(form.toDateRange.value, dateformat))){
				alert('Invalid date range !');
				return;
			}
			switch(form.name){
				case 'TaskListWithMenuForm':
					form.action.value = 'TaskDateRange';
					if(document.forms['DefaultProjectForm'])
						form.projectId.value = document.forms['DefaultProjectForm'].projectId.value;
					callAjax(url, form.name, fieldId, setRowAndPageValues);
					break;
				case 'ListReportForm':
					//callAjax(url, form.name, fieldId,resetRowAndPages);
					var pid = '';
					if(document.forms['DefaultProjectForm'])
						pid = document.forms['DefaultProjectForm'].projectId.value;
					var contentid = form.listContent.value;
					var viewid = form.listView.value;
					var filterid = form.listFilter.value;
					var action = '';
					if(contentid == DB_CONTENT_LISTISSUE || contentid == DB_CONTENT_LISTMYISSUE){
						action = 'IssueFilter';
					}
					else if(contentid == DB_CONTENT_LISTRISK || contentid == DB_CONTENT_LISTMYRISK){
						action = 'RiskFilter';
					}
					
					//createRequest(url, form.name , divId, SETUP_ROWS_PAGES);
					showLoader();
					$.post(
						url,
						{time:new Date().getTime(), action:action, projectId:pid, listContent:contentid, listView:viewid, listFilter:filterid, fromDateRange:form.fromDateRange.value, toDateRange:form.toDateRange.value},
						function(html){
							refreshContainer(html);
							setupRowsAndPages(form, fieldId);
						}
					);
					break;
				case 'StatusReportListWithMenuForm':
					callAjax(url, form.name, fieldId,resetSRRowAndPages);
					break;
				case 'TimeSheetForm':
					getContentList(form);
					break;
			}
			newDiv.style.display = 'none';
			document.body.removeChild(newDiv);
		};
		col.appendChild(element);
		element = document.createElement('input');
		element.type = 'button';
		element.value = 'Cancel';
		element.className = 'buttons';
		element.onclick = function(){
			newDiv.style.display = 'none';
			document.body.removeChild(newDiv);
		};
		col.appendChild(element);
		newDiv.appendChild(table);
		newDiv.style.display='none';
		document.body.appendChild(newDiv);
		return newDiv;
	}
	return null;
}

function defineListOnResources(form, url, fieldId){
	if(form){
		if(document.getElementById('divSearchOnResources'))
			document.body.removeChild(document.getElementById('divSearchOnResources'));
			
		var newDiv = document.createElement('div');
		newDiv.id = 'divSearchOnResources';
		newDiv.style.border = '1px solid #000';
		newDiv.style.background = '#ddd';
		newDiv.style.height = '200px';
		newDiv.style.width = '300px';
		var table = document.createElement('table');
		table.style.width = '90%';
		var row, rowLength=0;
		var col, colLength=0;
		var element;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		element = document.createElement('div');
		element.innerHTML = 'Select Resource(s) To Filter';
		element.className = 'bold';
		col.appendChild(element);
		rowLength++;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		col.align = 'center';
		var listDiv = document.createElement('div');
		listDiv.id = 'divResourceListForSearch';
		col.appendChild(listDiv);
		rowLength++;
		row = table.insertRow(rowLength);
		col = row.insertCell(0);
		col.align = 'center';
		element = document.createElement('input');
		element.type = 'button';
		element.value = 'OK';
		element.className = 'buttons';
		element.onclick = function(){
			switch(form.name){
				case 'ListReportForm':
					var resources = listDiv.getElementsByTagName('select');
					if(resources && resources.length > 0){
						var resIds = new Array();
						for(var ii=0; ii<resources[0].options.length; ii++){
							if(resources[0].options[ii].selected)
								resIds.push(resources[0].options[ii].value);
						}
						if(resIds.length == 0){
							alert('No Resources Selected !');
							break;
						}
						var action = '';
						if(form.listContent.value == DB_CONTENT_LISTISSUE || form.listContent.value == DB_CONTENT_LISTMYISSUE)
							action = 'MyIssue';
						else if(form.listContent.value == DB_CONTENT_LISTRISK || form.listContent.value == DB_CONTENT_LISTMYRISK)
							action = 'MyRisk';
						showLoader();
						$.post(
							'listreport.do',
							{time:new Date().getTime(), action:action, listContent:form.listContent.value, listView:form.listView.value, listFilter:form.listFilter.value, resourceIds:resIds},
							function(html){
								refreshContainer(html);
								setupRowsAndPages(form, fieldId);
							}
						);
					}
					break;
				case 'StatusReportListWithMenuForm':
					var resources = listDiv.getElementsByTagName('select');
					if(resources && resources.length > 0){
						var resIds = new Array();
						for(var ii=0; ii<resources[0].options.length; ii++){
							if(resources[0].options[ii].selected)
								resIds.push(resources[0].options[ii].value);
						}
						if(resIds.length == 0){
							alert('No Resources Selected !');
							break;
						}
						form.resourcesids.value = resIds;
						changeStatusReportView(form);
					}
					break;
				case 'TimeSheetForm':
					var resources = listDiv.getElementsByTagName('select');
					if(resources && resources.length > 0){
						var resIds = new Array();
						for(var ii=0; ii<resources[0].options.length; ii++){
							if(resources[0].options[ii].selected)
								resIds.push(resources[0].options[ii].value);
						}
						if(resIds.length == 0){
							alert('No Resources Selected !');
							break;
						}
						form.resourceIds.value = resIds;
						getContentList(form);
					}
					break;
			}
			newDiv.style.display = 'none';
			document.body.removeChild(newDiv);
		};
		col.appendChild(element);
		element = document.createElement('input');
		element.type = 'button';
		element.value = 'Cancel';
		element.className = 'buttons';
		element.onclick = function(){
			newDiv.style.display = 'none';
			document.body.removeChild(newDiv);
		};
		col.appendChild(element);
		newDiv.appendChild(table);
		newDiv.style.display='none';
		document.body.appendChild(newDiv);
		return newDiv;
	}
	return null;
}

function centerElement(element){
	var h = element.style.height;
	var w = element.style.width;
	if(h.indexOf('px') != -1)
		h = h.substring(0, h.length-2);
	if(w.indexOf('px') != -1)
		w = w.substring(0, w.length-2);
	//alert(h+','+w);
	element.style.position = 'absolute';
	//element.style.top=((screen.height/2)-(h/2))+'px';
	//element.style.left=((screen.width/2)-(w/2))+'px';
	element.style.top=((document.documentElement.clientHeight/2)-(h/2))+'px';
	element.style.left=((document.documentElement.clientWidth/2)-(w/2))+'px';
	element.style.display='block';

	return element;
}

function showAlert(divid){
	var cDiv = document.getElementById(divid);
	if(cDiv){
		cDiv.style.display = 'block';
		var div = document.createElement('div');
		div.className = 'message';
		var div1 = document.createElement('div');
		div1.className = 'header';
		div1.innerHTML = 'MESSAGE';
		div.appendChild(div1);
		div.appendChild(cDiv);
		div1 = document.createElement('div');
		div1.style.align = 'center';
		var btn = document.createElement('input');
		btn.type = 'button';
		btn.className = 'buttons';
		btn.onclick = function(){
			div.style.display = 'none';
			document.body.removeChild(div);
		};
		btn.value = 'OK';
		div1.appendChild(btn);
		div.appendChild(div1);
		div.style.height = '100px';
		div.style.width = '300px';
		div = centerElement(div);
		document.body.appendChild(div);
	}
}

function exportToCSV(url, formName){
	var formUrl = "";
	if(document.forms[formName]){
		var formElements = document.forms[formName].elements;
		for (var i = formElements.length-1; i >= 0; --i){
			formUrl += "&"+escape(formElements[i].name)+"="+escape(formElements[i].value);
		}
	}
	var iframe = document.createElement('iframe');
	iframe.src = url+formUrl;
	iframe.style.display = 'none';
	document.body.appendChild(iframe);
}

function refreshOnlineUsers(){
	var fieldId = 'divOnlineUsers';
	if(document.getElementById(fieldId)){
		var form = document.forms['OnlineUsersForm'];
		if(form){
			form.action.value = 'RefreshOnlineUsers';
			callAjax('common.do?time='+new Date().getTime(), form.name, fieldId);
		}
	}
}

function initAlertPanel(){
	//alert('called : reloadRightPanel()');
	animatedcollapse.addDiv('divAlertGroupProject', 'fade=0,speed=400,group=tasks,persist=1,hide=1');
	animatedcollapse.addDiv('divAlertGroupTask', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupTimesheet', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupStatusReport', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupDiscussion', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupIssue', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupRisk', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupMessage', 'fade=0,speed=400,group=tasks,hide=1');
	animatedcollapse.addDiv('divAlertGroupAnnouncement', 'fade=0,speed=400,group=tasks,hide=1');

	animatedcollapse.init();
	//alert('finish');
	getUserLogs();
}

function setupUserLogRowsAndPages(){
	if(document.forms['UserLogForm'])
		setupRowsAndPages(document.forms['UserLogForm'], 'divUserLogDetails', 'spanUserLogRows', 'spanUserLogPages');
}

function getUserLogs(){
	var form = document.forms['UserLogForm'];
	if(form){
		var currenttime = new Date().getTime();
		form.action.value = 'getUserLogDetails';
		callAjax('common.do?time='+currenttime, form.name, 'divUserLogDetails', setupUserLogRowsAndPages);
	}
}

function initToggleRightPanel(){
	var rPanelId = 'divRightPanel';
	if(document.getElementById(rPanelId)){
		var divs = document.getElementById(rPanelId).getElementsByTagName('div');
		for(var ii=0; ii<divs.length; ii++){
			if(divs[ii].className == 'rightPanel'){
				var groupName = 'Group_'+parseInt(Math.random(9999)*100000);
				var groups = divs[ii].getElementsByTagName('div');
				for(var jj=0; jj<groups.length; jj++){
					if(groups[jj].id.indexOf('divRightContent_') == 0){
						animatedcollapse.addDiv(groups[jj].id, 'fade=0,speed=400,group='+groupName+',hide=1');
						var groupName1 = 'Menu_'+parseInt(Math.random(9999)*100000);
						var menus = groups[jj].getElementsByTagName('div');
						for(var kk=0; kk<menus.length; kk++){
							if(menus[kk].id.indexOf('divRightContentGroup_') == 0){
								animatedcollapse.addDiv(menus[kk].id, 'fade=0,speed=400,group='+groupName1+',hide=1');
							}
						}
					}
				}
			}
		}
		animatedcollapse.init();
	}
}

var userDate={
	getUserDate: function(dateString, format, seperator){
		if(isDate(dateString, format)){
			if(!seperator)seperator = '/';
			var d = dateString.split(seperator);
			var dt = new Date();
			switch(format){
				case 'mdy':
					dt.setDate(parseFloat(d[1]));
					dt.setMonth(parseFloat(d[0])-1);
					dt.setFullYear(parseFloat(d[2]));
					return dt;
				case 'dmy':
					dt.setDate(parseFloat(d[0]));
					dt.setMonth(parseFloat(d[1])-1);
					dt.setFullYear(parseFloat(d[2]));
					return dt;
				case 'ymd':
					dt.setDate(parseFloat(d[2]));
					dt.setMonth(parseFloat(d[1])-1);
					dt.setFullYear(parseFloat(d[0]));
					return dt;
			}
		}
	},
	formatDate: function(dt, format, seperator){
		if(dt && format){
			if(!seperator)seperator = '/';
			var month = ''+(dt.getMonth()+1);
			if(month.length == 1)month='0'+month;
			var date = ''+dt.getDate();
			if(date.length == 1)date='0'+date;
			var year = dt.getFullYear();
			switch(format){
				case 'mdy':
					return month+seperator+date+seperator+year;
				case 'dmy':
					return date+seperator+month+seperator+year;
				case 'ymd':
					return year+seperator+month+seperator+date;
			}
		}
	},
	compareDates: function(sd, ed){
		if(sd && ed){
			if(ed < sd)
				return false;
		}
		return true;
	},
	compareDateStrings: function(start, finish, format, seperator){
		var sd = this.getUserDate(start, format, seperator);
		var ed = this.getUserDate(finish, format, seperator);
		return this.compareDates(sd, ed);
	}
};


