﻿/*
Funktion specifik fr omrstningar/tvlingar fr att verifiera samt
skicka omrstningar/tvlingar/rstningar
*/
function sendPoll(verifyElements, allElements, PollId){
    var arrVerifyElements = verifyElements.split("|");
    var arrAllElements = allElements.split("|");
    var QAIds = [];
    var SendOK = true;
    var notAllAnswered = "Du mste svara p frgan...";
    var i = 0;
    var obj = null;

    var arrObjects = null;
    var j = 0;

    for(i=0;i<arrVerifyElements.length;i++){
        /*
        eftersom det ligger en pipe sist i strngen som 
        splittas fr vi ett tomt-element p sista 
        plats i arrayen, och den vill vi ju inte frga p
        */
        if(arrVerifyElements[i].length > 0){
            obj = document.getElementById(arrVerifyElements[i]);

            //Felhantering iom att ID-attributen r borttagna p startsidan			
            if(obj===null)
            {			
                arrObjects = document.getElementsByName(arrVerifyElements[i]);
                if (arrObjects.length>0 && arrObjects[0].type=='radio')
                {	
                    //Loopa igenom radioknapparna och se vilken som r satt
                    for(j=0;j<arrObjects.length;j++)
                    {			
                        if (arrObjects[j].checked)
                        {
                            obj = arrObjects[j];
							
                            //Stt id d denna anvnds senare
                            obj.id=obj.name;
                        }					
                    }					
                }
            }
            else if (obj.id.length===0)
            {
                //IE hmtar in via name med getelementbyid, dock stts ej .id
                obj.id=obj.name;
            }

            if(obj===null || !validateObject(obj)){
                SendOK = false;
                //notAllAnswered += "\nFrga nummer " + (i+1);
            }
        }
    }
    if(!SendOK){
        if(arrVerifyElements.length === 1) {
            alert("Du mste svara fr att kunna rsta!");
        } else {
            alert(notAllAnswered);
        }
    }else{
        for(i=0;i<arrAllElements.length;i++){
            /*
            eftersom det ligger en pipe sist i strngen som 
            splittas fr vi ett tomt-element p sista 
            plats i arrayen, och den vill vi ju inte frga p
            */
            if(arrAllElements[i].length > 0){
                obj = document.getElementById(arrAllElements[i]);
                QAIds.push(obj.id + "|" + getValue(obj));
            }
        }
        Teknomedia.EdgeII.Website.VoteService.Vote(PollId, QAIds, voteCompleted,ajaxError,QAIds);
    }
}

function voteCompleted(r,state){
    createAjaxStatIframe();
    if (typeof(r.Error)!=="undefined"){
        if (r.Error==="") {
            if (r.Value2!==null) {
                alert(r.Value2);
            } else {
                document.location.href= r.Value1;
            }        
        } else {
            if (r.Value5!==null) {
                var email = prompt(r.Value5,"");
                if (email) {
                    if (email!=="") {
                        Teknomedia.EdgeII.Website.VoteService.Vote2(r.Value1, email, state, voteCompleted);
                    }
                }
            } else if (r.Value2!==null) {
                if (confirm(r.Value2)) {
                    document.location.href = r.Value3;
                }
            } else {
                alert(r.Error);
            }
        }
    } else {
        document.location.href = r;
    }
}



/*
Generell funktion fr att verifiera formulrobjekt.
Inparameter: Alla idn p de element som ska kollas 
separerade med komma(,)
Returnerar: bool, true om allt r ok, annars false
*/
function validateObjects(){
    var retVal = true;    
    for(var i=0;i<arguments.length;i++){
        var obj = document.getElementById(arguments[i]);
        if(!validateObject(obj)){
            retVal = false;
        }
    }
}

/*
Validerar ett formulrobjekt
Inparameter: objektet
Return: bool, tror om ok, annars false
*/
function validateObject(object)
{
    var ok = true;
    switch(object.type){
        case "radio":
            ok = verifyRadioAndCheckbox(object);
            break;
        case "checkbox":
            ok = verifyRadioAndCheckbox(object);
            break;
        case "text":
            ok = verifyText(object);
            break;
        case "select-one":
            ok = verifySelect(object);
            break;
        case "select-multiple":
            ok = verifySelect(object);
            break;
        case "textarea":
            ok = verifyText(object);
            break;
    }
    return ok;
}

