var sentToAFriendURL='http://www.avisetest.com/Patients/index.html';
var SendToAFriendHandle="TEScript/SendToAFriend.php";
TE_SendToAFriend=function(){
	var c={nameMssg:"You must insert your name.",senderMssg:"You must insert your email address.",failureMssg:"Your email cannot be sent at this moment.",invalidMssg:"You must insert a valid email address.",noEmailMssg:"You must insert at least one email address.",succesMssg:"Your email has been sent."},retObj={};
	function walk(p,func){
		function hasClass(e,clss){
			var re=new RegExp('(?:^|\\s+)'+clss+'(?:\\s+|$)');
			return re.test(e.className);
		};
		var iArr=p.getElementsByTagName('INPUT'),taArr=p.getElementsByTagName('TEXTAREA');
		for(var i=0;i<iArr.length;i++){
			if(hasClass(iArr[i],'TE_STAFRIEND')&&iArr[i].getAttribute('type').toLowerCase()=='text'){
				func(iArr[i]);
			}
		}
		for(var j=0;j<taArr.length;j++){
			if(hasClass(taArr[j],'TE_STAFRIEND'))func(taArr[j]);
		}
	};
	function isEmail(e){
		if(!/^\S+@\S+(\.\S+)*\.(\S{2,3}|info)$/i.test(e)||/[\(\)\<\>\,\;\:\\\"\[\]]/.test(e)){
			return false;
		}
		return true;
	};
	function removeMark(str){
		var pos=str.indexOf('#');
		str=(pos==-1)?str:str.substring(0,pos);
		return str;
	};
	retObj.success=function(o){
		if(o.responseText=="1"||o.responseText.toLowerCase()=='true'){
			this.reset(this.t);
			this.mssg(c.succesMssg);
		}else{
			this.mssg(c.failureMssg);
		}
	};
	retObj.failure=function(o){
		this.mssg(c.failureMssg);
	};
	retObj.send=function(t,tp){
		var url=(sentToAFriendURL&&sentToAFriendURL!='')?sentToAFriendURL:removeMark(document.location.href);
		var query='type='+tp+'&url='+encodeURIComponent(url),eCount=0;
		function completeQuery(e){
			switch(e.getAttribute('id').toLowerCase()){
				case'sender':	
					if(isEmail(e['value'])){
						query+='&sender='+escape(e['value']);
					}else{
						throw new Error(c.senderMssg);
					}
					break;
				case'subject':
					if(!/^\s*$/.test(e['value'])){
						query+='&subject='+escape(e['value']);
					}
					break;
				case'name':
					if(!(/^[\s]*$/.test(e['value']))){
						query+='&name='+escape(e['value']);
					} else {
						throw new Error(c.nameMssg);
					}
					break;
				case'comment':
					if(!/^\s*$/.test(e['value'])){
						query+='&comment='+escape(e['value']);
					}
					break;
				default:
					if(!/^\s*$/.test(e['value'])){
						if(isEmail(e['value'])){
							query+="&email[]="+escape(e['value']);
							eCount+=1;
						}else{
							throw new Error(c.invalidMssg);
						}
					}
					break;
			}
		};
		try{
			this.t=t;
			walk(document,completeQuery);
			if(eCount>0){
				YAHOO.util.Connect.asyncRequest('POST',SendToAFriendHandle,retObj,query);
			}else{
				throw new Error(c.noEmailMssg);
			}
		}catch(e){
			this.mssg(e.message);
		}
	};
	retObj.reset=function(t){
		function clearBox(e){
			e["value"]="";
		};
		walk(document,clearBox);
	};
	retObj.mssg=function(str){
		alert(str)
	};
	return retObj;
}();