var ArticleView = {};

ArticleView.Coding = {};

ArticleView.Coding.Opened = null;
ArticleView.Coding.TimeEvent = null;
ArticleView.OnArticlePopUpID = null;
ArticleView.PopupOpen = false;
ArticleView.CurrentPopupMaterialID = null;
ArticleView.HiddenElements = new Array();

ArticleView.Login_Click = function(e){
	LoginShortcut.OnReloadPage = ArticleView.OnLoginReloadPage;
	LoginShortcut.ShowLayer(null);
	
}

ArticleView.OnLoginReloadPage = function(sender, e){
	if(ArticleView.PopupOpen && ArticleView.CurrentPopupMaterialID != null){
		ArticleView.OnArticlePopUp(ArticleView.CurrentPopupMaterialID);
	}
}

ArticleView.AddToBasket = function(nRecordID, nTypeID, sTitle, dPriceInEuro, nPublisherID){
	var HttpRequest = new CHttpRequest();
	
	HttpRequest.QueryString = "AjaxType=XML&RequestFile=UI.ArticleView&MethodName=XAddToBasket";
	HttpRequest.AssyncCall = true;
	HttpRequest.AddProperty("Arguments[RecordID]", nRecordID);
	HttpRequest.AddProperty("Arguments[TypeID]", nTypeID);
	HttpRequest.AddProperty("Arguments[Title]", sTitle);
	HttpRequest.AddProperty("Arguments[PriceInEuro]", dPriceInEuro);
	HttpRequest.AddProperty("Arguments[PublisherID]", nPublisherID);
	HttpRequest.Additional = nRecordID;
	HttpRequest.OnResponse = ArticleView.AddToBasket_Callback;

	HttpRequest.Send();
}

ArticleView.AddToBasket_Callback = function(request, state){
	SearchResults.DisplayView(state);
	if(ArticleView.PopupOpen && ArticleView.CurrentPopupMaterialID != null){
		ArticleView.OnArticlePopUp(ArticleView.CurrentPopupMaterialID);
	}
	//BasketShortcut.ShowBasket(null);
}

ArticleView.ChangeFontSize = function(Element, sChange){
	var nSize;
	if(sChange == "Bigger"){
		nSize = (Element.style.fontSize.replace("px", "") * 1) + 1;
	}else if(sChange == "Smaller"){
		nSize = (Element.style.fontSize.replace("px", "") * 1) - 1;
	}else{
		nSize = 13;
	}

	Element.style.fontSize = nSize+ "px";
}

ArticleView.BuyAndView = function(nRecordID, nTypeID, sTitle, dPriceInEuro, nPublisherID){
	var HttpRequest = new CHttpRequest();
	
	HttpRequest.QueryString = "AjaxType=XML&RequestFile=UI.ArticleView&MethodName=XBuyAndView";
	HttpRequest.AssyncCall = true;
	HttpRequest.AddProperty("Arguments[RecordID]", nRecordID);
	HttpRequest.AddProperty("Arguments[TypeID]", nTypeID);
	HttpRequest.AddProperty("Arguments[Title]", sTitle);
	HttpRequest.AddProperty("Arguments[PriceInEuro]", dPriceInEuro);
	HttpRequest.AddProperty("Arguments[PublisherID]", PublisherID);
	HttpRequest.Additional = nRecordID;
	HttpRequest.OnResponse = ArticleView.BuyAndView_Callback;

	var Response = HttpRequest.Send();
}

ArticleView.BuyAndView_Callback = function(request, state){
	SearchResults.DisplayView(state);
	if(ArticleView.PopupOpen && ArticleView.CurrentPopupMaterialID != null){
		ArticleView.OnArticlePopUp(ArticleView.CurrentPopupMaterialID);
	}
}

