/*
 * Baynote Observer for att.com
 * Last updated: August 25, 2009
 */
var bn_searchEnabled = true;
var bn_policyLoaded = false;
function bn_isNotEmpty(name) {
	return (name != null) && (name != "");
}
function bn_getCookie(c_name) {
	if (document.cookie.length>0) {
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1) { 
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}
function bn_setCookie(c_name,c_value,c_domain,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	if (c_domain != null && c_domain != "") {
		document.cookie = c_name+"="+escape(c_value)+";domain="+c_domain+";path=/"+((expiredays==null)?"":";expires="+exdate.toGMTString());
	} else {
		document.cookie = c_name+"="+escape(c_value)+";path=/"+((expiredays==null)?"":";expires="+exdate.toGMTString());
	}
}
function bn_getOrderInfo() {
	if (typeof(bnOrderId) != "undefined" && bn_isNotEmpty(bnOrderId)) {
		baynote_tag.attrs.purchaseId = bnOrderId;
		if (typeof(bnOrderTotal) != "undefined" && bn_isNotEmpty(bnOrderTotal)) {
			baynote_tag.attrs.totalPurchases = parseFloat(bnOrderTotal);
			baynote_tag.specialTarget = true;
		}
		if (typeof(bnOrderDetails) != "undefined" && bn_isNotEmpty(bnOrderDetails)) {
			baynote_tag.attrs.purchaseDetails = bnOrderDetails;
		}
		if (typeof(bnOrderType) != "undefined" && bn_isNotEmpty(bnOrderType)) {
			baynote_tag.attrs.purchaseType = bnOrderType;
		}
	}
}
function bn_getCustomerInfo() {
	if (typeof(bnCustomerType) != "undefined" && bn_isNotEmpty(bnCustomerType))
		baynote_tag.attrs.customerType = bnCustomerType;
}
function bn_getMeta(meta_name) {
	var metas = document.getElementsByTagName("meta");
	if (!metas) return;
	for (var i = 0; i < metas.length; i++) {
		if (!metas[i]) return;
		if (metas[i].name.toLowerCase() == meta_name.toLowerCase()) {
			return metas[i].content;
		}
	}
}
function bn_removeHtml(raw) {
	raw = raw.replace(/\<[^>]*\>/g, "");
	raw = raw.replace(/\<.*/, "");
	raw = raw.replace(/\ /g, " ");
	raw = raw.replace(/^\s+/, "");
	raw = raw.replace(/\s+$/, "");
	raw = raw.replace(/\n/g, " ");
	raw = raw.replace(/\s+/m, ' ') ;
	return raw;
}
function bn_getAnsCtrSummary() {
	var paragraphs = document.getElementsByTagName("dt");
	if (!paragraphs) return;
	for (var i=0; i<paragraphs.length; i++) {
		if (!paragraphs[i]) return;
		if (paragraphs[i].innerHTML != "") {
			var summary = bn_removeHtml(paragraphs[i].innerHTML);
			if (summary.indexOf("Answer") >= 0 || summary.indexOf("Fix") >= 0) {
				if (summary.length > 180) summary = summary.substring(0,180) + "...";
				if (summary != "") return summary;
			}
		}
	}
}
function bn_getAskAttInfo() {
    var info = getElementsByClassName("solution", "div")[0];
    var title = info.getElementsByTagName("h2")[0].innerHTML;
    var summary = info.getElementsByTagName("p")[0].innerHTML;
    baynote_tag.title = title;
    baynote_tag.summary = summary;
}
function bn_getAskCategoryInfo() {
    var info = getElementsByClassName("content", "div")[0];
    var title = info.getElementsByTagName("h2")[0].innerHTML;
    var summary = info.getElementsByTagName("p")[0].innerHTML;
    baynote_tag.title = title;
    baynote_tag.summary = summary;
}
function bn_getSummary() {
	var bn_locHref = window.location.href;
	var bn_metaDesc = bn_getMeta("baynote_summary");
	
	if (!bn_isNotEmpty(bn_metaDesc)) {
	    bn_metaDesc = bn_getMeta("description");
	}
	
	if (bn_isNotEmpty(bn_metaDesc)) {
		baynote_tag.summary = bn_metaDesc; 
	} else if (bn_locHref.indexOf("/answer-center/") > 0 || bn_locHref.indexOf("/support/") > 0) {
		var bn_ansDesc = bn_getAnsCtrSummary();
		if (bn_isNotEmpty(bn_ansDesc)) {
			baynote_tag.summary = bn_ansDesc; 
		}
	} else if (bn_locHref.indexOf("ask.att.com/") > 0 && bn_locHref.indexOf("session=") > 0) {
	    bn_getAskAttInfo();
	} else if (bn_locHref.indexOf("ask.att.com/") > 0 && bn_locHref.indexOf("action=category") > 0) {
	    bn_getAskCategoryInfo();
	} 
}
function bn_getAttrs() {
    var cookie = bn_getCookie("attPersistantLocalization");
    var keys = cookie.split("|");
    for (var i = 0; i < keys.length; i++) {
    	var value = keys[i].substring(keys[i].indexOf("=")+1, keys[i].length);
    	if (keys[i].search("ltype") == 0) {
            baynote_tag.docAttrs.ltype = value;
        } else if (keys[i].search("segment") == 0) {
            baynote_tag.docAttrs.segment = value;
        } else if (keys[i].search("company") == 0) {
    	    baynote_tag.docAttrs.company = value;
   		} else if (keys[i].search("state") == 0) {
            baynote_tag.docAttrs.state = value;
    	}
    }
}
function bn_showObserver() {
	var bn_locHref = window.location.href;
	if (bn_locHref.indexOf("https://") == 0) {
		baynote_tag.server = "https://attwireless-www.baynote.net";
	} else {
		baynote_tag.server = "http://attwireless-www.baynote.net";
	}
	baynote_tag.customerId = "attwireless";
	baynote_tag.code = "www";
	baynote_tag.type = "baynoteObserver";
	if (bn_locHref.indexOf(".att.com") > 0) {
	    baynote_globals.cookieDomain = "att.com";
	} else if (bn_locHref.indexOf(".bellsouth.com") > 0) {
	    baynote_globals.cookieDomain = "bellsouth.com";
	} else if (bn_locHref.indexOf(".sbc.com") > 0) {
	    baynote_globals.cookieDomain = "sbc.com";
	}
	bn_getOrderInfo();
	bn_getCustomerInfo();
	bn_getSummary();
	if (bn_locHref.match(/^https?:\/\/www\.wireless\.att\.com\//)) { }
	else { bn_getAttrs(); }
	baynote_tag.show();
}
function bn_checkPolicy() {
	if (!bnPolicy.get("guide","ok")) {
		bn_searchEnabled = false;
		bn_setCookie('bn_search','false',baynote_globals.cookieDomain,90);
	} else {
		bn_setCookie('bn_search','true',baynote_globals.cookieDomain,90);
	}
	bn_policyLoaded = true;
}
function bn_waitForPolicy() {
	if(typeof(bnResourceManager) != "undefined" && bnResourceManager != null) {
		bnResourceManager.waitForResource("Policy", function() { bn_checkPolicy(); });
	}
}
if(typeof(baynote_tag)!="undefined") {
	bn_showObserver();
	bn_waitForPolicy();
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
function getElementsByClassName (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};