//NAMESPACE IT TO AVOID ANY POSSIBLE CONFLICTS
memberServices={};

memberServices.initAjaxObject = {
	oXHR:null,


	//INIT FUNCTION CALLED WITH WINDOW ONLOAD EVENT, THIS WILL ENFORCE THE INITIALIZATION OF ONLY ON AJAX OBJECT TO BE SHARED
	init: function(){
		//ASSIGN REFERENCE TO AN AJAX OBJECT
		memberServices.initAjaxObject.oXHR = new memberServices.AjaxObject();
	},

	xmlHttpPost:function(refObj){
		try{
			memberServices.AjaxObject.prototype.xmlhttpPost(memberServices.initAjaxObject.oXHR, refObj);
		}catch(oError){
			throw new Error("Error executing call");

		}

	}
};
//AJAX OBJECT -HYBRID CONSTRUCTOR/PROTOTYPING METHODOLOGY
memberServices.AjaxObject = function(){
	var _self = this;
	_self.xmlHttpReq=false;
	var _oxhr=null;

	// Mozilla/Safari
	if (typeof XMLHttpRequest != 'undefined'){
		_oxhr= new XMLHttpRequest();
		 _self.xmlHttpReq=_oxhr;
		return _self.xmlHttpReq;
	}else if (window.ActiveXObject){
		var aVersions = ["MXSML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0", "Microsoft.XMLHTTP"];

		for (var i=0; i<aVersions.length; i++){
			try{
				_oxhr= new ActiveXObject(aVersions[i]);
				_self.xmlHttpReq=_oxhr;
				return _self.xmlHttpReq;
			}catch (oError){
				 //do nothing let the iteration continue
			}
		}
	}

};

memberServices.AjaxObject.prototype={

	xmlhttpPost:function(oXHR, refObj){
		var _self = this;

		oXHR.open('get', refObj.strUrl, true);
		oXHR.onreadystatechange = function() {
			if (oXHR.readyState == 4){
				if (oXHR.status == 200 || oXHR.status == 304) {
					refObj.updatePage(oXHR.responseText);
				}
			}
		}
		oXHR.send(encodeURI(refObj.qryStr));
	}

};

memberServices.Member ={
	strUrl:null,
	callee:null,

	init:function(refObj){
		memberServices.Member.strUrl = refObj.strUrl;
		memberServices.Member.callee = refObj.name

		var green = memberServices.Member.getCookie("GREEN");
		var swid = memberServices.Member.getCookie("SWID");

		if (green != null && green != ""){
			memberServices.Member.getLGScript();
		}

	},

	getCookie:function(name){
		var cookies = document.cookie.split("; ");
		for (var i=0; i < cookies.length; i++) {
			cookie = cookies[i].split("=");
			if (cookie[0] == name) return cookie[1];
		}
		return null;
	},

	getMarkup:function(uN,fN,lG,sD,tM27,tM289,tM290,tM749){
		memberServices.Member.getMemberInfo(fN, sD, tM27,tM289,tM290,tM749)
	},

	getLGScript:function(){
		var cacheStamp = new Date();
		var cacheBuster = cacheStamp.getTime();
		var lgScript = document.createElement("script");
		lgScript.type = 'text/javascript';
		lgScript.src = 'http://insider.espn.go.com/insider/access/unilogin?cb=memberServices.Member.getMarkup&rand='+cacheBuster;
		var headObj = document.getElementsByTagName("head").item(0);
		try {
			headObj.appendChild(lgScript);
		}
		catch (e) {
			setTimeout(function(){memberServices.Member.getLGScript()}, 100);
		}
		//alert();
	},

	getMemberInfo:function(firstName, swid, tM27,tM289,tM290,tM749){
		_self = null;

		if (memberServices.Member.callee == "MemberSince"){
			_self = memberServices.MemberSince;
			if(tM27 == 1 || tM289 == 1 || tM290 == 1 || tM749 ==1){
				_self.qryStr = "firstName="+firstName+"&SWID="+escape(swid)
				_self.strUrl = _self.strUrl + "?"+_self.qryStr
				memberServices.initAjaxObject.xmlHttpPost(_self);
			}

		}else{
			_self = memberServices.FormInfo;
			_self.qryStr = "firstName="+firstName+"&SWID="+escape(swid)
			_self.strUrl = _self.strUrl + "?"+_self.qryStr
			memberServices.initAjaxObject.xmlHttpPost(_self);
		}



	}
};
//WILL REQUIRE ME TO CHANGE FUNCTION CALL IN STORY2007 & BLOG
memberServices.MemberSince ={
	name:"MemberSince",
	qryStr:null,
	strUrl:"http://"+document.domain+"/insider/memberservices/memberSince",

	updatePage:function(sStr){
			memberSinceHTML = document.getElementById("memberSincePH")
			if (memberSinceHTML != null){
				memberSinceHTML.innerHTML=sStr;
				memberSinceHTML.style.display="block";
				document.getElementById("memberSincePH").innerHTML =sStr;
			}
	},
	run:function(){
		memberServices.initAjaxObject.init();
		memberServices.Member.init(memberServices.MemberSince);
	}
};

memberServices.FormInfo ={
	name:"FormInfo",
	qryStr:null,
	strUrl:"http://"+document.domain+"/insider/memberservices/memberInfoPreview",

	updatePage:function(sStr){
			document.getElementById("newLogin").innerHTML =sStr;
	},
	run:function(){
		memberServices.initAjaxObject.init();
		memberServices.Member.init(memberServices.FormInfo);
	}
};
memberServices.EventUtil ={

	addEventHandler:function (oTarget, sEventType, fnHandler){
		if (oTarget.addEventListener){//Dom Compliant Browsers
			oTarget.addEventListener(sEventType, fnHandler, false);
		}else if (oTarget.attachEvent){
			oTarget.attachEvent("on" + sEventType, fnHandler);
		}else{
			oTarget["on" + sEventType] = fnHandler;
		}
	},

	removeEventHandler:function (oTarget, sEventType, fnHandler){
		if (oTarget.removeEventListener){
			oTarget.removeEventListener(sEventType, fnHandler, false);
		}else if (oTarget.detachEvent){
			oTarget.detachEvent("on" + sEventType, fnHandler);
		}else{
			oTarget["on" + sEventType] = null;
		}
	}
};