var curCategory;
var curClassfication	= 1;
var curPanel			= 1;
var curDataLine         = 1;
var movingDistance	    = 112;
var movingLineDistance  = 22;

var leftValue;
var topValue;
var movement;
var lineMovement;

$(function() {
	changeContainerWidth();
});

function slideContent(direction)
{
	if (direction)
	{
		change(direction);
	}
	else
	{
		change(direction);
	}
}

function change(direction) {
	   
	var container = document.getElementById(curCategory + "Slider" + curClassfication + "Container");
	var panelCount = document.getElementById(curCategory + "Slider" + curClassfication + "Counter").value;
	
	//if not at the first or last panel
	if((direction && !(curPanel < panelCount)) || (!direction && (curPanel <= 1))) { return false; }	
        
	if (($("#slider").data("currentlyMoving") == false)) {
            
		$("#slider").data("currentlyMoving", true);
		var next  = direction ? curPanel + 1 : curPanel - 1;
		leftValue = container.style.left;
		movement  = direction ? parseFloat(leftValue, 10) - movingDistance : parseFloat(leftValue, 10) + movingDistance;
		
		$(container)
			.stop()
			.animate({
				"left": movement
			}, function() {
					$("#slider").data("currentlyMoving", false);
			});
				
		curPanel = next;
	}
}

function changeContainerWidth()
{
	var container = document.getElementById(curCategory + "Slider" + curClassfication + "Container");
	
	if (container != null)
	{
		var panelCount = document.getElementById(curCategory + "Slider" + curClassfication + "Counter").value;
		container.style.width = (((75 + 36) * panelCount) + 150) + "px";
		container.style.left = "0px";	

		$("#slider").data("currentlyMoving", false);
	}	
}

function changeCategory(catgName)
{
	//update category in session
	updateCategoryInSession(catgName);
	
	curCategory = catgName;
	curClassfication = 1;
	curPanel = 1;

	var catgCount = document.getElementById("catgCount").value;
	var catgClassfiCount = document.getElementById(catgName+"ClassiCount").value;

	for(var i=1; i<catgCount; i++){
		var catgElement = document.getElementById("catg"+i);
		var category = catgElement.innerHTML;
		category = category.substring(category.indexOf(">")+1, category.length);
		category = category.substring(0, category.indexOf("<"));
		
		var catgClassfiElement = document.getElementById("catgClassi"+i);
		var sliderElement = document.getElementById("Slider"+i);
		
		if(catgElement != null && catgClassfiElement != null && sliderElement != null){
    		if(category == catgName){
				catgElement.className="box_sel";
				catgClassfiElement.style.display="block";	
				sliderElement.style.display="block";	
        	} else {
				catgElement.className="box";
				catgClassfiElement.style.display="none";
				sliderElement.style.display="none";	
        	}
		}
	}
	
	for(var j=1; j<catgClassfiCount; j++){
		var classfiElement = document.getElementById(catgName+j);
		var catgSliderElement = document.getElementById(catgName+"Slider"+j);			
		if(classfiElement != null && catgSliderElement != null){
    		if(j == 1){
				classfiElement.className="tab1_sel";
				catgSliderElement.style.display="block";	
			} else {
				classfiElement.className="tab2";
				catgSliderElement.style.display="none";	
			}
		}
	}

	changeContainerWidth();	
}

function changeClassification(whichClassi, catgName)
{	
	curClassfication = whichClassi;
	curPanel = 1;

	var catgClassfiCount = document.getElementById(catgName+"ClassiCount").value;

	for(var i=1; i<catgClassfiCount; i++){
		var classfiElement = document.getElementById(catgName+i);
		var catgSliderElement = document.getElementById(catgName+"Slider"+i);
		if(classfiElement != null){
    		if(i == whichClassi){
				if (i == 1) {
					classfiElement.className="tab1_sel";	
				} else {
					classfiElement.className="tab2_sel";	
				}	
				catgSliderElement.style.display="block";	
			} else {
				if (i == 1) {
					classfiElement.className="tab1";	
				} else {
					classfiElement.className="tab2";	
				}	
				catgSliderElement.style.display="none";	
			}
		}
	}

	changeContainerWidth();	
}

function populateDiv(divId, flag, containerDiv, counter, maxCount)
{
	var element = document.getElementById(divId);

	var containerElement = document.getElementById(containerDiv);

	if (element != null && containerElement != null)
	{
		if (flag)
		{
			var leftValue = containerElement.style.left;			
			if (leftValue != "0px")
			{
				leftValue = leftValue.substring(0, leftValue.indexOf("px"));
				
				leftValue = -(leftValue / movingDistance);
				if ((counter-leftValue) > maxCount)
				{
					element.className = "popupDivRight"
				}
				else
				{
					element.className = "popupDivLeft"
				}
			}
			else
			{
				if (counter > maxCount)
				{
					element.className = "popupDivRight"
				}
				else
				{
					element.className = "popupDivLeft"
				}
			}
			element.style.display = "block";
		}
		else
		{
			element.style.display = "none";
		}		
	}
}

function updateCategoryInSession(category){
	var ReqUrl = "poll.do?category="+encodeURIComponent(category);
	
	updateCategoryStatus(ReqUrl);
}

function updateCategoryStatus(ReqUrl) {
    try{
	    if (window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	    
		xmlHttp.onreadystatechange = categoryProcessState;
	    xmlHttp.open("POST", ReqUrl, true);
	    xmlHttp.send(null);
		
	}catch (e) {
	    alert(e);
	}
}

function categoryProcessState() {

    if (xmlHttp.readyState == 4) { // Complete
		  if (xmlHttp.status == 200) { // OK response								
      } else {
		alert(serverResponseMessage + " " + xmlHttp.statusText);
      }
    } else {
		
    }
}

function slideData(direction, divId)
{
	if (direction)
	{
		changeData(direction, divId);
	}
	else
	{
		changeData(direction, divId);
	}
}

function changeData(direction, divId) {
	
	var divElement = document.getElementById(divId + "Slider");
	if (divElement != null)
	{
		var container = document.getElementById(divId + "Container");
		var dataCount = document.getElementById(divId + "Counter").value;
			
		//if not at the first or last panel
		if((direction && !(curDataLine < dataCount)) || (!direction && (curDataLine <= 1))) { return false; }	
		
		if (($(container).data("currentlyMoving") == false)) {
            
			$(container).data("currentlyMoving", true);	
			var next  = direction ? curDataLine + 1 : curDataLine - 1;
			topValue = container.style.top;
			lineMovement  = direction ? parseFloat(topValue, 10) - movingLineDistance : parseFloat(topValue, 10) + movingLineDistance;
			
			$(container)
				.stop()
				.animate({
					"top": lineMovement
				}, function() {
					$(container).data("currentlyMoving", false);
				});
					
			curDataLine = next;	
		}
	}	
}

function setVerSliderContainerWidth(id)
{
	var container = document.getElementById(id + "Container");
	var dataCount = document.getElementById(id + "Counter").value;

	if (container != null)
	{
		container.style.width = (dataCount + 2) + "px";		
		container.style.top = "0px";	

		$(container).data("currentlyMoving", false);
	}	
}