/*
Validerar ett formulrobjekt av typen checkbox eller radio
Skall ej anropas direkt, g via validateObject()!
Inparameter: objektet
Return: bool, tror om ok, annars false
*/
function verifyRadioAndCheckbox(obj){
    var objects = document.getElementsByName(obj.id);
    for(var i=0;i<objects.length;i++) {
        if(objects[i].checked) {
           return true;
        }
    }
    return false;
}

/*
Validerar ett formulrobjekt av typen text eller textarea
Skall ej anropas direkt, g via validateObject()!
Inparameter: objektet
Return: bool, tror om ok, annars false
*/
function verifyText(obj){
    if(obj.value.length > 0) {
       return true;
   } else {
       return false;
    }
}

/*
Validerar ett formulrobjekt av typen select
Skall ej anropas direkt, g via validateObject()!
Inparameter: objektet
Return: bool, tror om ok, annars false
*/
function verifySelect(obj){
   if(obj.selectedIndex > 0) {
       return true;
   } else {
       return false;
    }
}

/****** FORMULRVRDEN ******/
/*
Inparameter: formulrobjektet
Returnerar: Vrdet. Om flera val r mjliga returneras en kommaseparerad lista
*/
function getValue(object)
{
    var value = "";
    switch(object.type){
        case "radio":
            value = getRadioAndCheckboxSelectedValue(object);
            break;
        case "checkbox":
            value = getRadioAndCheckboxSelectedValue(object);
            break;
        case "text":
            value = getTextValue(object);
            break;
        case "textarea":
            value = getTextValue(object);
            break;
        case "select-one":
            value = getSelectValue(object);
            break;
        case "select-multiple":
            value = getSelectValue(object);
            break;
    }
    return value;
}

/*
Hmtar vrdet fr en checkbox eller radio
Returnerar: Vrdet. Om det r en checkbox s returneras en kommaseparerad lista med alla vrden.
*/
function getRadioAndCheckboxSelectedValue(obj){
    var objects = document.getElementsByName(obj.id);
    var selValue = "";
    for(var i=0;i<objects.length;i++){
        if(objects[i].checked){
            selValue += objects[i].value + ",";
        }           
    }
    return selValue.substring(0,selValue.length-1);
}

/*
Hmtar vrdet fr en selectbox
Returnerar: Vrdet. Om det r en multiple s returneras en kommaseparerad lista med alla vrden.
*/
function getSelectValue(obj){    
    var selValue = "";
    for (i=0; i<obj.options.length; i++) {
        if (obj.options[i].selected){
            selValue += obj.options[i].value + ",";
        }
    }
    return selValue.substring(0,selValue.length-1);
}

/*
Hmtar vrdet fr en textarea eller input type text
Returnerar: Vrdet.
*/
function getTextValue(object){
    return object.value;
}
/****** /FORMULRVRDEN ******/

/*
Hmtar Formulret som ska ligga inne i en artikel
*/
function getPollFormComplete(){
    var args = arguments;
    if (args[0].Error === ""){
        document.getElementById(args[0].Value2).innerHTML = args[0].Value1;
        //alert(args[0].Value1);
    } else {
        document.getElementById(args[0].Value2).innerHTML = "<!--" + args[0].Error + "-->";
    }

    //document.getElementById("poll").innerHTML = r;
}

// Returnerar antal forumInlgg p en trd, denna funktion ligger i denna service fr att den alltid finns med p frstasidan.
function getComments(id){
    if (typeof(Teknomedia)!="undefined"){
        if (typeof(Teknomedia.EdgeII.Website.VoteService.GetForumComments)!="undefined"){
            // html-attributet id fr inte innehlla ett vrde som brjar med en siffra
            var forumId = parseInt(id, 10); // fr baktkompatibilitet
            if (isNaN(forumId)) {                
                forumId = parseInt(id.substr("forum".length), 10);
            }
            Teknomedia.EdgeII.Website.VoteService.GetForumComments(forumId, getCommentsComplete);
        }
    }
}

function getCommentsComplete(r){
    if (r !== null){
        if (r.Value2 !== ""){
            com = $get(r.Value1);
            if (com === null) {
                com = $get("forum" + r.Value1);
            }
            if (com!==null){
                if (com.innerHTML.indexOf(r.Value2)<0){
                    com.innerHTML += " " + r.Value2;
                }
            }
        }
    }
}