ArticleView.Coding.OnClick = function(obj, bUserCall, bOverOpen){
	if(typeof(bUserCall) == "undefined"){
		bUserCall = true;
	}
	if(typeof(bOverOpen) == "undefined"){
		bOverOpen = false;
	}
	
	if(bUserCall || bOverOpen){
		ArticleView.Coding.OnOverOut(obj);
	}
	if(!bOverOpen){
		ArticleView.Coding.OnOverOut(obj, "Close");
	}
	if(bUserCall && !bOverOpen){
		ArticleView.Coding.OnOverOut(obj);
	}
	
	if(!bOverOpen){
		ArticleView.Coding.ExpandColapse(obj.id.replace("Button", "Content"), obj, bOverOpen);
	}else{
		ArticleView.Coding.TimeEvent = window.setTimeout("ArticleView.Coding.ExpandColapse('" + obj.id.replace('Button', 'Content') + "');", 100);
	}
}

ArticleView.Coding.ClearTimeEvent = function(){
	if(ArticleView.Coding.TimeEvent != null){
		window.clearTimeout(ArticleView.Coding.TimeEvent);
		ArticleView.Coding.TimeEvent = null;
	}
}

ArticleView.Coding.ExpandColapse = function(sID, obj, bOverOpen){
	var oContent = document.getElementById(sID);
	//var oCoding = document.getElementById("CodingContent");
//	if(oCoding.style.dysplay != "none"){
//		oContent.style.top = -oCoding.offsetHeight + "px";
//	}
	if(typeof(obj) == "undefined"){
		obj = document.getElementById(oContent.id.replace("Content", "Button"));
	}
	
	if(oContent.style.display == "none"){
		if(ArticleView.Coding.Opened != null && bOverOpen){
			ArticleView.Coding.OnClick(ArticleView.Coding.Opened, false);
		}
		oContent.style.display = "";
		obj.style.borderBottom = "solid 1px #F2F2F2";
		ArticleView.Coding.Opened = obj;
	}else{
		oContent.style.display = "none";
		//alert(obj);
		obj.style.borderBottom = "solid 1px #CCCCCC";
		ArticleView.Coding.Opened = null;
	}
}

ArticleView.Coding.OnOverOut = function(obj, KeyWord){
	
	if(typeof(KeyWord) == "undefined"){
		KeyWord = "Over";
	}
	var sSrcSearch = ".gif";
	var sSrcReplace = ".gif";
	var Element = obj.getElementsByTagName("IMG")[0];
	var sSrc = Element.src;
	
	if(sSrc.match(KeyWord)){
		sSrcSearch = KeyWord + ".gif";
	}else{
		sSrcReplace = KeyWord + ".gif";
	}
	
	//alert(sSrcSearch + " - " + sSrcReplace);
	Element.src = sSrc.replace(sSrcSearch, sSrcReplace);
}

