function SendContactForm() {
    $("#divButtonContact").hide();
    $("#divWaitContact").show();
    
    var name = "";
    var email = "";
    var twitter = "";
    var message = "";
    
    if($("#ctl00_ContentPlaceHolder1_txtName").length >0)
        name = trim($("#ctl00_ContentPlaceHolder1_txtName").val());
    if($("#ctl00_ContentPlaceHolder1_txtEmail").length >0)
        email = trim($("#ctl00_ContentPlaceHolder1_txtEmail").val());
    if($("#ctl00_ContentPlaceHolder1_txtTwitter").length >0)
        twitter = trim($("#ctl00_ContentPlaceHolder1_txtTwitter").val());
    if($("#ctl00_ContentPlaceHolder1_txtMessage").length >0)
        message = trim($("#ctl00_ContentPlaceHolder1_txtMessage").val());  
          
    PostContactForm(name, email, twitter, message);
}

function DisableContactForm(disabled) {
    $("#ctl00_ContentPlaceHolder1_txtName").attr("disabled", disabled);
    $("#ctl00_ContentPlaceHolder1_txtEmail").attr("disabled", disabled);
    $("#ctl00_ContentPlaceHolder1_txtTwitter").attr("disabled", disabled);
    $("#ctl00_ContentPlaceHolder1_txtMessage").attr("disabled", disabled);
}

function PostContactForm(name,email,twitter,message) {
    DisableContactForm(true);
    
    var urlMethod = "ws.asmx/SendContactForm";
    var jsonData = "{ name: '" + escape(name) + "', email: '" + escape(email) + "', twitter: '" + escape(twitter) + "', message : '" + escape(message) + "'}";
    SendAjax(urlMethod, jsonData, ContactFormWasSent);
}

function ContactFormWasSent(msg) {
    DisableContactForm(false);
        
    if (msg.d.length == 0) {
        $("#ctl00_ContentPlaceHolder1_txtName").val("");
        $("#ctl00_ContentPlaceHolder1_txtEmail").val("");
        $("#ctl00_ContentPlaceHolder1_txtTwitter").val("");
        $("#ctl00_ContentPlaceHolder1_txtMessage").val("");
        $("#divContactForm1").hide();
        $("#divContactForm2").fadeIn(1000);
        return;
    }
    
    $("#divButtonContact").show();
    $("#divWaitContact").hide();
    
    var errorMessage = "<p>It looks like you have to check data entered&hellip;</p><ul class='error-list'>";
    $.each(msg.d,function(key, val) {
        if (val.Message != "") errorMessage += "<li>" + val.Message + "</li>";
    });
    errorMessage += "</ul>";

    $.prompt(errorMessage);
}

/* Pledge functions */
function SendPledgeForm() {
    var pledges = ""; 
    
    $("#divButtonPledge").hide();
    $("#divWaitPledge").show();
    var name = "";
    var email = "";
    var twitter = "";
    var wrong = "";
    
    if($("#ctl00_ContentPlaceHolder1_txtName").length > 0)
        name = trim($("#ctl00_ContentPlaceHolder1_txtName").val());
    if($("#ctl00_ContentPlaceHolder1_txtEmail").length > 0)
        email = trim($("#ctl00_ContentPlaceHolder1_txtEmail").val());
    if($("#ctl00_ContentPlaceHolder1_txtTwitter").length > 0)
        twitter = trim($("#ctl00_ContentPlaceHolder1_txtTwitter").val());
    if($("#ctl00_ContentPlaceHolder1_drdWrong").length > 0)
        wrong = trim($("#ctl00_ContentPlaceHolder1_drdWrong").val());

    $("input:checked").each(
        function() {
            var myid = $(this).attr('id');
            myid = myid.substring(myid.length - 1, myid.length);
            pledges += myid + ",";
        }
    );

    PostPledgeForm(name, email, twitter, pledges, wrong);
}

