var MAX_RECEIVER_LENGTH = 15;
GupShup.html.share = {};
GupShup.html.share.vars = {eId :-1 , eName: ''};
var sharePhoneReceivers = null;
var shareEmailReceivers = null;
var emailFrom = null;

GupShup.html.share.initCtrl = function(){
	sharePhoneReceivers = new GupShup.forms.controls({
								  name:'sharePhone_' + GupShup.html.share.vars.eId + '.guestList',
								  limit:-1,
								  toolTip:''});
	shareEmailReceivers = new GupShup.forms.controls({
								   name:'shareEmail_' + GupShup.html.share.vars.eId + '.guestList',
								   limit:-1,
								   toolTip:''});
	emailFrom = new GupShup.forms.controls({
								   name:'shareEmail_' + GupShup.html.share.vars.eId + '.emailId',
								   limit:-1,
								   toolTip:''});
};

GupShup.html.share.map = [
		{key:'$ENTITY_NAME$', dataMember:'eName'},
		{key:'$ENTITY_ID$', dataMember:'eId'}
		];

GupShup.html.share.clearInputBoxes = function(){
sharePhoneReceivers.set("");
shareEmailReceivers.set("");
};

GupShup.html.share.validateSharePhoneNumbers = function(phoneListControl){
var content = phoneListControl.get('value');
if(content.length < 1)
	return 'INVALID';
var count = 0;
var recvList = content.split(',');
var shareRecvIndex = 0;
for(shareRecvIndex = 0; shareRecvIndex < recvList.length ; shareRecvIndex++)
{
	var recvr = GupShup.util.trim(recvList[shareRecvIndex]);
	if(recvr.length > 0)
	{
		if(!GupShup.util.isNumber(recvr) ||  !GupShup.util.validatePhoneNumber(recvr)) 
			return 'INVALID';
		count++;
		
		if(count > MAX_RECEIVER_LENGTH)
		return 'LIMITS_REACHED';
	}
}
return 'VALID';
}

GupShup.html.share.validateShareEmailIds = function(emailListControl){
var content = emailListControl.get('value');
if(content.length < 1)
	return 'INVALID';
var count = 0;
var recvList = content.split(',');
var shareRecvIndex = 0;
for(shareRecvIndex = 0; shareRecvIndex < recvList.length ; shareRecvIndex++)
{
	var recvr = GupShup.util.trim(recvList[shareRecvIndex]);
	if(recvr.length > 0)
	{
		if(!GupShup.util.isValidEmail(recvr))
			return 'INVALID';
		
		count ++;
		
		if(count > MAX_RECEIVER_LENGTH)
		return 'LIMITS_REACHED';
	}
}
return 'VALID';
}   

GupShup.html.share.shareWithFriendsBySMS = function()
{
	var result = GupShup.html.share.validateSharePhoneNumbers(sharePhoneReceivers);
	switch(result)
	{
		case 'VALID' : GupShup.html.actions.shareGroup('sharePhone_' + GupShup.html.share.vars.eId);
					   GupShup.html.util.disableBtn('sendEmail_' + GupShup.html.share.vars.eId); 
					   GupShup.html.util.disableBtn('sendSMS_' + GupShup.html.share.vars.eId);break;
		case 'INVALID' : GupShup.forms.showNotification(GupShup.html.errorMessages.shareInvalidPhones, {failure:true}); break;
		case 'LIMITS_REACHED' : GupShup.forms.showNotification(GupShup.html.errorMessages.shareLimitReached, {failure:true}); break;
	}
	
}

GupShup.html.share.shareWithFriendsByEmail = function()
{
	var result = GupShup.html.share.validateShareEmailIds(shareEmailReceivers);
	switch(result)
	{
		case 'VALID' : if(GupShup.util.isValidEmail(emailFrom.getValue()))
						{
							GupShup.html.actions.shareGroup('shareEmail_' + GupShup.html.share.vars.eId); 
							GupShup.html.util.disableBtn('sendEmail_' + GupShup.html.share.vars.eId); 
							GupShup.html.util.disableBtn('sendSMS_' + GupShup.html.share.vars.eId);
						}
						else
						{	
							GupShup.forms.showNotification(GupShup.html.errorMessages.shareInvalidFromEmail, {failure:true});
						}
						break;
		case 'INVALID' : GupShup.forms.showNotification(GupShup.html.errorMessages.shareInvalidEmail, {failure:true}); break;
		case 'LIMITS_REACHED' : GupShup.forms.showNotification(GupShup.html.errorMessages.shareLimitReached, {failure:true}); break;
	}
	
}

