function O(n) { return document.getElementById(n); }

function trim(x){return x.replace(/^\s+|\s+$/g,'');}

function hasClass(obj, clName) {
  var clN = ' ' + obj.className + ' ';
  return (clN.match(' ' + clName + ' ') != null);
}

function addClass(obj, clName) {
  if (hasClass(obj, clName)) return;
  obj.className = trim(obj.className + ' ' + clName);
}

function removeClass(obj, clName) {
  if (!hasClass(obj, clName)) return;
  var clN = ' ' + obj.className + ' ';
  eval("obj.className = trim(clN.replace(/ " + clName + " /g,''));");
}

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 findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return [curleft,curtop];
}

function pollCheckOption(e) {
  var el;
  if (window.event && window.event.srcElement) { el = window.event.srcElement; }
  if (e && e.target) { el = e.target; }
  if (!el) { return; }

  while (el.index == -1) el = el.parentNode;
  if (!hasClass(el, 'sel')) {
    var inputs = el.getElementsByTagName('input');
    addClass(el, 'sel');

    if (el.myParent.index > -1) {
      var lis = el.myParent.getElementsByTagName(el.ntype);
      var k = 0;
      for (var i = 0; i < lis.length; i++) {
        if (hasClass(lis[i], 'ans')) {
          if (k == el.myParent.index) {
            removeClass(lis[i], 'sel');
            break;
          }
          k++;
        }
      }
    }

    el.myParent.index = el.index;
    inputs[0].checked = true;
  }

}

function pollInitialize(glosowane) {
  var questions = O('poll').getElementsByTagName('ul');
  var tabOdp = new Array(glosowane.length);
  for (var j = 0; j < questions.length; j++) {
    var answers = questions[j].getElementsByTagName('li');
    for (var i = 0; i < answers.length; i++) {
      addEvent(answers[i], 'click', pollCheckOption);
      var spans = answers[i].getElementsByTagName('span');
      var inputs = answers[i].getElementsByTagName('input');
      spans[0].index = -1;
      inputs[0].index = -1;
	  inputs[0].checked = false;
      answers[i].index = i;
      answers[i].style.cursor = 'pointer';
      answers[i].ntype = 'li';
      answers[i].myParent = questions[j];
	  if (tabOdp[j] == i)
		answers[i].checked = true;
    }
    questions[j].index = -1;
  }
}

function pollInitializeImg(glosowane) {
  var questions = O('poll').getElementsByTagName('div');
  var tabOdp = new Array(glosowane.length);
  for (var j = 0; j < questions.length; j++) {
    var k = 0;
    if (hasClass(questions[j], 'pollQuestionImg')) {
      questions[j].index = -1;
      var answers = questions[j].getElementsByTagName('div');
      for (var i = 0; i < answers.length; i++) {
        if (hasClass(answers[i], 'kL')) {
          addEvent(answers[i], 'click', pollCheckOption);
          var imgs = answers[i].getElementsByTagName('img');
          var inputs = answers[i].getElementsByTagName('input');
          var mlinks = answers[i].getElementsByTagName('a');
          if (mlinks.length > 0) mlinks[0].index = -1;
          if (imgs.length > 0) imgs[0].index = -1;
          inputs[0].index = -1;
		  inputs[0].checked = false;
          answers[i].index = k++;
          answers[i].ntype = 'div';
          answers[i].myParent = questions[j];
		if (tabOdp[j] == i)
			answers[i].checked = true;		  
        }
      }
    }
  }
}

var dragObject;

function rankpollMove(n, k) {
  var objs = O('rankPoll').getElementsByTagName('li');
  for (var i = 0; i < objs.length; i++) {
    if (objs[i].index == n) {
      objs[i].index += k;
      objs[i].style.top = (objs[i].index * 172) + 'px';
      objs[i].imgMovU.style.display = (objs[i].index == 0) ? 'none' : 'block';
      objs[i].imgMovD.style.display = (objs[i].index == O('rankPoll').elems) ? 'none' : 'block';
      break;
    }
  }
}