function DisablePledgeForm(disabled) {
    $("#ctl00_ContentPlaceHolder1_txtName").attr("disabled", disabled);
    $("#ctl00_ContentPlaceHolder1_txtEmail").attr("disabled", disabled);
    $("#ctl00_ContentPlaceHolder1_txtTwitter").attr("disabled", disabled);
}

function PostPledgeForm(name, email, twitter, pledge, wrong) {
    DisablePledgeForm(true);
    
    var urlMethod = "ws.asmx/SavePledge";
    var jsonData = "{ name: '" + escape(name) + "', email: '" + escape(email) +
                   "', twitter: '" + escape(twitter) + "', pledge : '" + escape(pledge) +
                   "', wrong : '" + escape(wrong) + "'}";
    SendAjax(urlMethod, jsonData, PledgeFormWasSent);
}

function PledgeFormWasSent(msg) {
    DisablePledgeForm(false);

    if (msg.d.length == 0) {
        ActivatePledgeAckURLs();
        
        $("#ctl00_ContentPlaceHolder1_txtName").val("");
        $("#ctl00_ContentPlaceHolder1_txtEmail").val("");
        $("#ctl00_ContentPlaceHolder1_txtTwitter").val("");
        $("#divPledgeForm1").hide();
        $("#divPledgeForm2").fadeIn(1000);
        $("#divButtonPledge").show();
        $("#divWaitPledge").hide();
        return;
    }

    $("#divButtonPledge").show();
    $("#divWaitPledge").hide();
    
    var errorMessage = "<p>It looks like you have to check data entered&hellip;</p><ul class='error-list'>";
    $.each(msg.d, function(key, val) {
        if (val.Message != "") errorMessage += "<li>" + val.Message + "</li>";
    });
    errorMessage += "</ul>";

    $.prompt(errorMessage);
}

function isValidURL(value){
    var v = new RegExp();
    v.compile(/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&amp;=]*)?/);
    return (v.test(value));
}

/* Vote */
function vote(linkWrong, labelWrong, wrongId) {
    if ($("#" + linkWrong).hasClass("wrong_selected")) return false;
    var urlMethod = basePath + "ws.asmx/SaveVote";
    var jsonData = "{ wrongId: '" + wrongId + "', labelWrong: '" + labelWrong + "' }";
    $("#" + linkWrong).attr("onclick", "return false;");
    $("#" + linkWrong).attr("class", "wrong_selected");
    SendAjax(urlMethod, jsonData, voteSent);
    return false;
}

function voteSent(msg) {
    if (msg.d.length > 0) {
        var errorMessage = "<p>It looks like you have to check data entered&hellip;</p><ul class='error-list'>";
        var error = false;
        $.each(msg.d, function (key, val) {
            if (val.TypeErrorMessage == 1) {
                if (val.Message != "") errorMessage += "<li>" + val.Message + "</li>";
                error = true;
            }
            else if ($("#" + val.Field).length > 0) {
                $("#" + val.Field).text(val.Message);
            }
        });
        errorMessage += "</ul>";
        if (error)
            $.prompt(errorMessage);
    }
}

function url(page,width,height) {
    window.open(page,"_blank","width="+width+",height="+height+",left=200,top=150");
}

function retrieveFace(page, wrongId, link) {
    url('http://www.facebook.com/sharer.php?u=' + page, 626, 400);
    PostUpdateFbShares(wrongId, link);
}

function PostUpdateFbShares(wrongId, link) {
    var urlMethod = basePath + "ws.asmx/UpdateFbShares";
    var jsonData = "{ wrongId: " + wrongId + ", field: '" + link + "'}";
    SendAjax(urlMethod, jsonData, UpdateFbSharesSent);
}

function PostUpdateRetweets(wrongId, link) {
    var urlMethod = basePath + "ws.asmx/UpdateRetweets";
    var jsonData = "{ wrongId: " + wrongId + ", field: '" + link + "'}";
    SendAjax(urlMethod, jsonData, UpdateRetweetsSent);
}


