/*
###########################################################
I F   Y O U   M O D I F Y   T H I S   F I L E,  B E   
S U R E  T O   U P D A T E   M C B S   S T R I N G   I N   
Y O U R   P A G E
             
###########################################################
*/
// Create TWCI namespace with YAHOO as prototype
function object(o){
  function F(){};
  F.prototype = o;
  return new F();
}

window.TWCI = YAHOO;
var Cookie = TWCI.util.Cookie,
    Selector = TWCI.util.Selector,
    Event = TWCI.util.Event,
    Dom = TWCI.util.Dom;



// Create TWCI.BEACONS with the fireBeacon and firePageletError methods
TWCI.namespace("BEACONS");
TWCI.BEACONS.fireBeacon = function(config){
 var bDomain = "http://b.imwx.com/b/";
   	var _o = document.createElement("img");
    	_o.setAttribute("class","yui-hidden");
    	_o.src=bDomain+config;
    	document.body.appendChild(_o);
 }
TWCI.BEACONS.firePageletError = function(pageid,pagelet,status){
	var config = ["error?type=pagelet","&pageID=",pageid,"&pagelet=",pagelet,"&statusCode=",status].join('');
	TWCI.BEACONS.fireBeacon(config);
 }

YAHOO.namespace("weather.Events");
YAHOO.weather.Events.pcoLocChanged = new YAHOO.util.CustomEvent("pcoLocChanged");


function getASIValue() {
	var asiVals = [];
	var asi = Cookie.get("rsi_segs");
	// split on |
	var vals1 = (asi) ? asi.split('|') : [];
	for(i=0;i<vals1.length;i++) {
		// split on _ (take number 2)
		var vals2 = vals1[i];
		var tmp = vals2.split('_');
		asiVals.push(tmp[1]);
	}
	return asiVals;
}

