textSizing = function(){
	this.linkSm = Element.get("smLink");
	this.linkLg = Element.get("lgLink");
	this.articleContainer = Element.get("articleContainer");
	this.subColumn = Element.get("subColElement");
	
	if(this.linkSm && this.linkLg){
		this.linkSm.style.color = "#797979";
		this.articleExist = true;
	} else {
		this.articleExist = false;
	}
}

textSizing.prototype.AttachEvents = function(){
	if(this.articleExist){
		Events.add({
			element: this.linkSm,
			type: "click",
			handler: this.SwapTextSize,
			context: this
		});
		
		Events.add({
			element: this.linkLg,
			type: "click",
			handler: this.SwapTextSize,
			context: this
		});
	}
}

textSizing.prototype.SwapTextSize = function(ev, el){
	if(el.id == "lgLink"){
		var fontSize = '11px';
		this.linkLg.style.color = "#797979";
		this.linkSm.style.color = "#064599";
	}
	else{
		var fontSize = "10px";
		this.linkSm.style.color = "#797979";
		this.linkLg.style.color = "#064599";
	}
	
	this.articleContainer.style.fontSize = fontSize;
}

function InitTextSizing(){
	var sizing = new textSizing();
	sizing.AttachEvents();
}

var address = String(window.location);
if(address.indexOf("article.asp") > -1){
	Events.add({
		element: window,
		type: "load",
		handler: InitTextSizing
	});
}

industryDropDown = function(){
	this.sectorSelect = Element.get("sectorSelect");
	this.industrySelect = Element.get("industrySelect");
	
	this.serializer = new Serializer();
	this.cBuffer = new ContentBuffer();
}

industryDropDown.prototype.AttachEvents = function(){
	Events.add({
		element: this.sectorSelect,
		type: "change",
		handler: this.GetIndustryList,
		context: this
	});
}

industryDropDown.prototype.GetIndustryList = function(ev, el){
	if(el.value){
		this.cBuffer.load({
			url: "/businessweek/research/common/news/news_buffer.asp",
			data: {code: el.value},
			contentType: "text/javascript",
			onload: this.PopulateIndustrySelect,
			onerror: this.PopulateError,
			method: "post",
			context: this
		});
	}
	else{
		Element.removeChildNodes(this.industrySelect);
		Element.create("option", {value:''}, "Industry", this.industrySelect);
		this.industrySelect.setAttribute("disabled", "disabled");
	}
}

industryDropDown.prototype.PopulateIndustrySelect = function(buffer){
	var list = this.serializer.deserialize(buffer.getResult());
	
	if(list){
		Element.removeChildNodes(this.industrySelect);
		Element.create("option", {value:''}, "Industry", this.industrySelect);
		
		if(list.length > 0){
			for(var i = 0; i < list.length; i++){
				Element.create("option", {value:list[i].code}, list[i].name, this.industrySelect);
			}
			
			this.industrySelect.removeAttribute("disabled");
		}
	}
}

function InitIndustryDropDown(){
	var indDD = new industryDropDown();
	indDD.AttachEvents();
}

if(address.indexOf("sectorandindustry") > -1 && address.indexOf("news.asp") > -1){
	Events.add({
		element: window,
		type: "load",
		handler: InitIndustryDropDown
	});
}