function UpdateFbSharesSent(msg) {
    if (msg.d.length > 0) {
        $.each(msg.d, function (key, val) {
            if (val.TypeErrorMessage == 2 && $("#" + val.Field).length > 0) {
                $("#" + val.Field).children().html("(" + val.Message + ")");
            }
        });
    }
}

function UpdateRetweetsSent(msg) {
    if (msg.d.length > 0) {
        $.each(msg.d, function (key, val) {
            if (val.TypeErrorMessage == 2 && $("#" + val.Field).length > 0) {
                $("#" + val.Field).children().html("(" + val.Message + ")");
            }
        });
    }
}

function readMoreWrongList(startRow,filter,type) {
     $("#ctl00_ContentPlaceHolder1_wrongsList_lnkReadMore").hide();
     $("#readMoreLoader").show();

     jQuery.ajax({
         url: basePath + "writeList.aspx?startRow=" + startRow + "&filter=" + filter + "&type=" + type,
         type: "GET",
         cache: false,
         async: false,
         timeout: 100,
         dataType: "html",
         error: function(error) {
             alert(error);
         },
         success: function(msg) {
             if ($("#divReadMore").length > 0)
                 $("#divReadMore").before(msg);
             else
                 $("#list-wrongs").append(msg);
             $("#ctl00_ContentPlaceHolder1_wrongsList_lnkReadMore").attr("onClick", "javascript:readMoreWrongList(" + (startRow + 10) + "," + filter + ", " + type + ");");
             $("#readMoreLoader").hide();
             $("#ctl00_ContentPlaceHolder1_wrongsList_lnkReadMore").show();
         }
     });
    return false;
}

function readMoreWrongListVersion2(startRow, searchFilter, stateIdFilter, viewWrongest) {
    $("#ctl00_ContentPlaceHolder1_wrongsList_lnkReadMore").hide();
    $("#readMoreLoader").show();

    jQuery.ajax({
        url: basePath + "writeList.aspx?version=2&startRow=" + startRow + "&searchFilter=" + searchFilter + "&stateIdFilter=" + stateIdFilter + "&viewWrongest=" + viewWrongest,
        type: "GET",
        cache: false,
        async: false,
        timeout: 100,
        dataType: "html",
        error: function (error) {
            alert(error);
        },
        success: function (msg) {
            var $divReadMore = $('div[id$="_divReadMore"]');
            if ($divReadMore.length > 0)
                $divReadMore.before(msg);
            else
                $("#list-wrongs").append(msg);
            $("#ctl00_ContentPlaceHolder1_wrongsList_lnkReadMore").attr("onClick", "javascript:readMoreWrongListVersion2(" + (startRow + 10) + ",'" + searchFilter + "', " + stateIdFilter + ", " + viewWrongest + ");");
            $("#readMoreLoader").hide();
            $("#ctl00_ContentPlaceHolder1_wrongsList_lnkReadMore").show();
        }
    });
    return false;
}

function AddLighBoxesPhotoAndVideo() {
    $('div#list-wrongs div.preview a.video img.video').each(function() {
        $(this).attr("src", $.jYoutube($(this).parent().attr("href"), 'big'));
    });
    
    $('div#list-wrongs div.preview a.thumbnail').ceebox({ imageGallery: false });
    $('div#list-wrongs div.preview a.video').ceebox({ videoGallery: false, videoWidth: 500 });

}


function AddLightBoxesDownloadPage() {
    $('div.download-section  a.thumbnail').ceebox({ imageGallery: false });
    $('div.download-section a.video').ceebox({ videoGallery: false, videoWidth: 320 });

}

function AddLighBoxPhotoAndVideo(id) {
    
    var $link = $("#" + id);

    if ($link.hasClass("video")) {
        $link.find("img.video").attr("src", $.jYoutube($link.attr("href"), "big"));
        $link.ceebox({ videoGallery: false, videoWidth: 500 });
    } else {
        $link.ceebox({ imageGallery: false });
    }
}

