﻿// JScript File
//http://www.codeproject.com/KB/scripting/stringbuilder.aspx
function StringBuilder(value) {
    this.strings = new Array("");
    this.append(value);
}

// Appends the given value to the end of this instance.
StringBuilder.prototype.append = function (value) {
    if (value) {
        this.strings.push(value);
    }
    return this;
}

// Clears the string buffer
StringBuilder.prototype.clear = function () {
    this.strings.length = 1;
}

// Converts this instance to a String.
StringBuilder.prototype.toString = function () {
    return this.strings.join("");
}

var messageLabsCommon = function() {
    var filledIn = function(el) {
	    var isValid = false;
	    if(el.value) 
	    {
	        if(el.type == "checkbox") {
	            isValid = el.checked;
	        }
	        else if (el.type == "select-one") {
	            isValid = (el.selectedIndex > 0)
	        } else if (el.value.trim() != "") {
	            isValid = true;
	        }
	    }
	    return isValid; 
    }
    
    var getNext = function(el) {
        var els = el.getParent().getElements('.formerror');
        var nextEl = null;
        if(els.length > 0) {
            nextEl = els[0];
        } 
        return nextEl;
    }
    
    var showErrorMessage = function(el) {
       
        var nextEl = getNext(el);
		if(!nextEl || !nextEl.hasClass('formerror')) { 
		    var errorElement = new Element('span', { 'styles': { 'color': 'red', 'margin-left': '5px'},'class': 'formerror'});
		    errorElement.appendText(FORM_FIELD_REQUIRED);
		    el.getParent().adopt(errorElement);
		    
		    
		    if (document.getElementById('formerrormessage') != null) {
		        document.getElementById('formerrormessage').style.display = 'inline';
		    }
		}
    }
    
    var removeErrorMessage = function(el) {
       el.getParent().getElements('.formerror').removeElements();
    }
        
    return {
        __AbsolutePosition : function(obj) {
            var pos = null; 
            if(obj != null) {
                pos = new Object();
                pos.top = obj.offsetTop;
                pos.left = obj.offsetLeft;
                pos.width = obj.offsetWidth;
                pos.height= obj.offsetHeight;
          
                obj = obj.offsetParent;
                while(obj != null) {
                    pos.top += obj.offsetTop;
                    pos.left += obj.offsetLeft;
                    obj = obj.offsetParent;
                }
            }
            return(pos);
        },
        toggleMenu : function __ToggleItem(link, div) {
        alert('menu showing');
            var objLink = document.getElementById(link);
            var objDiv = document.getElementById(div);
            if(objDiv.style["display"] == "none") {
                var pos = messageLabsCommon.__AbsolutePosition(objLink);
                var top = pos.top + pos.height;
                var left = pos.left;
		        objDiv.style["position"] = "absolute";
		        objDiv.style["top"] = top + "px";
		        objDiv.style["left"] = left + "px";
                objDiv.style["display"] = "";
            }
            else {
                objDiv.style["display"] = "none";
            }
            return false;
        },        
        setCookie : function(name, value, domain) {
            var myCookie = name + '=' + encodeURIComponent(value);
            
            if (domain != "localhost")
                myCookie += "; domain=" + domain;
            
            myCookie += " ;path=/;" ;
            document.cookie = myCookie;
        },
        getCookie : function(name) {
            var expression = "(?:; )?" + name + "=([^;]*);?";
            var cookieExpression = new RegExp(expression);
            if(cookieExpression.test(document.cookie)) {
                return decodeURIComponent(RegExp.$1);
            } else {
                return null;
            }            
        },
        restore : function(guid) {
            var persistable = $ES(".persistable");
            var temp = Cookie.get("msglabs-persisted-fields");
            
            if (temp) {
                var values = temp.split(";");
                persistable.each(function(el, index) {
                    var id = "webform-" + el.id.replace(guid + "_","");
                    
                    var value = "";
                    for(i = 0; i < values.length; i++) {
                        var keyvalue = values[i].split("=");
                        if (keyvalue.length == 2) {
                            if (keyvalue[0] == id) {
                                value = keyvalue[1];
                                break;
                            }
                        }
                    }
                      
                    //check if there's a cookie matching this id
                    if (value) 
                        el.value = value;
                });
            }
        },
        save : function(guid) {
            var persistable = $ES(".persistable");
            var builder = new StringBuilder();
            persistable.each(function(el, index) {
                
                var id = "webform-" + el.id.replace(guid + "_", "");
                builder.append(id).append("=").append(el.value).append(";");
            });
            
            var cookieOptions = { duration: 60, path:'/' }; 
            if(COOKIE_DOMAIN != "localhost") cookieOptions.domain = COOKIE_DOMAIN;            
            Cookie.set("msglabs-persisted-fields", builder.toString(), cookieOptions);           
        },
        validate : function(guid) {
            var isValid = true;
	        var requiredElements = $ES(".required");
	     
	        try {
	            requiredElements.each(function(el, index) {
	            
		            if (el.id.match(guid) != null) {
		            
			            if(!filledIn(el)) {
				            showErrorMessage(el);
				            isValid = false;
			            } else {
			             try{
			                removeErrorMessage(el);
			                }catch(err1)
			                {
			                }
			            }
		            }
	            });
	        } catch(err) {
	            isValid = false;
	            alert(FORM_SUBMIT_ERROR);
	        }            	        
	        return isValid;        
        }
     };
}();


 var error = "";
var moz = (document.implementation && document.implementation.createDocument) ? true : false;
function loadXMLDoc(dname)
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
      xmlDoc.load(dname);
      return(xmlDoc);
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    xmlDoc=document.implementation.createDocument("","",null);
    xmlDoc.async=false;
      xmlDoc.load(dname);
      return(xmlDoc);
    }
    catch(e) {
  
      try //Google Chrome
      {
       if(window.XMLHttpRequest){
        xmldoc = new window.XMLHttpRequest();

        xmldoc.open("GET",dname,false)
        xmldoc.send("")
        return xmldoc.responseXML;
        }
      }
      catch(e)
      {
    
   
      }
  }
  }
    
    return(null);
}