ArticleView.OnArticlePopUp = function(MaterialID){
	
//	if(typeof(window._Instances["IE6"]) != "undefined" && window._Instances["IE6"]){
//		var ClientWidth = document.documentElement.clientWidth;
//		var ClientHeight = document.documentElement.clientHeight;
//		Utilities.Window.Open(location.href + "article/?Id=" + MaterialID + "&browser=6", (ClientWidth * 0.8), (ClientHeight * 0.8), "", "", "", "yes", 0, "yes", "no");
//		return false;
//	}
	var bIE6 = false;
	if(typeof(window._Instances["IE6"]) != "undefined" && window._Instances["IE6"]){
		bIE6 = true;
	}
	
	if(bIE6){
//		var arSelects = document.getElementsByTagName("SELECT");
//		var nCount = 0;
//		for(var z = 0; z < arSelects.length; z++){
//			if(arSelects[z].style.display != "none"){
//				ArticleView.HiddenElements[nCount] = arSelects[z];
//				nCount++;
//			}
//			arSelects[z].style.display = "none";
//		}
		Utilities.DOM.ChangeComboboxesVisibility("hidden");
	}
	
	var BodyTag = document.getElementsByTagName("BODY")[0];
	
	if(ArticleView.OnArticlePopUpID == null){
		var CurrDate = new Date();
		ArticleView.OnArticlePopUpID = (CurrDate.getHours() * 60 * 60 + CurrDate.getMinutes() * 60 + CurrDate.getSeconds()) * 1000 + CurrDate.getMilliseconds();
		
		var ShadowLayer = document.createElement("DIV");
		if(bIE6){
			ShadowLayer.style.position = "absolute";
		}else{
			ShadowLayer.style.position = "fixed";
		}
		ShadowLayer.style.top = "0px";
		ShadowLayer.style.left = "0px";
		ShadowLayer.style.zIndex = 500;
		ShadowLayer.style.width = "100%";
		ShadowLayer.style.height = "100%";
		ShadowLayer.id = ArticleView.OnArticlePopUpID;
		ShadowLayer.style.backgroundColor = "#000000";
		Utilities.Events.RegisterEventHandler(ShadowLayer, "onclick", ArticleView.ArticlePopUpClose);
		
		var ElementLayer = document.createElement("DIV");
		if(bIE6){
			ElementLayer.style.position = "absolute";
		}else{
			ElementLayer.style.position = "fixed";
		}
		ElementLayer.style.top = "0px";
		ElementLayer.style.left = "0px";
		ElementLayer.style.margin = "10%";
		ElementLayer.style.zIndex = 501;
		ElementLayer.style.width = "80%";
		ElementLayer.style.height = "70%";
		ElementLayer.id = ArticleView.OnArticlePopUpID + "Content";
		//ElementLayer.style.backgroundColor = "#ffffff";
		//ElementLayer.innerHTML = "";
		
		BodyTag.appendChild(ShadowLayer);
		BodyTag.appendChild(ElementLayer);
		
		Controls.UI.Effects.SetOpacity(ShadowLayer, 50);
		
		//Controls.UI.Effects.SetOpacity(ElementLayer, 50);
	}else{
		document.getElementById(ArticleView.OnArticlePopUpID).style.display = "";
		document.getElementById(ArticleView.OnArticlePopUpID + "Content").style.display = "";
	}
	
	var contentContainer = document.getElementById(ArticleView.OnArticlePopUpID + "Content");
	contentContainer.style.width = "80%";
	contentContainer.innerHTML = "<div style='width: 100%; height: 50%; padding-top: 30px; font-size: 20px; text-align: center; border: solid 1px #888888; color: #888888; background-color: white;'>Loading Article...</div>";
	
	if(bIE6){
		//BodyTag.style.height = "100%";
		BodyTag.style.overflowY = "hidden";
	}
	
	var objects = document.getElementsByTagName("object");
	for(var i = 0; i < objects.length; i++){
		objects[i].style.visibility = "hidden";
	}
	
	ArticleView.CurrentPopupMaterialID = MaterialID;
	var HttpRequest = new CHttpRequest();
    HttpRequest.QueryString = "AjaxType=HTML&RequestFile=UI.ArticlePopUp&MethodName=XRender";
    HttpRequest.AssyncCall = true;
    HttpRequest.AddProperty("Arguments[MaterialID]", MaterialID);
	HttpRequest.OnResponse = ArticleView.OnArticlePopUpResponse;
	HttpRequest.Send();
	
//	if(document.getElementById("CodingContent") != null){
//		//document.getElementById("CodingContent").id = "CodingContent_Disable";
//		document.getElementById("OptionsContent").id = "OptionsContent_Disable";
//	}
}

ArticleView.OnArticlePopUpResponse = function(httpRequest, Additional){
	var container = document.getElementById(ArticleView.OnArticlePopUpID + "Content");
	//alert("Arrived");
	Ajax.LoadContent(container, httpRequest.responseText);
	//container.focus();
	Utilities.Events.RegisterEventHandler(document.documentElement, "onkeypress", ArticleView.Body_KeyPress);
	ArticleView.PopupOpen = true;
	Utilities.Events.CaptureMouseWheel(container, ArticleView.Container_MouseWheel);
	//document.body.scroll = "no";
}