function AddLighBoxesBillBoards() {
    $('div.preview a.video img.video').each(function () {
        $(this).attr("src", $.jYoutube($(this).parent().attr("href"), 'big'));
    });

    $('div.preview a.thumbnail').ceebox({ imageGallery: false });
    $('div.preview a.video').ceebox({ videoGallery: false, videoWidth: 500 });
}

function showHide(editLink,showEditLink,showDiv, hideDiv) {
    if (!showEditLink)
        $("#" + editLink).hide();
    else
        $("#" + editLink).show();
    $("#" + showDiv).show();
    $("#" + hideDiv).hide();
}

function ActivatePledgeAckURLs() {
    status = encodeURI('I pledged to ' + $('#ctl00_ContentPlaceHolder1_drdPledge').val() 
                       + ' on LitteringIsWrongToo.org');
    
    $('#fb-pledge').attr('href', 'http://www.facebook.com/sharer.php?u=' + encodeURI('http://www.litteringiswrongtoo.org/') + '&t=' + status);
    $('#tw-pledge').attr('href', 'http://twitter.com/home?status=' + status);
}

function ltrim(s) {
	return s.replace( /^\s*/, "" );
}

function rtrim(s) {
	return s.replace( /\s*$/, "" );
}

function trim(s){
	return rtrim(ltrim(s));
}




/*Flag as Innapropriate*/
function flagWrongAsInappropriate(linkId, wrongId) {
    if ($("a.flagging-as-inappropriate").length > 0) return;
    var urlMethod = basePath + "ws.asmx/FlagWrongAsInappropriate";
    var jsonData = "{ wrongId: " + wrongId + "}";
    $("#" + linkId).addClass("flagging-as-inappropriate");
    SendAjax(urlMethod, jsonData, flagWrongAsInappropriateSent);
}

function flagWrongAsInappropriateSent(msg) {
    var $link = $("a.flagging-as-inappropriate").removeClass("flagging-as-inappropriate");
    
    if (msg.d.length > 0) {
        var errorMessage = "<p>Errors ocurred while processing your request</p><ul class='error-list'>";
        var error = false;
        $.each(msg.d, function (key, val) {
            if (val.TypeErrorMessage == 1) {
                if (val.Message != "") errorMessage += "<li>" + val.Message + "</li>";
                error = true;
            }
            else if ($("#" + val.Field).length > 0) {
                $("#" + val.Field).children().html("(" + val.Message + ")");
            }
        });
        errorMessage += "</ul>";
        if (error)
            $.prompt(errorMessage);
    }
    else {
        $link.removeClass("flag-inappropriate").addClass("flagged-as-inappropriate").removeAttr("onClick").text("(Flagged)");
    }
}

/* Batch Wrong Uploaders*/

function validateWrongList(type){
    var 
        wrong = null,
        errorList = "",
        wrongs = "";
    
    function addError(i, msg){
        errorList += "<li>Wrong "+ (i + 1) +": "+ msg +"</li>";
    };
    
    
    if(type == "p"){
        var $dynamicContainer = $("#div-step2").find("div.new-wrong-list");
        var
            $wrongs = $dynamicContainer.find("div.wrong input"),
            $usernames = $dynamicContainer.find("div.username input"),
            $states = $dynamicContainer.find("div.state select"),
            $emails = $dynamicContainer.find("div.email input"),
            $photos = $dynamicContainer.find("div.item input.photo");     
    }else{
        var $table = $("table.wrong-batch-loader-grid");
        var 
            $wrongs = $table.find("input.wrong"),
            $usernames = $table.find("input.username"),
            $states = $table.find("select.state"),
            $emails = $table.find("input.email"),
            $types= $table.find("select.wrong-type-list"),
            $videos = $table.find("input.video");
    }
    
    
    for(var i = 0, n = $usernames.length; i < n; i++){
        wrong = {
            username: $.trim($usernames.eq(i).val()),
            state: $states.eq(i).val(),
            email: $.trim($emails.eq(i).val()),
            wrong: $.trim($wrongs.eq(i).val()),
            photo: (type == "p")? $.trim($photos.eq(i).val()): "",
            type: (type == "p")? "p" : $types.eq(i).val(),
            video: (type == "p")? "" : $.trim($videos.eq(i).val())
        }
        
        
        if(wrong.username == "")
            addError(i, "Username is required");
            
        if(wrong.state == "-1")
            addError(i, "You must select a state");
        
        if(wrong.email == "" || !/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(wrong.email))
            addError(i, "Email must be well formed");            
            
        if(wrong.wrong == "")
            addError(i, "Wrong is required");
        
        if(wrong.type == "v" && (wrong.video == "" || !/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(wrong.video)))
            addError(i, "Please enter a valid YouTube URL");
        
        else if(wrong.type == "p" && wrong.photo == "")
            addError(i, "Photo is required");
            
        wrongs +=  
            "{username: '" + escape(wrong.username) + "'" + 
            ",state: '" + escape(wrong.state) + "'" +
            ",email: '" + escape(wrong.email) + "'" +
            ",wrong: '" + escape(wrong.wrong) + "'" +
            ",type: '" + escape(wrong.type) + "'" +
            ",video: '" + escape(wrong.video) + "'" +
            ",photo: '" + escape(wrong.photo) + "'}";
        if(i < n -1) wrongs += ",";
    }
    
    
    return {
        errorList: errorList,
        wrongs: wrongs
    };
}