function rankpollSwap(el0, n) {
  var objs = O('rankPoll').getElementsByTagName('li');
  var el1;
  for (var i = 0; i < objs.length; i++) {
    if (objs[i].index == el0.index + n) {
      el1 = objs[i];
      break;
    }
  }
  el0.index += n;
  el0.style.top = (el0.index * 172) + 'px';
  el0.imgMovU.style.display = (el0.index == 0) ? 'none' : 'block';
  el0.imgMovD.style.display = (el0.index == O('rankPoll').elems) ? 'none' : 'block';
  el1.index -= n;
  el1.style.top = (el1.index * 172) + 'px';
  el1.imgMovU.style.display = (el1.index == 0) ? 'none' : 'block';
  el1.imgMovD.style.display = (el1.index == O('rankPoll').elems) ? 'none' : 'block';
}

function rankpollMoveDown(e) {
  var el;
  if (window.event && window.event.srcElement) { el = window.event.srcElement; }
  if (e && e.target) { el = e.target; }
  if (!el) { return; }

  while (typeof(el.mark) == 'undefined') el = el.parentNode;
  rankpollSwap(el, 1);
}

function rankpollMoveUp(e) {
  var el;
  if (window.event && window.event.srcElement) { el = window.event.srcElement; }
  if (e && e.target) { el = e.target; }
  if (!el) { return; }

  while (typeof(el.mark) == 'undefined') el = el.parentNode;
  rankpollSwap(el, -1);
}

function rankpollDragStart(e) {
  var el;
  if (window.event && window.event.srcElement) { el = window.event.srcElement; }
  if (e && e.target) { el = e.target; }
  if (!el) { return; }

  if (hasClass(el, 'movU') || hasClass(el, 'movD')) return;
  while (typeof(el.mark) == 'undefined') el = el.parentNode;
  addClass(el, 'sel');
  var posx = 0;  var posy = 0;
  if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY; } else if (e.clientX || e.clientY) { posx = e.clientX + document.body.scrollLeft; posy = e.clientY + document.body.scrollTop; }
  el.mouseS = posy;
  el.topS = el.index * 172;
  dragObject = el;

  addEvent(document, 'mousemove', rankpollDragDo);
  addEvent(document, 'mouseup', rankpollDragEnd);
}

function rankpollDragEnd(e) {
  var el;
  if (window.event && window.event.srcElement) { el = window.event.srcElement; }
  if (e && e.target) { el = e.target; }
  if (!el) { return; }

  removeClass(dragObject, 'sel');
  dragObject.style.top = (dragObject.index * 172) + 'px';
}

function rankpollDragDo(e) {
  var el;
  if (window.event && window.event.srcElement) { el = window.event.srcElement; }
  if (e && e.target) { el = e.target; }
  if (!el) { return; }

  if (!hasClass(dragObject, 'sel')) return;

  var posx = 0;  var posy = 0;
  if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY; } else if (e.clientX || e.clientY) { posx = e.clientX + document.body.scrollLeft; posy = e.clientY + document.body.scrollTop; }

  var newTop = dragObject.topS + posy - dragObject.mouseS;
  if (newTop < 0) newTop = 0;
  if (newTop > O('rankPoll').maxElem) newTop = O('rankPoll').maxElem;
  var dbdo = dragObject.index * 172;
  if (newTop > dragObject.index * 172 + 172 / 2) { rankpollMove(dragObject.index + 1, -1); dragObject.index++; }
  if (newTop < dragObject.index * 172 - 172 / 2) { rankpollMove(dragObject.index - 1, 1); dragObject.index--; }
  dragObject.imgMovU.style.display = (dragObject.index == 0) ? 'none' : 'block';
  dragObject.imgMovD.style.display = (dragObject.index == O('rankPoll').elems) ? 'none' : 'block';
  dragObject.style.top = newTop + 'px';
}

