function yg_cookie(){
	var dc=document,a=[],c=[];
	if(dc.cookie.length>0){
		a=dc.cookie.split("; "),cl=a.length,ca=[];
		for(var i=cl-1;i>=0;i--){ca=a[i].split("=");c[ca[0]]=ca[1]}
	}
	this.getAll=function(){return a}
	this.get=function(n){return(c[n])?unescape(c[n]):0}
	this.set=function(n,v,e,p,d,s){
		v=escape(v);var today=new Date(),nv=n+"="+v;
		var str=nv+((e)?"; expires="+e:"")+((p)?"; path="+p:"")+((d)?"; domain="+d:"")+((s)?"; secure":"");
		if((n.length>0&&v.length>0)&&(((e)&&(e>today))||(!e))&&(nv.length<4000)){dc.cookie=str;a[a.length]=nv;c[n]=v;return 1}else return 0;
	}
	this.remove=function(n,p,d){
		if(c[n]){
			dc.cookie=n+"="+((p)?"; path="+p:"")+((d)?"; domain="+d:"")+"; expires=Thu, 01-Jan-1970 00:00:01 GMT";
			for(var i=a.length-1;i>=0;i--){if(a[i].indexOf(n)!=-1)a.splice(i,1)}c[n]=null;return 1;
		}else return 0;
	}
}
	//CREATE COOKIE - SET UP INITIAL COOKIE MAPPINGS
	var dacookie = new yg_cookie();
	var expirestime = new Date()
	expirestime.setTime(expirestime.getTime() + 60*60*24*365*10000);
	var temptabcookie = 'u=0';
	var initYNEWSFRONT = dacookie.get("YNEWSFRONT"); 
	var initYNEWSMYSRC = dacookie.get("YNEWSMYSRC");
	var assarr = new Array(); //CREATES DIRECT PATH TO COOKIE VALUE OF CATEGORY UNIQUE ID
	var mysrcarr = new Array(); //CREATES DIRECT PATH TO COOKIE VALUE OF MYSRC UNIQUE ID
	if(initYNEWSFRONT){	
		//SPLIT COOKIE INTO SUBCOOKIE THEN AGAIN INTO INDIVIDUAL CATEGORY NAME/VALUE ARRAY
		var split1 = initYNEWSFRONT.split('&'); //splits into subcookies "u=0&catid=nodekey&catid=nodekey" etc
		for(var subcookiekey in split1){
			var tempsplit = split1[subcookiekey].split('='); //split subcookie -> name values			
			for(var namekey in tempsplit){
				if(namekey == 0){//LOOPS 2x PER NAME/VALUE PAIR 0 & 1, only need once	
					var tempkey = String(tempsplit[0]);
					assarr[tempkey] = tempsplit[1];//ie assarr[716] = 5 (assarr[catid] = openTabKey)
				}
			}			
		}
	}
	if(initYNEWSMYSRC){	
		//SPLIT COOKIE INTO SUBCOOKIE THEN AGAIN INTO INDIVIDUAL NAME/VALUE ARRAY
		var split1 = initYNEWSMYSRC.split(','); //SPLITS VALUE OF COOKIE INDICATING OPEN MY SRC UNITS ONLY
		for(var c in split1){
			mysrcarr[split1[c]] = 1;//PUTS COOKIE ID INTO ARRAY, CHECK TRUE FALSE TO SEE IF IT SHOULD BE OPEN				
		}
	}else{//SET BLANK VAR TO BEGIN INITIAL COOKIE
		var mysrcNewCookie = new Array;
		var countsrc = 0;
		var mysrcString = "";
	}
	//END COOKIE STUFF
	
	function toggleinit(){
		if(!dacookie.get("YNEWSFRONT")) {
			//SET DEFAULT BLANK COOKIE
			dacookie.set("YNEWSFRONT",temptabcookie,expirestime);			
			//alert(temptabcookie);
		}
		if(!dacookie.get("YNEWSMYSRC")){
			mysrcString = mysrcNewCookie.join(",");
			//SET OPENED MYSRC COOKIE
			dacookie.set("YNEWSMYSRC",mysrcString,expirestime);
		}
	}
	
	function linkthesetabs(catid){
		var wrapper = document.getElementById(catid);
		var child1 = wrapper.firstChild;
		while(child1){
			if(child1.className == 'newscat'){
				var child2 = child1.firstChild; 
				while(child2){
					//FIX TOGGLES - DEACTIVATE HREFs - ADD JS FUNCTIONALITY
					if(child2.className == 'toggle'){							
						var liar = child2.getElementsByTagName('LI'); 							
						var liarlen = liar.length;
						var mysrcnode = liarlen - 1; 
						for(var nodekey = 0; nodekey < liarlen; nodekey++){							
							//<A> IS FIRSTCHILD OF LI, ADD ONCLICK CALL FUNCTION WITH JS, ADD PARAMETERS VIA OBJECT PROPERTIES TO SET COOKIES					 
							liar[nodekey].firstChild.onclick = opensaysme; //assign for toggle function 
							liar[nodekey].firstChild.catid = catid; //pass parent container id
							liar[nodekey].firstChild.nodekey = nodekey;	//position in tab set(and array)
							liar[nodekey].firstChild.mysrcnode = mysrcnode; //position of mysrc set(also array list array length)
							
							//liar[nodekey].firstChild.onmouseover = tt_go; //assign for tooltip function	
							//liar[nodekey].firstChild.onmouseout = tt_Hide; 	
							//liar[nodekey].firstChild.tooltipurl = ; //get HREF split at ; and use first part							
							//liar[nodekey].firstChild.event = ; //this might be hard, mouseevent. might not need it if i just get link X Y with yga DOM script			
						}
						//SET INITIAL TAB STATE WHEN PAGE LOADS
						//REMOVE "c" prefix, cause IE cant read an id that is numeric.
						var onkey = (assarr[ieIsWeak(catid)]) ? assarr[ieIsWeak(catid)] : 0; //check cookie for value to set initial tab position
						if(onkey != 0) liar[0].className = '';//default loads 0 position tab as "on" - if cookie says otherwise turn off	
						var prevkey = onkey - 1; 
						liar[onkey].className = 'on';
						if(prevkey > -1) liar[prevkey].className = 'last'; //"last" is neccesary to hide css border
						if(onkey != mysrcnode) liar[mysrcnode].className = 'last';							
					}
					
					//SET DISPLAY PROPERTIES OF HEADLINE PANELS ACCORDING TO TAB STATE
					if(child2.className == 'headlines'){
						var headlinear = child2.getElementsByTagName('DIV'); 	
	
						//ARRAY POSITION WILL MATCH BECAUSE OF LOAD ORDER - SET ONKEY PANEL TO DISPLAY					
						if(onkey > 0){
	                        // loop through all results and set class to moreheadlines
	                            var skipmysrc = headlinear.length - 1;
	                            for(var m=0; m<skipmysrc; m++){
	                                if (m == onkey){
	                                    headlinear[m].className = 'showheadlines';
	                                } else {
	                                    headlinear[m].className = 'moreheadlines';
	                                }
	                            }
						}
						
						//SET UP THE MYSRC ONCLICKs
						var mysrcobj = headlinear[mysrcnode]; 
						var mysrcheaders = mysrcobj.getElementsByTagName('H4');
						for(var i=0; i<mysrcheaders.length; i++){
							var mysrcparent = mysrcheaders[i].parentNode;
							var mysrckey = mysrcparent.id;
							mysrcheaders[i].onclick = openmysrc;//attach open/close function
							mysrcheaders[i].mysrckey = mysrckey;//unique key for mysrc module - on parent div id - can use this to call it later
							
							//CHECK TO SEE IF MYSRC UNIQUE ID IS A KEY IN THE OPEN SRC MOD ARRAY - open if yes
							if(!dacookie.get("YNEWSMYSRC")){
								if(mysrcparent.className == "ynmysrcunit open"){//IF OPEN AND NO COOKIE: ADD VALUE TO COOKIE STRING
									mysrcNewCookie[countsrc++] = ieIsWeak(mysrckey);														
								}
							}else{//IF COOKIE CHECK IF CURRENT ID IS IN THE COOKIE: OPEN
								if(mysrcarr[ieIsWeak(mysrckey)]){
									mysrcparent.className = "ynmysrcunit open";
								}else{
									mysrcparent.className = "ynmysrcunit";
								}
							}				
						}
					}
					
					//more PRoviders panel only applys to Top Stories - open unless mysrc tab open
					if(child2.className == 'moreproviders'){
						child2.style.display  = (onkey == mysrcnode) ? 'none' : 'block'; 
					}
					child2 = child2.nextSibling;
				}
			}
			child1 = child1.nextSibling;
		}
		if (!dacookie.get("YNEWSFRONT")){
			temptabcookie+= '&' + ieIsWeak(catid) +'=' + 0;  
		}
	}
	function opensaysme(){	 
		//THIS FUNCTION IS WHAT IS ATTACHED TO TOGGLE LINKS TO ACTIVATE STATE CHANGING AND CONTENT SWAPPING
		var thiscookieID = this.catid;//container unique
		var onnodekey = this.nodekey;//on tab array position
		var mysrcnode = this.mysrcnode;//tab array length (last position)
	    var tempor = document.getElementById(thiscookieID);
		//GET COOKIE PUT IN ARRAY, RESET ARRAY WITH NEW VALUE, EVERYTIME - GAWWD!
		var n = 'YNEWSFRONT'; //cookie name
		var v = 'u=0'; //dummy var just to start things off
		var e = expirestime; //expirestime.toGMTString(); //expiration DATE OBJECT
		var p = ''; //path
		var d = ''; //'news.yahoo.com'; 
		var s = ''; //secure or not 
			
		var YNEWSFRONT = dacookie.get("YNEWSFRONT");
		if(YNEWSFRONT){
			var split1 = YNEWSFRONT.split('&'); //splits into subcookies
			for(var subcookiekey in split1){
				var tempsplit = split1[subcookiekey].split('='); //split subcookie name = values
				for(var namekey in tempsplit){
					//START REBUILDING COOKIE BUT REPLACE VALUE OF THIS CATEGORY WITH CURRENT ON TAB NODEKEY
					if(namekey == 0){					
						if(tempsplit[0] != 'u'){
							if(tempsplit[0] == ieIsWeak(thiscookieID)){
								v+= '&' + tempsplit[0] + '=' + onnodekey;
							}else{
								v+= '&' + tempsplit[0] + '=' + tempsplit[1];
							}
						}
					}	
				}
			}
		}
		dacookie.remove('YNEWSFRONT');//NEED TO REMOVE BEFORE RESET
		dacookie.set(n,v,e,p,d,s);//SET NEW COOKIE
		//END COOKIE
		var wrapper = document.getElementById(thiscookieID);
	    var child1 = wrapper.firstChild;
		while(child1){				
			if(child1.className == 'newscat'){
				var child2 = child1.firstChild; 
				while(child2){
					if(child2.className == 'toggle'){						
						var liar = child2.getElementsByTagName('LI'); 							
						var liarlen = liar.length;
						for(var nodekey = 0; nodekey < liarlen; nodekey++){							
							liar[nodekey].className = '';		
						}
						
						//MAKE SURE LAST TAB ALWAYS HAS CLASS LAST UNLESS IT IS ON
						var prevkey = onnodekey - 1; 
						liar[onnodekey].className = 'on';
						if(prevkey > -1) liar[prevkey].className = 'last'; 
						if(onnodekey != mysrcnode) liar[mysrcnode].className = 'last';		
					}
					
					if(child2.className == 'headlines'){
	
					/*****************ENCAPSULATE THIS INTO ANOTHER FUNCTION FOR AJAX LATER ON***************/
						var headlinear = child2.getElementsByTagName('DIV'); 							
						for(z = 0; z < headlinear.length; z++){
							if(headlinear[z].className == 'showheadlines'){
								headlinear[z].className = 'moreheadlines';
							}
						}								
						headlinear[onnodekey].className = 'showheadlines';
					/*****************ENCAPSULATE THIS INTO ANOTHER FUNCTION FOR AJAX LATER ON***************/
					}
					
					if(child2.className == 'moreproviders'){
						child2.style.display = (onnodekey == mysrcnode) ? 'none' : 'block'; 
					}
					child2 = child2.nextSibling;
				}
			}
			child1 = child1.nextSibling;
		}	
		return false; 	
	}
	
	function openmysrc(){
		var mysrckey = this.mysrckey;	
		//GET COOKIE PUT IN ARRAY, RESET ARRAY WITH NEW VALUE, EVERYTIME - GAWWD!
		var n = 'YNEWSMYSRC'; //cookie name
		var v = ''; //
		var e = expirestime; //expirestime.toGMTString(); //expiration DATE OBJECT
		var p = ''; //path
		var d = ''; //'news.yahoo.com'; //domain
		var s = ''; //secure or not 
			
		var YNEWSMYSRC = dacookie.get("YNEWSMYSRC");
		var mysrcNewCookie = new Array;
		var mysrcOpen = new Array;
		if(YNEWSMYSRC){
			var valarr = YNEWSMYSRC.split(','); //splits values
			for(var themysrckey in valarr){
				if(valarr[themysrckey] != ""){
					//THIS ONE IS SO I CAN USE array.splice ON STRING
					mysrcNewCookie[themysrckey] = valarr[themysrckey];
					//THIS IS SO I CAN DO A ONE STOP LOOKUP FOR EXISTING VALUES
					mysrcOpen[valarr[themysrckey]] = themysrckey;
				}
			}
		}
		//END COOKIE FOR NOW SEE BELOW FOR MORE 
		
		var dasrc = document.getElementById(mysrckey);
		
		//THIS IS FOR DOING THE COOKIE
		if(mysrcOpen[ieIsWeak(mysrckey)]){//IF CURRENT ID IS IN COOKIE: REMOVE
			var removekey = mysrcOpen[ieIsWeak(mysrckey)];
			var dumpfromarray = mysrcNewCookie.splice(removekey,1);//(startindex, howmany to remove after startindex)	
		}else{//ADD
			mysrcNewCookie.push(ieIsWeak(mysrckey));
		}
		//IMPLODE NEW OPEN MYSRC COOKIE STRING -/+ CLICKED ON ID
		v = mysrcNewCookie.join(",");
		dacookie.remove('YNEWSMYSRC');//NEED TO REMOVE BEFORE RESET
		dacookie.set(n,v,e,p,d,s);	
		//EVERY CLICK OF THE MYSRC TAB WILL RESAVE COOKIE									
			
		if(dasrc.className == 'ynmysrcunit') dasrc.className = 'ynmysrcunit open';
		else dasrc.className = 'ynmysrcunit';							
		
		return false; 
	}
	
	function ieIsWeak(anid){//IE CANT DO document.getElementById if id is a numeric value WTf?
		if(anid.indexOf("my") > -1){
			return anid.substr(2,anid.length);
		}else{
			return anid.substr(1,anid.length);
		}
	}
	function loadingmsg(){
		var thiscookieID = this.catid;//container unique
	    var block = thiscookieID.substring(1);
	    var headlinekey = "h" + block;
	    var headlinecont = document.getElementById(headlinekey);
	    var headarr = headlinecont.childNodes;
	    for(var j=0; j<headarr.length; j++){
	        if (headarr[j].className == 'showheadlines') {
	            var msg = "Content loading..."
	            headarr[j].innerHTML = msg;
	        }
	    }
	    	return false; 
	}
	function linktabstemp(catid){
		var wrapper = document.getElementById(catid);
		var child1 = wrapper.firstChild;
		while(child1){
			if(child1.className == 'newscat'){
				var child2 = child1.firstChild; 
				while(child2){
					if(child2.className == 'toggle'){							
						var liar = child2.getElementsByTagName('LI'); 							
						var liarlen = liar.length;
						var mysrcnode = liarlen - 1; 
						for(var nodekey = 0; nodekey < liarlen; nodekey++){							
							liar[nodekey].firstChild.onclick = loadingmsg; //assign for toggle function 
							liar[nodekey].firstChild.catid = catid; //pass parent container id
							liar[nodekey].firstChild.nodekey = nodekey;	//position in tab set(and array)
							liar[nodekey].firstChild.mysrcnode = mysrcnode; //position of mysrc set(also array list array length)
						}
					}
					
					child2 = child2.nextSibling;
				}
			}
			child1 = child1.nextSibling;
		}
	}