/*
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 = new Array();
    var SendOK = true;
    var notAllAnswered = "Du måste svara på frågan...";

    for(var 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){
            var obj = document.getElementById(arrVerifyElements[i]);
            if(!validateObject(obj)){
                SendOK = false;
                //notAllAnswered += "\nFrga nummer " + (i+1);
            }
        }
    }
    if(!SendOK){
        if(arrVerifyElements.length === 1)
            alert("Du måste svara för att kunna rösta!");
        else
            alert(notAllAnswered);
    }else{
        for(var 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){
                var obj = document.getElementById(arrAllElements[i]);
                QAIds.push(obj.id + "|" + getValue(obj));
            }
        }
        Teknomedia.EdgeII.Website.VoteService.Vote(PollId, QAIds, voteCompleted,ajaxError,QAIds);
    }
}


function signatureIsOk(elm)
{
 if(elm == null)return true;
 var s = elm.value;
 if(s.length < 2)
 {
     alert("Signaturen måste innehålla minst 2 tecken.");
     return false;
 }
 var re = /[^a-zA-Z0-9åÅäÄöÖ_ ]|[_ ]{2,}|^ | $/gi;
 if(re.test(s))
 {
     s = s.replace(/[^a-zA-Z0-9åÅäÄöÖ_ ]/gi, "");

     re = /[_ ]{2,}/gi;
     while(re.test(s))
         s = s.replace(/[ ]{2,}/g, " ");

     re = /^ /gi;
     while(re.test(s))
         s = s.replace(/^ /, "");

     re = / $/gi;
     while(re.test(s))
         s = s.replace(/ $/, "");

     alert("Signaturen innehåller felaktiga tecken.");
     elm.value = s;
     return false;
 }
 else return true;
}

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;
    var args = validateObjects.arguments;
    for(var i=0;i<args.length;i++){
        var obj = document.getElementById(args[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 ******/

/*
Hämtar Formuläret 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 forumInlägg på en tråd, denna funktion ligger i denna service för att den alltid finns med på förstasidan.
function getComments(id){
    if (typeof(Teknomedia)!="undefined"){
        if (typeof(Teknomedia.EdgeII.Website.VoteService.GetForumComments)!="undefined"){
           Teknomedia.EdgeII.Website.VoteService.GetForumComments(id, getCommentsComplete);
        }
    }
}

function getCommentsComplete(r){
    if (r!=null){
        if (r.Value2!=""){
            com = $get(r.Value1);
            if (com!=null){
                if (com.innerHTML.indexOf(r.Value2)<0){
                    com.innerHTML += " " + r.Value2;
                }
            }
        }
    }
}