function SaveWrongList(type){
    var o = validateWrongList(type);

    if (type == "p") {
        if (o.errorList != "") {
            $("ul#ulPhoto").html(o.errorList).show();
            return false;
        }
        $("#div-step2").hide();
    }
    else {
        if (o.errorList != "") {
            $("ul#ctl00_ContentPlaceHolder1_batchtextandvideo_ulErrorList").html(o.errorList).show();
            return false;
        }
        $("table.wrong-batch-loader-grid:first, div.save-button-placeholder, ul.error-list, ul.steps").hide();
    }
    $("#divWaitWrongUpload").show();
    SendAjax("../ws.asmx/SaveWrongs", "{wrongs: [" + o.wrongs + "]}", SaveWrongListResponse);
    return true;
}

function SaveWrongListResponse(response){
    $("#divWaitWrongUpload").hide();
    if(response.d.length == 0){
        document.location = "../user/campaigntoolkit.aspx?success=1"
    }
    else{
        var errorList = "", errorIndexes = [], temp, i, $rows = $("table.wrong-batch-loader-grid tr"), n = 0;
        
        $("table.wrong-batch-loader-grid:first, div.save-button-placeholder, ul.error-list, #div-step2, ul.steps").show();
        
        for(i = 0; i < response.d.length ; i++){
            try{
                temp = parseInt(response.d[i].Field);                
                if($.inArray(temp, errorIndexes) == -1) errorIndexes.push(temp);
                errorList += "<li>Wrong "+ (i + 1) +": "+ response.d[i].Message +"</li>";
            }catch(e){
                errorList += "<li>"+ response.d[i].Message +"</li>";
            }
        }
        if(("table.wrong-batch-loader-grid:first").length > 0){
            temp = 1;
            for(i = 0, n = $rows.length - 1; i < n; i++){
                if($.inArray(i, errorIndexes) >= 0){
                    $rows.eq(i + 1).find("td.rownum:first").text(temp);
                    temp++;
                }else{
                    $rows.eq(i + 1).hide();
                }
            }
            $("table.wrong-batch-loader-grid tr:hidden").remove();
        }
        
        $("ul.error-list").html(errorList);
        
    }
}
//NOT USED
function WrongBatchPhotoUploaded(response, $placeHolder) { 
    if (response == "0") {
        alert('Fail :-(');
        return;
    }
    $placeHolder.find("input[type='hidden'].uploaded-photo").val(response);
    $placeHolder.find("object").hide();
    $placeHolder.find("a.ceebox-trigger, a.command-delete-photo").attr("href", "../App_Resources/photos/" + response).show();
    $placeHolder.find("a.ceebox-trigger").ceebox({ imageGallery: false });
}