ArticleView.Container_MouseWheel = function(e){
	 var sPrefix = "";
	if(ArticleView.PopupOpen){
		sPrefix = "PopUp_";
	}
	var scrollContainer = document.getElementById(sPrefix + "ArticleViewPopupScrollContainer");
	scrollContainer.scrollTop += -Utilities.Events.GetWheelDelta(e) / 60 * 11;
	e.returnValue = false;
}

ArticleView.Body_KeyPress = function(e){
	if(e.keyCode == 27){
		ArticleView.ArticlePopUpClose();
		Utilities.Events.UnRegisterEventHandler(document.documentElement, "onkeypress", ArticleView.Body_KeyPress);
	}
}

ArticleView.ArticlePopUpClose = function(){
	if(!ArticleView.PopupOpen)
		return;
	var bIE6 = false;
	if(typeof(window._Instances["IE6"]) != "undefined" && window._Instances["IE6"]){
		bIE6 = true;
	}
	
	ArticleView.PopupOpen = false;
	var container = document.getElementById(ArticleView.OnArticlePopUpID + "Content");
	Utilities.Events.ReleaseMouseWheel(container, ArticleView.Container_MouseWheel);
	ArticleView.CurrentPopupMaterialID = null;
	container.innerHTML = '';
	document.getElementById(ArticleView.OnArticlePopUpID).style.display = "none";
	container.style.width = "1px";
	container.style.display = "none";
	
	var list = document.getElementById("ArticleList");
	if(list != null && list.SelectedItem != null){
		list.SelectedItem.cells[0].focus();
		//SearchResults.DisplayView(list.GetValue(list.SelectedItem));
	}
	
	var objects = document.getElementsByTagName("object");
	for(var i = 0; i < objects.length; i++){
		objects[i].style.visibility = "visible";
	}
	
	if(bIE6){
		Utilities.DOM.ChangeComboboxesVisibility("visible");
		
		var BodyTag = document.getElementsByTagName("BODY")[0];
		BodyTag.style.overflowY = "";
	}
}

ArticleView.CurrentActiveLayer = null;
ArticleView.CurrentActiveLink = null;

ArticleView.HideActiveLayer = function(){
	if(ArticleView.CurrentActiveLayer != null){
		ArticleView.HideLayer(ArticleView.CurrentActiveLayer);
		ArticleView.CurrentActiveLayer = null;
		//ArticleView.CurrentActiveLink.style.fontWeight = "normal";
		ArticleView.CurrentActiveLink = null;
	}
}