function rank_showList() {
  var result = new Array();
  var objs = O('rankPoll').getElementsByTagName('li');
  for (var i = 0; i < objs.length; i++) {    
    result[i] = objs[i].index;

	var arg = 'odpowiedz' + i;
	var tmp = document.getElementById(arg);
	tmp.value = result[i]; 
  }
  //alert(result.join(','));
} 

function pollInitializeRank() {
  var obj = O('rankPoll');
  obj.style.position = 'relative';
  var objs = obj.getElementsByTagName('li'); 
  var result = new Array();
  
  for (var i = 0; i < objs.length; i++) {
  	var arg = 'odpowiedz' + i;
	var pom = document.getElementById(arg); 	
	result[i] = pom.value;
	
    objs[i].style.position = 'absolute';
    objs[i].style.top = (i * 172) + 'px';
    addEvent(objs[i], 'mousedown', rankpollDragStart);
    objs[i].mark = 1;
	objs[i].index = i;
    var imgs = objs[i].getElementsByTagName('img');
    for (var j = 0; j < imgs.length; j++) {
      if (hasClass(imgs[j], 'movU')) {
        addEvent(imgs[j], 'click', rankpollMoveUp);
        objs[i].imgMovU = imgs[j];
        if (i == 0) imgs[j].style.display = 'none';
      }
      if (hasClass(imgs[j], 'movD')) {
        addEvent(imgs[j], 'click', rankpollMoveDown);
        objs[i].imgMovD = imgs[j];
        if (i == objs.length - 1) imgs[j].style.display = 'none';
      }
    }
  }
  obj.style.height = (objs.length * 172) + 'px';
  obj.maxElem = (objs.length - 1) * 172;
  obj.elems = objs.length - 1;
  
  for (var i = 0; i < objs.length; i++) {
	if (objs[i].index != result[i]) {			
		rankpollSwap(objs[i],result[i]-objs[i].index);	
		i--;
	}
  }   
}

function chkAns(formul, czyCaptcha)  {
    var ans = formul.odpowiedz;
    var wynik = false;
    for (licznik = 0; licznik < ans.length; licznik++)  {
        if (ans[licznik].checked)  {
            wynik = true;
        }
    }
    if (!wynik)  {
        alert('Musisz wybrać odpowiedź!');
        return false;
    }
	if (czyCaptcha == 1) {
		var tmp = formul.captcha;
		var captcha = tmp.value;
		if (!captcha) {
			alert('Wpisz tekst z obrazka!');
			return false;
		}
	}
    return true;
}

function chkAnsRank(formul, czyCaptcha)  {
	if (czyCaptcha == 1) {
		var tmp = formul.captcha;
		var captcha = tmp.value;
		if (!captcha) {
			alert('Wpisz tekst z obrazka!');
			return false;
		}
	}
    return true;
}

function chkMulti(ilosc, formul, czyCaptcha)  {
	if (czyCaptcha == 1) {
		var tmp = formul.captcha;
		var captcha = tmp.value;
		if (!captcha) {
			alert('Wpisz tekst z obrazka!');
			return false;
		}
	}
    var msg   = "";
    var wynik = false;
	var czyJedna = 0;
    for (i = 0; i < ilosc; i++)  {
        wynik     = false;
        var ktory = i + '';
        var nazwa = 'odpowiedz' + ktory;
        var elem  = document.getElementsByName(nazwa);

        for (j = 0; j < elem.length; j++)  {
            if (elem[j].checked)  {
            wynik = true;
            }
        }
        if (!wynik)  {
            msg += (i+1) + ' ';
		czyJedna +=1;

        }
    }
    if (czyJedna == 1)  {
	alert ('Odpowiedz na pytanie nr ' + msg);
	return false;
    }
    else if (msg != "")  {
        alert ('Odpowiedz na pytania: ' + msg);
        return false;
    }	
    return true;
}