function findAgeRange(age) {

        var ageRange = [];
        age = parseInt(age, 10);
        if (isNaN(age)) {
            return '';
        }
        if (age >= 18 && age <= 24) {
            ageRange.push('1824');
        }
        if (age >= 18 && age <= 34) {
            ageRange.push('1834');
        }
        if (age >= 18 && age <= 49) {
            ageRange.push('1849');
        }
        if (age >= 21 && age <= 34) {
            ageRange.push('2134');
        }
        if (age >= 25 && age <= 49) {
            ageRange.push('2549');
        }
        if (age >= 25 && age <= 54) {
            ageRange.push('2554');
        }
        if (age >= 35 && age <= 54) {
            ageRange.push('3554');
        }
        if (age >= 18 && age <= 99) {
            ageRange.push('18u');
        }
        if (age >= 25 && age <= 99) {
            ageRange.push('25u');
        }
        if (age >= 35 && age <= 99) {
            ageRange.push('35u');
        }
        if (age >= 45 && age <= 99) {
            ageRange.push('45u');
        }
        if (age >= 50 && age <= 99) {
            ageRange.push('50u');
        }
        if (age >= 55 && age <= 99) {
            ageRange.push('55u');
        }
        if (age >= 65 && age <= 99) {
            ageRange.push('65u');
        }
        if (age >= 45 && age <= 65) {
            ageRange.push('bybm');
        }
        if (age >= 30 && age <= 44) {
            ageRange.push('genx');
        }
        if (age >= 21 && age <= 29) {
            ageRange.push('geny');
        }
        return ageRange;
    }

	function getDeclarationDFP(state){

switch(state) {
        case"AchesAndPains":            return "fam=hlth;ch=pain";break;
        case"Allergies":                return "fam=hlth;ch=algy";break;
        case"AirQuality":               return "fam=hlth;ch=airq";break;
        case"ColdAndFlu":               return "fam=hlth;ch=flu";break;
        case"SunSafety":                return "fam=hlth;ch=skin";break;
        case"Fitness":                  return "fam=hlth;ch=fit";break;
        case"Health":                   return "fam=hlth";break;
        case"BusinessTravel":           return "fam=trvl;ch=biz";break;
        case"VacationPlanner":          return "fam=trvl;ch=vac";break;
        case"Driving":                  return "fam=drv;ch=istate";break;
        case"SportingEvents":           return "fam=sprts;ch=evt";break;
        case"Weddings":                 return "fam=hnf;ch=wed";break;
        case"Golf":                     return "fam=sprts;ch=golf";break;
        case"Ski":                      return "fam=sprts;ch=ski";break;
        case"BoatAndBeach":             return "fam=outd;ch=bnb";break;
        case"Outdoors":                 return "fam=outd;ch=out";break;
        case"HomePlanner":              return "fam=hnf;ch=home";break;
        case"Lawn":                     return "fam=hnf;ch=lawn";break;
        case"Pets":                     return "fam=hnf;ch=pets";break;
        case"Schoolday":                return "fam=hnf;ch=schd";break;
        case "LivingSmart":             return "fam=clim;ch=green";break;
        //family declarations
        case "Travel":                  return "fam=trvl";break;
        case "HealthyLiving" :          return "fam=hlth";break;
        case "OutdoorActivity":         return "fam=outd";break;
        case "Sports":                  return "fam=sprts";break;
        case "Climate":                 return "fam=clim";break;
        case "Home":                    return "fam=hnf";break;
        default:                        return "";
        }
}

	function getUPSlot(slotNo){
        var slotValue = Cookie.get("UserPreferences",function(str){
        	if(str.indexOf("%7C")>0) {
        		return str.split("%7C")[slotNo];  
        	} else {
          		return str.split("|")[slotNo];
          	}
        });
        return slotValue
      }
	function convertAge(dob) {
		var d = new Date();
		var curr_year = d.getFullYear();
		return curr_year-dob;
	}

	function getGender() {
		//var tempSex = "nl";
		if(getUPSlot(14) != null) {
			tempSex = getUPSlot(14).toLowerCase();
			tempSex = tempSex.replace("+", "");
			if(tempSex==="f" || tempSex==="m") {
			  return tempSex;
			} else {
			  return "nl";
			}
		} else {
			return "nl";
		}

	}
	var uInfo=Cookie.get("i");
	function getUserSign() {
		uInfo=Cookie.get("i");
		if (null==uInfo) uInfo="0^noId";
		return uInfo;
	}

		var appsInfo=Cookie.get("a");
		if(appsInfo === null || ('"' === appsInfo.charAt(1)) ){
			appsInfo = [];
		}else if(appsInfo !== ""){
			appsInfo= appsInfo.split("^");
			for(var i=0;i<appsInfo.length;i++){
			  if(appsInfo[i] == ""){
				appsInfo.splice(i,1);
			  }
			}
    }

	/*****  NEW LOGIC FOR DFP *****/
	if (null == wx) var wx = {};

	// Initial creation of object structure
	wx.config = {
	    page: {},
	    user: {},
	    ad: {},
	    loc: {},
	    wx: {},
	    bc:[]
	};

	wx.config.page = {
		pageId:"",
		pageURL:"",
		version:"",
		sev:gnSiteMode,
		fromStr:Cookie.get("fromStr"),
		pif_timeframe:"",
		serverdate:"",
		servertime:"",
		env:(location.href.match(/preview/))? ["preview:",location.host.replace(".weather.com","")].join("") : ["live:",location.host.replace(".weather.com","")].join("")
	};

      var locInfo=Cookie.get("l");
      var locs=null; 
      if (null==locInfo){
          locs=[];
      }else{
          var lastPos=locInfo.length-1;
          if ('"' == locInfo.charAt(lastPos))
          {
              locInfo=locInfo.substring(0,lastPos);
          }
          locs=locInfo.split("^");
          locs.shift();
      }
      var baseMapInfo=Cookie.get("b");
      if (null==baseMapInfo) baseMapInfo="r";
   	  var unitInfo=Cookie.get("u");
      if (null==unitInfo) unitInfo="e";

	wx.config.user = {
		age: findAgeRange(convertAge(getUPSlot("13"))),
		gender: getGender(),
		asi: getASIValue(),
		view: "",
		cobrand: Cookie.get("partner"),
		decl: getDeclarationDFP(getUPSlot("16")),
		entry: "",
		skin: "",
		installed: "",
		signature:getUserSign(),
		userid: getUserSign().split("^")[1],
		timestamp: getUserSign().split("^")[0],
		savedLocs: locs,
		unit: unitInfo,
		apps: (appsInfo !== null) ? appsInfo:[],
		basemap: baseMapInfo,

		ursId: getUPSlot("2"),
		signedIn: Cookie.get("Ticket_web"),
		products: (getUPSlot("1") != null)? getUPSlot("1").split("^"):[],
		rmid: (Cookie.get("RMID")!==null) ? Cookie.get("RMID") : "",

		claritas: getUPSlot("33")


	};


	wx.config.loc = {
		gpr: "",
		country: "",
		state: "",
		city: "",
		dma: "",
		zip: "",
		countryName: "",
		locname: "",
		type: "",
		claritas: ""
	};
	/* setup My Locations */
	
	//Check to see if search is a recent search
	var rnd = Math.floor(Math.random()*10000000001);
	var _pageletLoc = (wx.config.user.signature.match(/^0\^noId/)) ? 'http://www.weather.com/pagelet/loc/?absUrl=true&rnd='+rnd : 'http://www.weather.com/pagelet/loc/?i='+wx.config.user.signature+'&absUrl=true&rnd='+rnd,
		_reqType = 'GET',
		_fromString = wx.config.page.fromStr,
		_locationId = wx.config.page.locId;
	if (_locationId != "") {
		if (_fromString == "searchbox_typeahead" || _fromString == "hdr_localsearch" || _fromString == "enhsearch" || _fromString == "enhsearch_didyoumean" || _fromString == "enhsearch_drilldown") {
			_pageletLoc = 'http://www.weather.com/pagelet/loc/'+_locationId+'?pad&absUrl=true&rnd='+rnd;
			_reqType = 'POST';
		}
	}
	if (_fromString == "hdr_trptsearch") {
		_pageletLoc = 'http://www.weather.com/pagelet/loc/'+wx.config.page.locId+'?pad&absUrl=true&rnd='+rnd;
		_reqType = 'POST';
	}
	// Make XDR
	TWCI.util.Connect.xdrReadyEvent.subscribe(function(){
	try{
		TWCI.util.Connect.asyncRequest(_reqType, _pageletLoc, {
			success:function(o) {
				var O = o.responseText;
				Event.onAvailable("save-locations",function(){
					Dom.get("save-locations").innerHTML = O;
					if(navigator.appCodeName === "Mozilla"){
						var locs = Selector.query(".twc-weather-location","twc-weather-locations-id");
						for(i = 0;i<locs.length;i++){
							ellipsis(locs[i]);
						}		
					}
				});
			},
			failure:function(o) {
				// Failure handler
				//alert(o.responseText);
			},
			cache:false,
			xdr: true
		});
	}catch(e){try{console.log(e)}catch(error){}};
	});
	// Initialize the Flash Transport for XDR
	TWCI.util.Connect.transport('http://www.weather.com/connection.swf');
	
	wx.config.metrics = {};
	wx.config.metrics.acct = "twciwx";
	
	