slideControl = function(){
	var today = parseInt(Element.get("todayMSValue").value);
	
	this.newsSources = [];
	this.newsSources['AP'] = {
		daysBack: 30,
		minStartDate: (today + 1) - 29,
		maxEndDate: today + 1
	};
	this.newsSources['BW'] = {
		daysBack: today - 39112,
		minStartDate: 39112,
		maxEndDate: today + 1
	};
	this.newsSources['SP'] = {
		daysBack: 90,
		minStartDate: (today + 1) - 89,
		maxEndDate: today + 1
	};
	this.newsSources['PR'] = {
		daysBack: 90,
		minStartDate: (today + 1) - 89,
		maxEndDate: today + 1
	};
	this.newsSources['addl'] = {
		daysBack: 90,
		minStartDate: (today + 1) - 89,
		maxEndDate: today + 1
	};
	this.newsSources['all'] = {
		daysBack: 30,
		minStartDate: (today + 1) - 29,
		maxEndDate: today + 1
	};
	
	if(this.newsSources['BW'].daysBack < 30){
		this.newsSources['all'] = {
			daysBack: this.newsSources['BW'].daysBack,
			minStartDate: this.newsSources['BW'].minStartDate,
			maxEndDate: this.newsSources['BW'].maxEndDate
		};
	}
	
	this.histogram = Element.get("histogram");
	
	this.sourceFilter = Element.get("sourceFilter").value;
	this.selectedSource = this.newsSources[this.sourceFilter];
	
	this.chartHitDivs = Element.parseSelector('.hitDiv', Element.get("histoHitContainer"));
	
	if(this.chartHitDivs.length > 0){
	
		//Left Slider
		this.sliderLeft = Element.get("leftSlider");
		this.controlLeft = Element.get("leftSlideControl");
		this.dateDisplayLeft = Element.get("leftDateDisplay");
		this.dateValueHolderLeft = Element.get("startDate");
		
		//Right Slider
		this.sliderRight = Element.get("rightSlider");
		this.controlRight = Element.get("rightSlideControl");
		this.dateDisplayRight = Element.get("rightDateDisplay");
		this.dateValueHolderRight = Element.get("endDate");
		
		this.sliderMinWidth = Element.getSize(this.sliderRight).width;
		
		this.startDate = req("startDate");
		if(!this.startDate){
			var start = this.chartHitDivs[0].id;
			if(start.indexOf('_') > -1){
				start = start.split('_');
			}
			
			this.startDate = start[0];
		} else {
			var startDateChange = true;
		}
		
		this.endDate = req("endDate");
		if(!this.endDate){
			var end = this.chartHitDivs[this.chartHitDivs.length - 1].id;
			if(end.indexOf('_') > -1){
				end = end.split('_');
			}
			
			this.endDate = end[2];
		} else {
			var endDateChange = true;
		}
		
		this.dateDisplayLeft.innerHTML = this.GetDateDisplay(this.startDate);
		this.dateDisplayRight.innerHTML = this.GetDateDisplay(this.endDate);
		
		this.slideLeftSlider = false;
		this.slideRightSlider = false;
		this.beginDate = '';
		
		this.sliderTimeOut;
		
		var info = '';
		var lftWidth = 61;
		var rtWidth = 61;
		
		if(startDateChange || endDateChange){
			for(var i = 0; i < this.chartHitDivs.length; i++){
				info = this.chartHitDivs[i].id + '';
				
				if(info.indexOf('_') > -1){
					info = info.split('_');
					if(info.length > 0){
						if(info[0] == this.startDate){
							lftWidth = info[1];
						}
						if(info[2] == this.endDate){
							rtWidth = info[3];
						}
					}
				}
			}
			
			Element.setWidth(this.sliderLeft, lftWidth);
			Element.setWidth(this.sliderRight, rtWidth);
		}
	}
}

slideControl.prototype.AttachEvents = function(){
	Events.add({
		element: this.controlLeft,
		type: "mousedown",
		handler: this.StartDrag,
		context: this
	});
	
	Events.add({
		element: this.controlRight,
		type: "mousedown",
		handler: this.StartDrag,
		context: this
	});
	
	Events.add({
		element: document,
		type: "mouseup",
		handler: this.StopDrag,
		context: this
	});
	
	for(var i = 0; i < this.chartHitDivs.length; i++){
		Events.add({
			element:this.chartHitDivs[i],
			type: "mousemove",
			handler: this.SnapSlider,
			context: this
		});
		
		Events.add({
			element:this.chartHitDivs[i],
			type: "mousedown",
			handler: this.StartDrag,
			context: this
		});
	}
}

