function Groups(){
	this.preloader = new PreLoader();
	this.handleFailure=function(o){alert("failed to retrieve data!");}
	////////////////////////////////
	this.listRes = function(id,ownerId){
		grpURL = GLOBAL_URI+"groups/groupRes/"+id+","+ownerId+"?ajaxcall=true";
		formObject=getElementId("listRes");
		formObject.action = GLOBAL_URI+"groups/groupRes/";
		handleSuccess = function( o ){getElementId("listResDiv").innerHTML=o.responseText}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", grpURL, callback);
	}
	this.update = function(id){
	resourceURL = GLOBAL_URI+"groups/update/"+id+"?ajaxcall=true";
	x = getElementId("grpSettings");
	handleSuccess = function( o ){
		alert(o.responseText);
	}
	callback={success:handleSuccess,failure:this.handleFailure}
	YAHOO.util.Connect.setForm(x);
	YAHOO.util.Connect.asyncRequest("POST", resourceURL, callback);
	}
	this.manageMember = function(gId,userId){
	location.href="#wrapper";
	manageMem.show();
	resourceURL = GLOBAL_URI+"groups/manage/"+gId+","+userId+"?ajaxcall=true";
	handleSuccess = function( o ){
		getElementId("fDiv").innerHTML=o.responseText;
	}
	callback={success:handleSuccess,failure:this.handleFailure}
	YAHOO.util.Connect.asyncRequest("GET", resourceURL, callback);
	}
	this.assign = function(gId,userId){
		resourceURL = GLOBAL_URI+"groups/assignGrpOwnership/"+gId+","+userId+"?ajaxcall=true";
		handleSuccess = function( o ){
		location.href=HTTP_PATH+"index.php/groups/group/"+gId;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", resourceURL, callback);
	}
	this.remove = function(gId,userId){
		//alert(userId);exit;
		resourceURL = GLOBAL_URI+"groups/remove/"+gId+","+userId+"?ajaxcall=true";
		handleSuccess = function( o ){
		alert(o.responseText);
		location.href=HTTP_PATH+"index.php/groups/members/"+gId;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", resourceURL, callback);
	}
	this.post=function(topicId,groupId){
		//alert(groupId);exit;
		getElementId("msgBox").innerHTML='';
		getElementId("msgBox2").innerHTML='';
		if(document.threadForm.title.value == ''){
			getElementId("msgBox").innerHTML="You must provide a subject for your new post.";
		}
		if(document.threadForm.thread.value == ''){
			getElementId("msgBox2").innerHTML="You must provide a body for your new post.";
		}
		if(document.threadForm.title.value != '' && document.threadForm.thread.value != ''){
			forumURL = GLOBAL_URI+"groups/addThread/"+topicId+","+groupId+"?ajaxcall=true";
			x = getElementId("threadForm");
			handleSuccess = function( o ){
				//alert(o.responseText);
				location.href=GLOBAL_URI+"groups/view/"+topicId+","+groupId;
			}
			callback={success:handleSuccess,failure:this.handleFailure}
			YAHOO.util.Connect.setForm(x);
			YAHOO.util.Connect.asyncRequest("POST", forumURL, callback);
		}
	}
	this.postThread=function(threadId,topicId,groupId){
		getElementId("msgBox").innerHTML='';
		getElementId("msgBox2").innerHTML='';
		if(document.threadForm.title.value == ''){
			getElementId("msgBox").innerHTML="You must provide a subject for your new post.";
		}
		if(document.threadForm.thread.value == ''){
			getElementId("msgBox2").innerHTML="You must provide a body for your new post.";
		}
		if(document.threadForm.title.value != '' && document.threadForm.thread.value != ''){
			forumURL = GLOBAL_URI+"groups/addReply/"+threadId+","+topicId+","+groupId+"?ajaxcall=true";
			x = getElementId("threadForm");
			handleSuccess = function( o ){
				location.href=GLOBAL_URI+"groups/posts/"+threadId+","+topicId+","+groupId;
			}
			callback={success:handleSuccess,failure:this.handleFailure}
			YAHOO.util.Connect.setForm(x);
			YAHOO.util.Connect.asyncRequest("POST", forumURL, callback);
		}
	}
	this.getForumForm=function(){
		postForum.show();
		forumURL = GLOBAL_URI+"groups/getForumForm/?ajaxcall=true";
		handleSuccess=function(o){
			getElementId("forum").innerHTML=o.responseText;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET",forumURL,callback)
	}
	this.postTopic=function(groupId){
		getElementId("msgBox").innerHTML='';
		getElementId("msgBox2").innerHTML='';
		if(document.threadForm.title.value == ''){
			getElementId("msgBox").innerHTML="You must provide a subject for your new post.";
		}
		if(document.threadForm.description.value == ''){
			getElementId("msgBox2").innerHTML="You must provide a body for your new post.";
		}
		if(document.threadForm.title.value != '' && document.threadForm.description.value != ''){
			forumURL = GLOBAL_URI+"groups/addForumTopic/"+groupId+"?ajaxcall=true";
			x = getElementId("threadForm");
			handleSuccess = function( o ){
				//alert(o.responseText);
				location.href=GLOBAL_URI+"groups/forum/"+groupId;
			}
			callback={success:handleSuccess,failure:this.handleFailure}
			YAHOO.util.Connect.setForm(x);
			YAHOO.util.Connect.asyncRequest("POST", forumURL, callback);
		}
	}
	this.allow=function(groupId,userId){
		groupURL = GLOBAL_URI+"groups/allow/"+groupId+","+userId+"?ajaxcall=true";
		handleSuccess = function( o ){
			alert(o.responseText);
			location.href=HTTP_PATH+"index.php/groups/show/"+groupId;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", groupURL, callback);
	}
	this.reject=function(groupId,userId){
		groupURL = GLOBAL_URI+"groups/reject/"+groupId+","+userId+"?ajaxcall=true";
		handleSuccess = function( o ){
		alert(o.responseText);
		location.href=HTTP_PATH+"index.php/groups/show/"+groupId;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", groupURL, callback);
	}
	this.changeImg=function(gId){
		URL = GLOBAL_URI+"groups/changeImg/"+gId+"?ajaxcall=true";
		x = getElementId("newImage");
		var pre = this.preloader.getPreLoader();
		handleSuccess = function( o ){
			pre.hide();
			//alert("test");
			if(o.responseText == 'success'){
				location.href = GLOBAL_URI+"groups/setting/"+gId;
			}
			else{
				getElementId("changeGrpImage").innerHTML=o.responseText;
			}
		}
		callback={upload:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(x,true);
		pre.show();
		YAHOO.util.Connect.asyncRequest("POST", URL, callback);
	}
		
	/***********************************Group Blog activities**********************************/
	this.listAll=function(groupid){
		groupBlogURL = GLOBAL_URI+"groups/blogs/"+groupid+"?ajaxcall=true";
		handleSuccess=function(o){getElementId("listGroupblogsDiv").innerHTML=o.responseText;}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET",groupBlogURL,callback)
	}
	this.saveGroupBlog=function(mode,groupid){
		//var pre = this.preloader.getPreLoader("Please Wait....");
		//remove the control so it can be re-initialized properly
		tinyMCE.execCommand('mceRemoveControl', true, 'blog');
		groupBlogURL = GLOBAL_URI+"groups/saveGrpBlog/"+mode+","+groupid+"?ajaxcall=true";
		formObject=getElementId("newGroupBlog");
		var pre = this.preloader.getPreLoader();
		handleSuccess=function(o){
			pre.hide();
			getElementId("newGroupBlog").innerHTML=o.responseText;
			tinyMCE.execCommand('mceAddControl', true, 'blog');
		}
		callback={upload:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(formObject,true);
		pre.show();
		YAHOO.util.Connect.asyncRequest("POST",groupBlogURL,callback)
		
	}
	this.delBlog=function(blogid,groupid){
		if(confirm("Are you sure you wish to delete this Blog?")){
			groupBlogURL = GLOBAL_URI+"blog/deleteBlog/"+blogid+"?ajaxcall=true";
			handleSuccess=function(o){alert(o.responseText);grp=new Groups();grp.listAll(groupid);}
			callback={success:handleSuccess,failure:this.handleFailure}
			YAHOO.util.Connect.asyncRequest("GET",groupBlogURL,callback)
		}
	}
	/***********************************Group Blog activities**********************************/
	this.add = function(){
		groupResourceURL = GLOBAL_URI+"groups/saveSharedRes/"+"?ajaxcall=true";
		formObject=getElementId("resourceForm");
		var pre = this.preloader.getPreLoader();
		handleSuccess = function( o ){pre.hide();getElementId("postNewResource").innerHTML=o.responseText;}
		callback={upload:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(formObject,true);
		pre.show();
		YAHOO.util.Connect.asyncRequest("POST",groupResourceURL,callback)
	}
	this.updateRes = function(){
		groupResourceURL = GLOBAL_URI+"groups/updateSharedRes/"+"?ajaxcall=true";
		formObject=getElementId("resourceForm");
		var pre = this.preloader.getPreLoader();
		handleSuccess = function( o ){pre.hide();getElementId("postNewResource").innerHTML=o.responseText;}
		callback={upload:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(formObject,true);
		pre.show();
		YAHOO.util.Connect.asyncRequest("POST",groupResourceURL,callback)
	}
	this.listAllRes=function(groupid){
		groupResourceURL = GLOBAL_URI+"groups/groupRes/"+groupid+"?ajaxcall=true";
		handleSuccess=function(o){getElementId("listResDiv").innerHTML=o.responseText;}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET",groupResourceURL,callback)
	}
	this.delRes=function(rid,groupid){
		if(confirm("Are you sure you wish to delete this Resource?")){
			groupResourceURL = GLOBAL_URI+"resources/deleteResEntry/"+rid+"?ajaxcall=true";
			handleSuccess=function(o){alert(o.responseText);grp=new Groups();grp.listAllRes(groupid);}
			callback={success:handleSuccess,failure:this.handleFailure}
			YAHOO.util.Connect.asyncRequest("GET",groupResourceURL,callback)
		}
	}
	this.deleleRes=function(rid,gid){
		if(confirm("Are you sure you wish to delete this Resource?")){
			groupResourceURL = GLOBAL_URI+"resources/deleteResEntry/"+rid+"?ajaxcall=true";
			handleSuccess=function(o){alert(o.responseText);location.href=GLOBAL_URI +"groups/groupRes/"+gid;}
			callback={success:handleSuccess,failure:this.handleFailure}
			YAHOO.util.Connect.asyncRequest("GET",groupResourceURL,callback)
		}
	}
	this.getResCommentForm = function(resourceid,gid){
		getElementId("resCommentPanel").style.display = 'block';
		resCommentPanel.show();
		showLoading("cLoad");
		groupResourceURL = GLOBAL_URI+"groups/getResCommentForm/"+resourceid+","+gid+"?ajaxcall=true";
		handleSuccess = function( o ){hideLoading("cLoad");getElementId("resCommentDiv").innerHTML=o.responseText;}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", groupResourceURL, callback);
	}
	this.postResComment=function(resourceid,gid){
		groupResourceURL = GLOBAL_URI+"groups/addResComment/"+"?ajaxcall=true";
		formObject=getElementId("commentform");
		handleSuccess=function(o){
		 if(o.responseText == "success"){
		 	alert("Comment Successfully Posted");resCommentPanel.hide();
		 	location.href=GLOBAL_URI +"groups/detail/"+resourceid+","+gid;
		 } else {
		 	getElementId("resCommentDiv").innerHTML=o.responseText; 
		 }			
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(formObject);
		YAHOO.util.Connect.asyncRequest("POST",groupResourceURL,callback)
	}	
	this.invitePeopleForm=function(groupId){
		x = getElementId("inviteForm");
		x.style.display="block";
		inviteForm.show();
		grpURL = GLOBAL_URI+"groups/inviteForm/"+groupId+"?ajaxcall=true";
		handleSuccess = function( o ){getElementId("inviteDiv").innerHTML=o.responseText;}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", grpURL, callback);		
	}
	this.sendInvitation = function(){
		grpURL = GLOBAL_URI+"groups/invitation/?ajaxcall=true";
		showLoading("inviteLoader");
		x = getElementId("invitationForm");
		handleSuccess = function( o ){hideLoading("inviteLoader");getElementId("inviteDiv").innerHTML=o.responseText;}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(x);
		YAHOO.util.Connect.asyncRequest("POST", grpURL, callback);
	}
	this.makeAdminForm = function(gId,userId,mode){
		location.href="#wrapper";
		getElementId("addAdminPanel").style.display='block';
		manageMem.hide();
		addAdminPanel.show();
		resourceURL = GLOBAL_URI+"groups/makeAdminForm/"+gId+","+userId+","+mode+"?ajaxcall=true";
		handleSuccess = function( o ){
			getElementId("addAdminDiv").innerHTML=o.responseText;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", resourceURL, callback);
	}
	this.addAdmin = function(gId,userId){
		grpURL = GLOBAL_URI+"groups/addAdmin/"+gId+","+userId+"?ajaxcall=true";
		showLoading("addAdminLoad");
		x = getElementId("addAdminForm");
		handleSuccess = function( o ){
			hideLoading("addAdminLoad");
			getElementId("addAdminDiv").innerHTML=o.responseText;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(x);
		YAHOO.util.Connect.asyncRequest("POST", grpURL, callback);
	}
	this.adminRequest = function(gId,userId){
		//alert("test"); exit;
		grpURL = GLOBAL_URI+"groups/adminRequest/"+gId+","+userId+"?ajaxcall=true";
		showLoading("addAdminLoad");
		x = getElementId("addAdminForm");
		handleSuccess = function( o ){
			hideLoading("addAdminLoad");
			getElementId("addAdminDiv").innerHTML=o.responseText;
			user = new Users();
			user.result(gId,'true');
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(x);
		YAHOO.util.Connect.asyncRequest("POST", grpURL, callback);
	}
	this.updateAdmin = function(gId,userId){
		grpURL = GLOBAL_URI+"groups/updateAdmin/"+gId+","+userId+"?ajaxcall=true";
		showLoading("addAdminLoad");
		x = getElementId("addAdminForm");
		handleSuccess = function( o ){
			hideLoading("addAdminLoad");
			getElementId("addAdminDiv").innerHTML=o.responseText;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(x);
		YAHOO.util.Connect.asyncRequest("POST", grpURL, callback);
	}
	this.removeAdmin = function(gId,userId){
		resourceURL = GLOBAL_URI+"groups/removeAdmin/"+gId+","+userId+"?ajaxcall=true";
		handleSuccess = function( o ){
			alert(o.responseText);
			manageMem.hide();
			location.href = GLOBAL_URI+"groups/group/"+gId;
			//getElementId("addAdminDiv").innerHTML=o.responseText;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET", resourceURL, callback);
	}
	this.broadcastform = function(gId){
		tinyMCE.execCommand('mceRemoveControl', true, 'mail_text');
		location.href="#wrapper";
		getElementId("groupBradcastPanel").style.display='block';
		groupBradcastPanel.show();
		showLoading("broadcastLoad");
		emailURL = GLOBAL_URI+"groups/getEmailForm/"+gId+"?ajaxcall=true";
		handleSuccess=function(o){hideLoading("broadcastLoad");
			getElementId("groupBradcastDiv").innerHTML=o.responseText;
			tinyMCE.execCommand('mceAddControl', true, 'mail_text');
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.asyncRequest("GET",emailURL,callback)
	}
	this.sMail=function(gId){
		tinyMCE.execCommand('mceRemoveControl', true, 'mail_text');
		getElementId("checkMsg").innerHTML='';
		getElementId("subMsg").innerHTML='';
		getElementId("Msg").innerHTML='';
		var pre = this.preloader.getPreLoader();
		var status = true;
		if(!document.groupBradcastForm.admins.checked && !document.groupBradcastForm.members.checked){
			getElementId("checkMsg").innerHTML="Select atleast one user type";
			status = false;
		}
		if(document.groupBradcastForm.mail_subject.value == ''){
			getElementId("subMsg").innerHTML="You must provide a subject for the Mail.";
			status = false;
		}
		if(document.groupBradcastForm.mail_text.value == ''){
			getElementId("Msg").innerHTML="You must provide a body for the Mail.";
			status = false;
		}
		if(!status){
			tinyMCE.execCommand('mceAddControl', true, 'mail_text');
		}
		if(status){
			tinyMCE.execCommand('mceRemoveControl', true, 'mail_text');
			jobURL = GLOBAL_URI+"groups/mails/"+gId+"?ajaxcall=true";
			x = getElementId("groupBradcastForm");
			getElementId('broadcastLoad').style.display = 'block';
			handleSuccess = function( o ){
				pre.hide();
				getElementId('broadcastLoad').style.display = 'none';
				//alert(o.responseText); exit;
				tinyMCE.execCommand('mceAddControl', true, 'mail_text');
				if(o.responseText == 'error'){
					getElementId('fileError').innerHTML = 'File type not supported';
				}
				else if(o.responseText == 'success'){
					getElementId('fileError').innerHTML = '';
					alert('Mail sent');
				}
				else if(o.responseText == 'noMembers'){
					alert('This group has no members to contact');
				}
			}
			callback={upload:handleSuccess,failure:this.handleFailure}
			pre.show();
			YAHOO.util.Connect.setForm(x,true);
			YAHOO.util.Connect.asyncRequest("POST", jobURL, callback);
		}
	}
	
	this.search_by_form = function(){
		resourceURL = GLOBAL_URI+"groups/searchGroupResource/?ajaxcall=true";
		x = getElementId("searchForm");
		handleSuccess = function( o ){
			getElementId("listResDiv").innerHTML="";
			getElementId("countrydivcontainer").innerHTML=o.responseText;
		}
		callback={success:handleSuccess,failure:this.handleFailure}
		YAHOO.util.Connect.setForm(x);
		YAHOO.util.Connect.asyncRequest("POST", resourceURL, callback);
	}
}
