/* Event Functions */

// Add an event to the obj given
// event_name refers to the event trigger, without the "on", like click or mouseover
// func_name refers to the function callback when event is triggered
function addEvent(obj,event_name,func_name){
	if (obj.attachEvent){
		obj.attachEvent("on"+event_name, func_name);
	}else if(obj.addEventListener){
		obj.addEventListener(event_name,func_name,true);
	}else{
		obj["on"+event_name] = func_name;
	}
}

// Removes an event from the object
function removeEvent(obj,event_name,func_name){
	if (obj.detachEvent){
		obj.detachEvent("on"+event_name,func_name);
	}else if(obj.removeEventListener){
		obj.removeEventListener(event_name,func_name,true);
	}else{
		obj["on"+event_name] = null;
	}
}

// Stop an event from bubbling up the event DOM
function stopEvent(evt){
	evt || window.event;
	if (evt.stopPropagation){
		evt.stopPropagation();
		evt.preventDefault();
	}else if(typeof evt.cancelBubble != "undefined"){
		evt.cancelBubble = true;
		evt.returnValue = false;
	}
	return false;
}

// Get the obj that starts the event
function getElement(evt){
	if (window.event){
		return window.event.srcElement;
	}else{
		return evt.currentTarget;
	}
}
// Get the obj that triggers off the event
function getTargetElement(evt){
	if (window.event){
		return window.event.srcElement;
	}else{
		return evt.target;
	}
}
// For IE only, stops the obj from being selected
function stopSelect(obj){
	if (typeof obj.onselectstart != 'undefined'){
		addEvent(obj,"selectstart",function(){ return false;});
	}
}

/*    Caret Functions     */

// Get the end position of the caret in the object. Note that the obj needs to be in focus first
function getCaretEnd(obj){
	if(typeof obj.selectionEnd != "undefined"){
		return obj.selectionEnd;
	}else if(document.selection&&document.selection.createRange){
		var M=document.selection.createRange();
		try{
			var Lp = M.duplicate();
			Lp.moveToElementText(obj);
		}catch(e){
			var Lp=obj.createTextRange();
		}
		Lp.setEndPoint("EndToEnd",M);
		var rb=Lp.text.length;
		if(rb>obj.value.length){
			return -1;
		}
		return rb;
	}
}
// Get the start position of the caret in the object
function getCaretStart(obj){
	if(typeof obj.selectionStart != "undefined"){
		return obj.selectionStart;
	}else if(document.selection&&document.selection.createRange){
		var M=document.selection.createRange();
		try{
			var Lp = M.duplicate();
			Lp.moveToElementText(obj);
		}catch(e){
			var Lp=obj.createTextRange();
		}
		Lp.setEndPoint("EndToStart",M);
		var rb=Lp.text.length;
		if(rb>obj.value.length){
			return -1;
		}
		return rb;
	}
}
// sets the caret position to l in the object
function setCaret(obj,l){
	obj.focus();
	if (obj.setSelectionRange){
		obj.setSelectionRange(l,l);
	}else if(obj.createTextRange){
		m = obj.createTextRange();		
		m.moveStart('character',l);
		m.collapse();
		m.select();
	}
}
// sets the caret selection from s to e in the object
function setSelection(obj,s,e){
	obj.focus();
	if (obj.setSelectionRange){
		obj.setSelectionRange(s,e);
	}else if(obj.createTextRange){
		m = obj.createTextRange();		
		m.moveStart('character',s);
		m.moveEnd('character',e);
		m.select();
	}
}