// Make JSON call to query metrics ts_omniture_properties table and populate wx.config.metrics
	/**** END DFP LOGIC BLOCK ****/

wx.config.page.pageId = ts_pageid; // This variable changes per url
wx.config.user.modeid = "default";

YAHOO.namespace("metrics");

YAHOO.metrics.createMetrics = function(json){
    var wcm = wx.config.metrics;
    wcm.level1=(json.level1 != "") ? json.level1 : "UNCATEGORIZED";
    wcm.level2=json.level2;
    wcm.level3=json.level3;
    wcm.level4=json.level4;
    wcm.level5=json.level5;
    wcm.level6=json.level6;
    wcm.contentType=json.contentType;
    wcm.detail=json.detail;
    wcm.title=json.title;
    wcm.pagename=(json.pagename != "") ? json.pagename : "uncategorized";
    wcm.adCategory=json.ad_category;
    wcm.adFamily=json.ad_family;
    wcm.adChannel=json.ad_channel;
    wcm.adSubchannel=json.ad_subchannel;
    wcm.modeId="default";

};
Get.script("http://www.weather.com/pagelet/metrics/?pageID=" + wx.config.page.pageId + "&modeID="+wx.config.user.modeid+"&cb=YAHOO.metrics.createMetrics",{
  onSuccess: function(o){
    o.purge();
    Get.script("http://d.imwx.com/js/wx-metrics.js" ,{
      onSuccess: function(o){
        o.purge();
      }
    });
  },
  onFailure: function(o){
    alert("Failed to load metrics json");
  },
  scope: this
});

// Custom event for updating wx.config.user.savedLocs
YAHOO.weather.Events.pcoLocChanged.subscribe(function(){
	s.prop29 = wx.config.user.savedLocs.length + "^" + wx.config.user.savedLocs.join("^") + "^";
	sc_trackAction(this,"locsave_"+s.prop29, null);
});




//A21.initStatic();