slideControl.prototype.StartDrag = function(ev, el){
	var id = el.id;
	this.beginDate = '';
	
	if(el.className != "hitDiv"){
	
		if(id == "leftSlideControl"){
			this.slideLeftSlider = true;
			this.slideRightSlider = false;
			this.beginDate = this.startDate;
		}
		else if(id == "rightSlideControl"){
			this.slideRightSlider = true;
			this.slideLeftSlider = false;
			this.beginDate = this.endDate;
		}
	}
	else{
		if(id.indexOf('_') > -1){
			var hitDates = id.split('_');
			var sDate = parseInt(hitDates[0]);
			var eDate = parseInt(hitDates[2]);
			
			//var allowance = Math.round((270 - (this.selectedSource.daysBack - 1)) / this.selectedSource.daysBack);
			
			if(sDate < this.startDate){
				if(el.offsetLeft >= this.controlLeft.offsetLeft){
					this.slideLeftSlider = true;
					this.slideRightSlider = false;
					this.beginDate = this.startDate;
				}
			}
			else if(eDate > this.endDate){
				if(el.offsetLeft >= this.sliderRight.offsetLeft && el.offsetLeft <= (this.sliderRight.offsetLeft + 12)){
					this.slideLeftSlider = false;
					this.slideRightSlider = true;
					this.beginDate = this.endDate;
				}
			}
		}
	}
	
	if(this.slideRightSlider || this.slideLeftSlider){
		window.clearTimeout(this.sliderTimeOut);
	}
}

slideControl.prototype.StopDrag = function(ev, el){
	if(this.slideRightSlider || this.slideLeftSlider){
		var newDate = '';
		if(this.slideRightSlider){
			newDate = this.endDate;
		}
		else if(this.slideLeftSlider){
			newDate = this.startDate;
		}
		
		this.slideLeftSlider = false;
		this.slideRightSlider = false;
		
		if(this.beginDate != newDate){
			this.sliderTimeOut = window.setTimeout("document.frmNewsSearch.submit()", 1000);
		}
	}
}

slideControl.prototype.SnapSlider = function(ev, el){
	if(this.slideLeftSlider || this.slideRightSlider){
		if(el.id.indexOf('_') > -1){
			var temp = el.id.split('_');
		}
		
		var slide = false;
		
		if(this.slideRightSlider){
			var newDate = parseInt(temp[2]);
			var newWidth = parseInt(temp[3]);
			
			if(newDate > this.startDate){
				slide = true;
			}
			var slider = this.sliderRight;
		}
		else if(this.slideLeftSlider){
			var newDate = parseInt(temp[0]);
			var newWidth = parseInt(temp[1]);
			
			if(newDate < this.endDate){
				slide = true;
			}
			
			var slider = this.sliderLeft;
		}
		
		if(slide){
			Element.setWidth(slider, newWidth);
			
			if(this.slideLeftSlider){
				this.startDate = newDate;
				this.dateDisplayLeft.innerHTML = this.GetDateDisplay(this.startDate);
				this.dateValueHolderLeft.value = this.startDate;
			}
			else if(this.slideRightSlider){
				this.endDate = newDate;
				this.dateDisplayRight.innerHTML = this.GetDateDisplay(this.endDate);
				this.dateValueHolderRight.value = this.endDate;
			}
		}
	}
}

slideControl.prototype.GetDateDisplay = function(date){
	var dateString = '--';
	var jsDate = Format(date, "MsToJsDate");
	
	if(jsDate){
		var m = jsDate.getMonth() + 1;
		var d = jsDate.getDate();
		var y = String(jsDate.getFullYear()).substr(2);
		
		if(m < 10){
			m = "0" + m;
		}
		
		dateString = m + '/' + d + '/' + y;
	}
	
	return dateString;
}

//for testing only remove when done.
slideControl.prototype.console = function(value){
	console.log(value);
}

function InitSliders(){
	var sliders = new slideControl();
	if(sliders.chartHitDivs.length > 0){
		sliders.AttachEvents();
	}
}

if(address.indexOf("news.asp") > -1){
	Events.add({
		element: window,
		type: "load",
		handler: InitSliders
	});
}

function SourceSubmit(val){
	if(val){
		Element.get("startDate").value = "";
		Element.get("endDate").value = "";
		Element.get("sourceFilter").value = val;
		Element.get("newsForm").submit();
	}
}