/*    Escape function   */
String.prototype.addslashes = function(){
	return this.replace(/(["\\\.\|\[\]\^\*\+\?\$\(\)])/g, '\\$1');
}
String.prototype.trim = function () {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
};
/* --- Escape --- */

/* Offset position from top of the screen */
function curTop(obj){
	toreturn = 0;
	while(obj){
		toreturn += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return toreturn;
}
function curLeft(obj){
	toreturn = 0;
	while(obj){
		toreturn += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return toreturn;
}
/* ------ End of Offset function ------- */

/* Types Function */

// is a given input a number?
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

/* Object Functions */

function replaceHTML(obj,text){
	while(el = obj.childNodes[0]){
		obj.removeChild(el);
	};
	obj.appendChild(document.createTextNode(text));
}

/*Other Mail page related functions*/
    function OpenWindow(Url)
    {
        window.open(Url,'MemberLookup','width=650,height=500,top=10,left=200,scrollbars=yes');
    }
    function CheckEmpty(obj,InviteDiv)
    {
        var MemberLenght;
        MemberLenght = SBZONE_Members_List.length; // SBZONE_Members_List is an array which is built in the CS
        if(MemberLenght == 0) // No Members in his list
        {
            document.getElementById(InviteDiv).style.display = "block";
            obj.onkeypress = function(){event.keyCode=0;event.returnValue=false;}
            obj.value = "";
        }
        
        
    }
    
    //Hide dropdown when clicking in the text area
    function HideDropDown(ListType)
    {
        //if (document.getElementById('tat_div')){ SBZone_display = false;document.body.removeChild(document.getElementById('tat_div')); } 
        if (document.getElementById('tat_table')){ SBZone_display = false;document.body.removeChild(document.getElementById('tat_table')); } 
        if(typeof SBZone_kwcount != "undefined")
		{
		    if (SBZone_kwcount == 0)
		    {
			    SBZone_display = false;
			    return;
		    }
		}
		
    }
    
    //Email check
    function IsValidEmails(Emails,FromField)
    {
        var Email;
        while(Emails.indexOf(',', 0) != -1)  
        {
            Emails = Emails.replace(",",";");
        }
        Email = Emails.split(";");
        for(i=0;i<Email.length;i++)
        {
            if(trim(Email[i]) != "")
            {
                if(!IsValidEmail(ArrangeEmail(Email[i]))) 
                {
                    alert("The below EmailID is invalid! \n" + Email[i] +"\n Location: " + FromField + " field!" );
                    return false;    
                    break;
                }
            }
        }
     return true;
     }
    function ArrangeEmail(InputEmail)
    {
        var stpos = 0;
        var edpos = 0;
        InputEmail = trim(InputEmail);
        InputEmail = InputEmail.replace("[", "(");
        InputEmail = InputEmail.replace("]", ")");
        if (InputEmail.indexOf("(") > 0)
        {
            stpos = InputEmail.indexOf("(");
            edpos = InputEmail.indexOf(")");
            InputEmail = InputEmail.substring(stpos + 1, edpos );
        }
        return InputEmail;
    }
    function RemoveCommas(str)
    {
        //Change the ';' to ','
        if(str.length > 0)
        {
            while(str.indexOf(";" , 0) != -1)  
            {
                str = str.replace(";" , ",");
            }
        }
        //Change the ',,' to ','
        if(str.length > 0)
        {
            while(str.indexOf(",," , 0) != -1)  
            {
                str = str.replace(",," , ",");
            }
        }
        if(str == ",")
            str = "";
        if(str.charAt(0) == ",") // Remove the first word if it is comma
            str = str.replace(str.charAt(0),"");
        if(str.substring(str.length-1,str.length) == ",") // Remove the last word if it is comma
          str = str.substring(0,str.length-1);
        return str;
    }
    function IsValidEmail(emailStr) 
    {
        var emailPat=/^(.+)@(.+)$/
        var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
        var validChars="\[^\\s" + specialChars + "\]"
        var quotedUser="(\"[^\"]*\")"
        var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
        var atom=validChars + '+'
        var word="(" + atom + "|" + quotedUser + ")"
        var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
        var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
        var matchArray=emailStr.match(emailPat)
        if (matchArray==null) 
        {
            return false
        }
        var user=matchArray[1]
        var domain=matchArray[2]
        if (user.match(userPat)==null) 
        {
            return false
        }
        var IPArray=domain.match(ipDomainPat)
        if (IPArray!=null) 
        {
            for (var i=1;i<=4;i++) 
            {
                if (IPArray[i]>255) 
                {
                    return false
                }
            }
            return true
        }
        var domainArray=domain.match(domainPat)
        if (domainArray==null) 
        {
            return false
        }
        var atomPat=new RegExp(atom,"g")
        var domArr=domain.match(atomPat)
        var len=domArr.length
        if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
        {
            return false
        }
        if (len<2) 
        {
            var errStr="This address is missing a hostname!"
            return false
        }
        return true;
    }
    function trim(str)
    {
        return str.replace(/^\s*|\s*$/g,"");
    }
    function FindNonMember(EmailIDs)
    {
        var NonMemberEmail = "";
        while(EmailIDs.indexOf(',' , 0) != -1)  
        {
            EmailIDs = EmailIDs.replace(',' , ';');
        }
        Email = EmailIDs.split(";");
        for(i=0;i<Email.length;i++)
        {
            if(trim(Email[i]) != "")
            {
                if(IsValidEmail(ArrangeEmail(Email[i]))) 
                {
                    var IsMember = false;
                    for(j=0;j<SBZONE_Members_List.length;j++) // Match with the members list[SBZONE_Members_List array defined in the CS file]
                    {
                        if(ArrangeEmail(Email[i]) == ArrangeEmail(SBZONE_Members_List[j]))
                        {
                            IsMember = true; // valid member
                            break;
                        }
                    }
                    if(ArrangeEmail(Email[i]) == UserEmailID)
                        IsMember = true; 
                    if (!IsMember) // Non - member
                    {
                        if(NonMemberEmail == "")
                            NonMemberEmail = ArrangeEmail(Email[i]);
                        else
                            NonMemberEmail = NonMemberEmail + "," + ArrangeEmail(Email[i]);                        
                    }
                 }
            }
        }
        return NonMemberEmail;
    }
     var IsInvalidFileFound  = false;
     var InvalidFileMessage = "";
     function myOnCientFileSelected(radUpload, eventArgs)
     {
        var SelectedFileName = eventArgs.FileInputField.value.toLowerCase();
        SelectedFileName = SelectedFileName.substring(SelectedFileName.lastIndexOf("\\")+1);
        var FileExtension;
        FileExtension = SelectedFileName.substring(SelectedFileName.lastIndexOf(".") + 1);
//        switch(FileExtension)
//        {
//            case "dll":
//                eventArgs.FileInputField.value = "";
//                IsInvalidFileFound = true;
//                if(InvalidFileMessage == "")
//                    InvalidFileMessage = SelectedFileName;
//                else
//                     InvalidFileMessage = InvalidFileMessage + "," + SelectedFileName;
//                break;
//            case "exe":
//                eventArgs.FileInputField.value = "";
//                IsInvalidFileFound = true;
//                if(InvalidFileMessage == "")
//                    InvalidFileMessage = SelectedFileName;
//                else
//                     InvalidFileMessage = InvalidFileMessage + "," + SelectedFileName;
//                break;
//            case "aspx":
//                eventArgs.FileInputField.value = "";
//                IsInvalidFileFound = true;
//                break;
//            case "cs":
//                eventArgs.FileInputField.value = "";
//                IsInvalidFileFound = true;
//                if(InvalidFileMessage == "")
//                    InvalidFileMessage = SelectedFileName;
//                else
//                     InvalidFileMessage = InvalidFileMessage + "," + SelectedFileName;
//                break;
//            default:
//                if(!IsInvalidFileFound)
//                    InvalidFileMessage = "";
//                IsInvalidFileFound = false;
//                break;
//       }
        
     }

    function RADCombocheck(frm)        
    {     
        
        var sMemberTo = "";
        var sMemberCC = "";
        var sMemberBCC = "";
        var NonMemberTo = "";
        var NonMemberCC = "";
        var NonMemberBCC= "";
        var ErrorMessage = "";
        var IsPOP3Configured = false;
        if(document.getElementById('RadCompany')!=null)  
        {
            if(document.getElementById('RadCompany').checked==true)
                return true;
        }
        var sToValue ="";
        if(typeof frm.MemberTo != "undefined")
        {
            if(frm.MemberTo.value != "")
            {
                //Remove the unwanted commas
                frm.MemberTo.value = RemoveCommas(frm.MemberTo.value);
                sToValue = frm.MemberTo.value;
                sMemberTo = frm.MemberTo.value;
            }
        }
        if(typeof frm.POP3To != "undefined")
        {
            IsPOP3Configured = true;
            if(frm.POP3To.value  != "")
            {
                //Remove the unwanted commas
                frm.POP3To.value = RemoveCommas(frm.POP3To.value);
                if(sToValue =='')
                    sToValue = frm.POP3To.value;
                else
                    sToValue = sToValue + "," + frm.POP3To.value;
            }
        }
        var Email;
        var sCCValue = "";
        if(typeof frm.MemberCC != "undefined")
        {
            if(frm.MemberCC.value != "")
            {
                //Remove the unwanted commas
                frm.MemberCC.value = RemoveCommas(frm.MemberCC.value);
                sCCValue = frm.MemberCC.value;
                sMemberCC = frm.MemberCC.value;
            }
        }
        if(typeof frm.POP3CC != "undefined")
        {
            if(frm.POP3CC.value  != "")
            {
                //Remove the unwanted commas
                frm.POP3CC.value = RemoveCommas(frm.POP3CC.value);
                if(sCCValue =='')
                    sCCValue = frm.POP3CC.value;
                else
                    sCCValue = sCCValue + "," + frm.POP3CC.value;
            }
        }
        var sBCCValue = "";
        if(typeof frm.MemberBCC != "undefined")
        {
            if(frm.MemberBCC.value != "")
            {
                //Remove the unwanted commas
                frm.MemberBCC.value = RemoveCommas(frm.MemberBCC.value);
                sBCCValue = frm.MemberBCC.value;
                sMemberBCC = frm.MemberBCC.value;
            }
        }
        if(typeof frm.POP3BCC != "undefined")
        {
            if(frm.POP3BCC.value  != "")
            {
                 //Remove the unwanted commas
                frm.POP3BCC.value = RemoveCommas(frm.POP3BCC.value);
                if(sBCCValue =='')
                    sBCCValue = frm.POP3BCC.value;
                else
                    sBCCValue = sBCCValue + "," + frm.POP3BCC.value;
            }
        }
        //if(IsInvalidFileFound)
        //{
           if(InvalidFileMessage != "")
           {
             alert("Following files are invalid!\n" + InvalidFileMessage);
             return false;
           }
           
       // }
        if(sToValue == "")
        {            
            alert("There must be atleast one EmailID in the To field!");
            return false;
        }        
        else        
        {       
            if(sMemberTo != "")
            {
                NonMemberTo = FindNonMember(sMemberTo);
                if(NonMemberTo != "")
                {
                    if(IsPOP3Configured)
                        ErrorMessage = "ERROR in Members Field!!\nEmail addresses are not in your member list-" + NonMemberTo + " \nPlease place those in the 'To' field";
                    else
                        ErrorMessage = "ERROR in Members Field!!\nEmail addresses are not in your member list-" + NonMemberTo + " \nPlease remove them and try again!";
                }
            }
            if(!IsValidEmails(sToValue,"To")) 
            {
                return false;
            }  
            var dd='';    
            if(document.getElementById('txtSubject').value =='')
            {
                dd='Subject is blank  ';
            }
            if(sCCValue != "") 
            {
                if(sMemberCC != "")
                {
                    NonMemberCC = FindNonMember(sMemberCC);
                    if(NonMemberCC != "")
                    {
                        ErrorMessage = "ERROR in CC Field!!\nEmail addresses are not in your member list-" + NonMemberCC + " \nPlease remove them and try again!";
                    }
                }
                if(!IsValidEmails(sCCValue,"CC")) 
                {
                    return false;
                }  
            }
            if(sBCCValue != "")
            {
                if(sMemberBCC != "")
                {
                    NonMemberBCC = FindNonMember(sMemberBCC);
                    if(NonMemberBCC != "")
                    {
                        ErrorMessage = "ERROR in BCC Field!!\nEmail addresses are not in your member list-" + sMemberBCC + " \nPlease remove them and try again!";
                    }
                }
                if(!IsValidEmails(sBCCValue,"BCC")) 
                {
                    return false;
                }  
            }
            if(ErrorMessage != "") // There are errors in the To,cc,BCc field
            {
                alert(ErrorMessage);
                return false;
            }
            if (dd=='') 
			    return true;
			else // Subject is empty
			{
			    return confirm( dd + ' Do you want to continue ?');
			} 
		}   
    }
    function RemoveAttachament(filename, xmltext, rowid)
    {
        var tablename = "Attachmentlist";
        var tbl = document.getElementById(tablename);
        var lastRow = tbl.rows.length-1;
        var i;
        for (i=0; i<=lastRow; i++) 
        {
            var orrowid =tbl.childNodes[0].childNodes[i].id; 
            if(orrowid.toLowerCase() == "att"+ rowid )
            {
                document.getElementById("HidAttlist").value = document.getElementById("HidAttlist").value.replace(filename,"");
                document.getElementById("hidxmltext").value= document.getElementById("hidxmltext").value.replace(xmltext,""); 
                tbl.childNodes[0].deleteRow(i);
                break;
            }
        }
        return false;
    }
	function _ShowAttachment(trID,lnkID)
    {
        if(document.getElementById(trID).style.display == "none")
        {
            document.getElementById(trID).style.display = "block";
            
            switch(lnkID)
            {
                case "lnkBCC":
                    document.getElementById("lnkBCC").title = "Hide BCC Field";
                    break;
                case "lnkPOP3BCC":
                    document.getElementById("lnkPOP3BCC").title = "Hide BCC Field";
                    break;
                case "lnkAttachment":
		    if(document.getElementById("lnkAttachment")!=null)	
                    document.getElementById("lnkAttachment").title = "Hide Attachment Field";
                    break;
                case "lnkPOP3Attachment":
                    document.getElementById("lnkPOP3Attachment").title = "Hide Attachment Field";
                    break;
                default:
                    break;
            }
        }
        else
        {
            document.getElementById(trID).style.display = "none";
            switch(lnkID)
            {
                case "lnkBCC":
                    document.getElementById("lnkBCC").title = "Show BCC Field";
                    break;
                case "lnkPOP3BCC":
                    document.getElementById("lnkPOP3BCC").title = "Show BCC Field";
                    break;
                case "lnkAttachment":
                    document.getElementById("lnkAttachment").title = "Show Attachment Field";
                    break;
                case "lnkPOP3Attachment":
                    document.getElementById("lnkPOP3Attachment").title = "Show Attachment Field";
                    break;
                default:
                    break;
            }
        }
        
    }
    function _ShowMemberPart(MailType)
    {
        switch(MailType)
        {
            case "POP3":
                //To part
                if(document.getElementById("trMemberMailTo") != null)
                {
                    if(document.getElementById("trMemberMailTo").style.display == "none")
                        document.getElementById("trMemberMailTo").style.display = "block";
                    else
                        document.getElementById("trMemberMailTo").style.display = "none";
                }
                //Attachment link
                if(document.getElementById("imgAttachment") != null)
                {
                    if(document.getElementById("imgAttachment").style.display == "none")
                        document.getElementById("imgAttachment").style.display = "block";
                    else
                        document.getElementById("imgAttachment").style.display = "none"; 
                }
                if(document.getElementById("lnkAttachment") != null)
                {
                    if(document.getElementById("lnkAttachment").style.display == "none")
                        document.getElementById("lnkAttachment").style.display = "block";
                    else
                        document.getElementById("lnkAttachment").style.display = "none";  
                }
                break;
            case "NoPOP3":
                document.getElementById("trMemberMailTo").style.display = "block";
                document.getElementById("trMemberMailCC").style.display = "block";
                document.getElementById("trBCC").style.display = "none";
                break;
            default:
                break;
        }
    }
    function ShowActionReplyDiv(divID,Msg,spnID)
    {
        if(document.getElementById(divID) != null)
        {
            document.getElementById(divID).style.display = "block";
            if(document.getElementById(spnID) != null)
            {
                document.getElementById(spnID).innerHTML = Msg;
            }
            setTimeout("HideActionReplyDiv('"+divID+"')",2000);
        }
    }
    /* Function to auto adjust the heigth of TextArea*/
    function AdjustHeight(obj,evt)
    {
       var evt  = (evt) ? evt : ((event) ? event : null);
       var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
       if ((evt.keyCode == 13) && (node.type=="textarea")) {evt.returnValue=false;}
       if(obj.value.length > 90 && obj.value.length < 180)
       {
          obj.rows = 2;
       }
       else if(obj.value.length >= 180 && obj.value.length < 270)
       {
            obj.rows = 3;
       }
       else if(obj.value.length >= 270 && obj.value.length < 360)
       {
            obj.rows = 4;
       }
       else if(obj.value.length >= 360 && obj.value.length < 450)
       {
            obj.rows = 5;
       }
       else if(obj.value.length >= 450)
       {
            obj.rows = 6;
       }
       else
       {
        obj.rows = 1;
       }
       
    }	