GupShup.callback.shareResponseHandler = function(xhr)
{
	var status = GupShup.util.getJsonFromResponse(xhr.responseText);
	switch(status.status)
	{
		case 'FAILURE' : {
							if(typeof status.throttledMessage == 'string' && status.throttledMessage.length > 0)
								GupShup.forms.showNotification(status.throttledMessage,{failure:true});
							else
								GupShup.forms.showNotification(status.message,{failure:true});
						 }
						 break;
		case 'SUCCESS' : {
							var err = status.errorCode;
							switch(err)
							{
								case 'SUCCESS':
								case 'NO_ERROR' : GupShup.forms.showNotification(status.message,{success:true});
													GupShup.html.share.clearInputBoxes();
													if(typeof status.entityDetails == 'object')
													 {
													 	GupShup.html.share.updateEntityDetails(status);
													 }
													 break;
							}
						 }	

	}
    GupShup.html.util.enableBtn('sendEmail_' + GupShup.html.share.vars.eId); 
    GupShup.html.util.enableBtn('sendSMS_' + GupShup.html.share.vars.eId);
	GupShup.html.util.hideElement('share_box');
}

GupShup.html.share.init = function(showShareBox,eId,eName){
	GupShup.conf.shareTabs = new Array();
	GupShup.conf.shareTabsPos = new Array();
	var index = 0;
	var html = '';
	
	GupShup.html.share.hideShareBox();
	
	GupShup.html.share.vars.eId = eId;
	GupShup.html.share.vars.eName = eName;
	GupShup.html.share.vars.showShareBox = showShareBox;
	
	if(!showShareBox)
	{
		GupShup.html.util.setVisibility('shareLinkContainer_' + eId, "hidden", document);
		return;
	}	
	
	GupShup.conf.shareTabsPos['MOBILE'] = index;
	html = GupShup.util.expandTemplate(GupShup.util.getInnerHTML('sharePhoneTemplate'), GupShup.html.share.map , [GupShup.html.share.vars]);
	GupShup.conf.shareTabs[index++] = {yahooConf : {label: 'Mobile', isActive: false , content : html}};
	
	GupShup.conf.shareTabsPos['EMAIL'] = index;
	html = GupShup.util.expandTemplate(GupShup.util.getInnerHTML('shareEmailTemplate'), GupShup.html.share.map , [GupShup.html.share.vars]);
	GupShup.conf.shareTabs[index++] = {yahooConf : {label: 'Email', isActive: false , content : html}};
	
	GupShup.conf.shareTabsPos['PERMALINK'] = index;
	html = GupShup.util.expandTemplate(GupShup.util.getInnerHTML('permaLinkTemplate'), GupShup.html.share.map , [GupShup.html.share.vars]);
	GupShup.conf.shareTabs[index++] = {yahooConf : {label: 'Permalink', isActive: false , content : html}};

	GupShup.conf.shareTabView = null;
	GupShup.util.setInnerHTML('SHARE_TABS',"");
	GupShup.conf.shareTabView = GupShup.util.createTabView(GupShup.conf.shareTabs,'SHARE_TABS');
	GupShup.html.share.initCtrl();
	return;
}

GupShup.html.share.hideShareBox = function(){
	GupShup.html.util.hideElement('share_box');
	GupShup.forms.hideNotification();
}

GupShup.html.share.showShareTab = function(name, refObj){

 if(!GupShup.html.share.vars.showShareBox)
	return;
	
 switch(name){
 case 'MOBILE' : GupShup.conf.shareTabView.setActive(GupShup.conf.shareTabsPos[name]);break;
 case 'EMAIL' : GupShup.conf.shareTabView.setActive(GupShup.conf.shareTabsPos[name]);break;
 case 'PERMALINK' : GupShup.conf.shareTabView.setActive(GupShup.conf.shareTabsPos[name]);break;
 }
 GupShup.html.share.showShareBox(refObj);
}

GupShup.html.share.showShareBox = function(refObj)
{
	GupShup.forms.hideNotification();
	GupShup.html.util.showElement('share_box',false);
	if(typeof refObj == "object")
	{
		var obj=document.getElementById('share_box');
		var left = obj.offsetWidth + 10;
		GupShup.html.util.overlay(refObj, obj, "top left", 0 , 0-left);
	}
	else
		GupShup.html.util.showElement('share_box');
	return false;
}

GupShup.html.share.showFaceBookPopUp = function(){
var u = GupShup.conf.fromUrl + '/groups/' + GupShup.html.share.vars.eName;
var t = GupShup.html.share.vars.eName + "'" + " SMS GupShup";
var popup=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
return false;
}