ArticleView.HideLayer = function(Layer){
	if(Layer != null){
		Layer.Layer.style.display = "none";
		if(Layer.Header != null)
			Layer.Header.style.display = "none";
		if(Layer.Link != null){
			Layer.Link.style.backgroundColor = "transparent";
			Layer.Link.style.color = "";
		}
		
		
		Utilities.Events.UnRegisterEventHandler(document.documentElement, "onmousedown", ArticleView.Layer_Click);
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArticleView.ShowLayer = function(Element, sLayerID, pEvtObj){
	ArticleView.HideActiveLayer();
	pEvtObj.returnValue = false;
	
	var parent = Element;
//	while((parent = parent.parentNode) != null){
//		if(parent != null && parent.tagName == "BODY")
//			return;
//		if(parent.style.overflow == "scroll" || parent.style.overflowX == "scroll" || parent.style.overflowY == "scroll" || parent.style.overflow == "auto")
//			break;
//	}
	
	var arCoords = Utilities.DOM.GetCoordinates(Element);
	if(parent != null){
		arCoords[0] -= parent.scrollLeft;
		arCoords[1] -= parent.scrollTop;
	}
	var Layer = document.getElementById(sLayerID);
	
	if(Layer.parentNode.tagName != "BODY"){
		document.body.appendChild(Layer);
	}
	
	var eventX = (pEvtObj.pageX) ? pEvtObj.pageX : pEvtObj.clientX;
	var eventY = (pEvtObj.pageY) ? pEvtObj.pageY : pEvtObj.clientY;

	if(document.all){
		var html = document.documentElement;
		eventX += html.scrollLeft;
		eventY += html.scrollTop;
	}

	Utilities.Events.RegisterEventHandler(document.documentElement, "onmousedown", ArticleView.Layer_Click);

	var layerX = eventX;
	var layerY = eventY;
	if(eventY > (arCoords[1] + 17)){
		layerY = (arCoords[1] + 2 * 17);
	}else{
		layerY = (arCoords[1] + 17);
	}

	Layer.style.position = "absolute";
	Layer.style.left = layerX + "px";
	Layer.style.top = layerY + "px";
	
	Layer.style.display = "";
	
	var coords = Utilities.DOM.GetCoordinates(Layer);
	//alert(coords);
	if((coords[0] + Layer.offsetWidth) > document.documentElement.clientWidth){
		Layer.style.left = document.documentElement.clientWidth - Layer.offsetWidth - 10;
	}
	
	
	Element.style.backgroundColor = "#CFD4FC";
	Element.style.color = "#3A5BDD";
	
	ArticleView.CurrentActiveLayer = {Layer:Layer, Header:null, Link:Element};
	ArticleView.CurrentActiveLink = Element;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArticleView.Layer_Click = function(pEvtObj){
	if(ArticleView.CurrentActiveLayer == null)
		return;
	var eventX = (pEvtObj.pageX) ? pEvtObj.pageX : pEvtObj.offsetX;
	var eventY = (pEvtObj.pageY) ? pEvtObj.pageY : pEvtObj.offsetY;
	if(document.all){
		var arOffsetCoords = Utilities.DOM.GetCoordinates(pEvtObj.srcElement.offsetParent != null ? pEvtObj.srcElement.offsetParent : pEvtObj.srcElement);
		eventY += arOffsetCoords[1];
		eventX += arOffsetCoords[0];
	}
	//asd;
	var arCoords = Utilities.DOM.GetCoordinates(ArticleView.CurrentActiveLayer.Layer);

	var bOutsideX = eventX < arCoords[0] || eventX > (arCoords[0] + ArticleView.CurrentActiveLayer.Layer.offsetWidth);
	var bOutsideY = eventY < arCoords[1] || eventY > (arCoords[1] + ArticleView.CurrentActiveLayer.Layer.offsetHeight);

	if(bOutsideX || bOutsideY){
		ArticleView.HideActiveLayer();
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArticleView.ReverseRates = function(Link, sLayerID){
	var NormalRates = document.getElementById(sLayerID +"_NormalRates");
	var ReverseRates = document.getElementById(sLayerID +"_ReverseRates");
	if(NormalRates != null && ReverseRates != null){
		if(NormalRates.style.display == ""){
			NormalRates.style.display = "none";
			ReverseRates.style.display = "";
			Link.innerHTML = "normal";
		}else{
			NormalRates.style.display = "";
			ReverseRates.style.display = "none";
			Link.innerHTML = "reverse";
		}
	}else{
		//alert("Missing layers");
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArticleView.ShowLayerInfo = function(DataGetter, sLayerID){
	var Layer = document.getElementById(sLayerID);
	if(Layer.style.visibility != "hidden"){
		DataGetter.ElementNumber = DataGetter.arQueryString.length;
		DataGetter.RequestFile = "Logic.CustomQuery";
		DataGetter.MethodName = "Execute";
		DataGetter.CollectData();
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArticleView.ArticleBody_MouseDown = function(e){
	var target = Utilities.Events.GetSourceElement(e);
	if(target.tagName != "A")
		return;
	if(target.target != "_blank"){
		target.target = "_blank";
	}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ArticleView.SearchFor = function(keyword){
	
	var searchField = document.getElementById('SearchPanel_FreeText_0');
	searchField.value = keyword;
	if(SearchPanel)
		SearchPanel.DoSearch(false);
}
