var lockBtnTime = 10;
var lockBtn;
var lockBtnCaption;
var	dragMode = false;
var yStart = 0;
var yPos = 0;
var	dragOffset = 30;
var dragObj = null;
var dragList = new Array();

function $(e) {
	return document.getElementById(e);	
}

function addEvent( obj, type, fn )
{
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

function removeEvent( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}

function getStyle(el,styleProp)
{
	isString(el) ? x = $(el) : x = el;
	
	if (x.currentStyle)	
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	
	return y;
}

function cutPx(Value){
	var tmp = Value;
	tmp = tmp.substring(0,tmp.length-2);
	tmp = parseInt(tmp);
	return tmp;
}

function isString(value)
{
    return typeof(value) == 'string';
}

function buttonLock() {
	if (lockBtnTime > 0) {	
		lockBtn.value = lockBtnCaption + " (" + lockBtnTime + ")";
		lockBtnTime = lockBtnTime - 1;
		setTimeout(buttonLock, 1000);
	} else {
		lockBtn.value = lockBtnCaption;
		lockBtn.disabled = "";
	}
}

function initGlobal() {
	lockBtn = $("termsSubmit");
	
	if (lockBtn != null) {
		lockBtn.disabled = "disabled";
		lockBtnCaption = lockBtn.value;
		buttonLock();		
	} else if ($("pollForm") != null) {

	addEvent($("QWrapper"), "mousemove", doDrag);

	addEvent($("q2_d0"), "mousedown", startDrag);	
	addEvent($("q2_d1"), "mousedown", startDrag);	
	addEvent($("q2_d2"), "mousedown", startDrag);	
	addEvent($("q2_d3"), "mousedown", startDrag);	
	addEvent($("q2_d4"), "mousedown", startDrag);	
	addEvent($("q2_d5"), "mousedown", startDrag);
	addEvent($("q2_d6"), "mousedown", startDrag);

	dragList = [0, 1, 2, 3, 4, 5, 6];
	
	}
}

function startDrag(e) {
	dragMode = true;
	dragObj = this;
	
	dragObj.setAttribute("class", "dragBox bold");
	
	if (!e) e = window.event;
	
	if (e.pageX || e.pageY) 	{
		yStart = e.pageY;
	} else if (e.clientX || e.clientY) 	{
		yStart = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
}

function stopDrag() {
	if ((dragMode) || (dragObj != null)) {
		dragObj.setAttribute("class", "dragBox");
		dragMode = false;	
		dragObj = null;
	}
}

function doDrag(e) {
	
	if (dragMode) {
		if (document.selection) { //IE
			document.selection.empty();
		}
		
		if (!e) e = window.event;
		
		if (e.pageX || e.pageY) 	{
			yPos = e.pageY;
		} else if (e.clientX || e.clientY) 	{
			yPos = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		
		if (yStart - yPos > dragOffset) {
			Swap(1);
			yStart = yPos;
		}
		
		if (yStart - yPos < -dragOffset) {
			Swap(-1);
			yStart = yPos;
		}
	}
	
}

function getDragObjCaption(obj) {
	return obj.innerHTML.substr(2, obj.innerHTML.length - 2);
}

function getDragObjID(obj) {
	return parseInt(obj.id.substr(4, 1));	
}

function getDragListID(objID) {
	var i;
	
	for (i=0;i<dragList.length;i++) {
		if (dragList[i] == objID) {
			return i;	
		}
	}
}

function Swap(mode) {

	dragMode = false;
	
	var dragID = getDragObjID(dragObj);
	var dragListID = getDragListID(dragID);
	var CaptionBuffer = getDragObjCaption(dragObj);
	
	var swapObj;
	var IDBuffer;
	
	if (mode == 1) { //swap up
		if (dragID > 0) {
			swapObj = $("q2_d" + (dragID-1)); //0
			
			dragObj.innerHTML = (dragID+1) + ". " + getDragObjCaption(swapObj);
			swapObj.innerHTML = dragID + ". " + CaptionBuffer;
			
			IDBuffer = dragList[dragID];
			dragList[dragID] = dragList[dragID-1];
			dragList[dragID-1] = IDBuffer;
			
			dragObj.setAttribute("class", "dragBox"); //previous box back to normal
			dragObj = $("q2_d" + (dragID-1));
			dragObj.setAttribute("class", "dragBox bold");
		}
	} else if (mode == -1) { //swap down
		if (dragID < 6) {
			swapObj = $("q2_d" + (dragID+1)); //2
			
			dragObj.innerHTML = (dragID+1) + ". " + getDragObjCaption(swapObj);
			swapObj.innerHTML = (dragID+2) + ". " + CaptionBuffer;
			
			IDBuffer = dragList[dragID];
			dragList[dragID] = dragList[dragID+1];
			dragList[dragID+1] = IDBuffer;
			
			dragObj.setAttribute("class", "dragBox"); //previous box back to normal
			dragObj = $("q2_d" + (dragID+1));
			dragObj.setAttribute("class", "dragBox bold");
		}
	}
	
	dragMode = true;
}

function updateDragArray() {
	var i;
	
	for (i=0; i<dragList.length; i++) {
		document.getElementsByName("q2[]")[i].value = dragList[i];
	}
}

function showError(id, extra) {
	if (extra) {
		$("eb" + id + "_x").innerHTML = "Bitte füllen Sie das Zusatzfeld aus ►";
		$("eb" + id + "_x").style.display = "block";
	} else {
		$("eb" + id).innerHTML = "Bitte wählen Sie eine Antwortmöglichkeit ►";
		$("eb" + id).style.display = "block";
	}
}

function hideError(id, extra) {	
	if (extra) { 
		$("eb" + id + "_x").style.display = "none";
	} else {
		$("eb" + id).style.display = "none";
	}
}

function scrollToError(id) {
	
	var errorObj = $("eb"+id);

	errorObj.scrollIntoView(true);	
}

function requestSubmit() {
	var endReached = false;
	var i = 0;
	var i2 = 0;
	var nameArray = new Array();
	var errorArray = new Array();
	var hasErrors = false;
	var firstError = 9999;
	
	nameArray = ["q0[]", "q1[]", "q3[]", "q4", "q5"];
	errorArray = [true, true, true, true, true];
	
	for (i=0; i<nameArray.length; i++) {
		endReached = false;
		i2 = 0;
		
		while (!endReached) {
			if (document.getElementsByName(nameArray[i])[i2]) {
				if (document.getElementsByName(nameArray[i])[i2].checked) errorArray[i] = false;
				i2++;
			} else { 
				endReached = true; 
			}		
		}
	}
	
	if ((document.getElementsByName("q0[]")[5].checked) && (document.getElementsByName("q0_5_txt")[0].value == "")) {
		errorArray[0] = true;
		showError(0, true);		
	} else {
		hideError(0, true);	
	}
	
	if ((document.getElementsByName("q1[]")[5].checked) && (document.getElementsByName("q1_5_txt")[0].value == "")) {
		errorArray[1] = true;
		showError(1, true);		
	} else {
		hideError(1, true);	
	}
	
	if ((document.getElementsByName("q3[]")[5].checked) && (document.getElementsByName("q3_5_txt")[0].value == "")) {
		errorArray[2] = true;
		showError(2, true);		
	} else {
		hideError(2, true);	
	}
	
	if ((document.getElementsByName("q4")[6].checked) && (document.getElementsByName("q4_6_txt")[0].value == "")) {
		errorArray[3] = true;
		showError(3, true);		
	} else {
		hideError(3, true);	
	}
	
	for (i=0; i<errorArray.length; i++) {
		if (errorArray[i] == true) {
			hasErrors = true;
			showError(i);
			
			if (i < firstError) firstError = i;
		} else {
			hideError(i);	
		}
	}
	
	updateDragArray(); //remove
	
	if (hasErrors == true) {
		scrollToError(firstError);		
	} else {			
		updateDragArray();
		document.forms["pollForm"].submit();
	}
}
