var isOpen = false;
var zoomlevel = 136;
var ms_orig = 0;
var morecats = false;
var morewords = false;
var gridview = true;
$(document).ready(function() {
    var isOpen = false;
    
    $("#ppw-sort-select").selectbox();
    $(".ppw-popup").draggable();
    zoomlevel = $("#sz").val();
    ms_orig = $("#ms").val();
    $("#ppw-options-zoom-slider").slider({
        min: 91,
        max: 175,
        value: zoomlevel,
        slide: function(event, ui) {
            SliderChanged(ui.value);
        }
    });
    $("#ppw-category-more").click( function() {
        if(morecats){
            return;
        }
        morecats = true;
        $("#ppw-popular-category-more .ppw-content").html($("#ppw-more-cats").html());
        $("#ppw-popular-category-more").removeClass("ppw-hidden");
    });
    $("#ppw-popup-more-close").click(function(){
        morecats = false;
        $("#ppw-popular-category-more").addClass("ppw-hidden");
    })
    $("#ppw-popup-more-close2").click(function(){
        morecats = false;
        $("#ppw-popular-category-more").addClass("ppw-hidden");
    });
    
    $("#ppw-popular-more").click( function() {
        if(morewords){
            return;
        }
        morewords = true;
        $("#ppw-popular-popular-more .ppw-content").html($("#ppw-more-words").html());
        $("#ppw-popular-popular-more").removeClass("ppw-hidden");
    });
    $("#ppw-popup-popular-close").click(function(){
        morewords = false;
        $("#ppw-popular-popular-more").addClass("ppw-hidden");
    })
    $("#ppw-popup-popular-close2").click(function(){
        morewords = false;
        $("#ppw-popular-popular-more").addClass("ppw-hidden");
    });
    
    $("#ppw-search-all").click(function(){
        $("#ppw-search-form").attr("action", "/");
        $("#ppw-search-within").removeAttr("checked");
        $("#ppw-search-within").parent().removeClass("ppw-checkbox-on");
        $("#ppw-search-within").parent().addClass("ppw-checkbox-off");
    });
    
    $("#ppw-search-within").click(function(){
        $("#ppw-search-form").removeAttr("action");
        $("#ppw-search-all").removeAttr("checked");
        $("#ppw-search-all").parent().removeClass("ppw-checkbox-on");
        $("#ppw-search-all").parent().addClass("ppw-checkbox-off");
    });
    
    $("#ppw-watch-eb").click(function(){
        $("#ppw-ret-eb").val(2);
        $("#ppw-pop-eb").removeAttr("checked");
        $("#ppw-pop-eb").parent().removeClass("ppw-checkbox-on");
        $("#ppw-pop-eb").parent().addClass("ppw-checkbox-off");
        Resources();
    });
    
    $("#ppw-pop-eb").click(function(){
        $("#ppw-ret-eb").val(8);
        $("#ppw-watch-eb").removeAttr("checked");
        $("#ppw-watch-eb").parent().removeClass("ppw-checkbox-on");
        $("#ppw-watch-eb").parent().addClass("ppw-checkbox-off");  
        Resources();
    });
    
    if($("#ppw-view-grid").hasClass("ppw-view-selected")) {
        gridview = true;
    } else {
        gridview = false;
    }
    
    
    $("#ppw-view-list").click(function(){
        if(!gridview){
            return;
        }
        $.cookie('view', 'list', { expires: 7, path: '/', domain: '.popwatchers.com'});
        gridview = false;
        $("#ppw-view-grid").removeClass("ppw-view-selected");
        $("#ppw-view-list").addClass("ppw-view-selected");
        $("#ppw-items").removeClass("ppw-grid");
        $("#ppw-items").addClass("ppw-list");
        listView();
    });
    
    $("#ppw-view-grid").click(function(){
        if(gridview){
            return;
        }
        $.cookie('view', 'grid', { expires: 7, path: '/', domain: '.popwatchers.com'});
        gridview = true;
        $("#ppw-view-grid").addClass("ppw-view-selected");
        $("#ppw-view-list").removeClass("ppw-view-selected");
        $("#ppw-items").removeClass("ppw-list");
        $("#ppw-items").addClass("ppw-grid");
        SliderChanged(zoomlevel); 
    });

    
    $("#ppw-options-toggle").click( function() {
        $("#ppw-options").slideToggle("slow", function(){
            isOpen = !isOpen;
            if(!isOpen){
                $("#ppw-options-toggle").css("top", 0);
                $("#ppw-options-lbl").removeClass("ppw-options-lbl-hide");
                $("#ppw-options-lbl").addClass("ppw-options-lbl-show");
                $("#ppw-options-arrow").removeClass("ppw-options-arrow-hide");
                $("#ppw-options-arrow").addClass("ppw-options-arrow-show");
            } else {
                $("#ppw-options-toggle").css("top", -3);
                $("#ppw-options-lbl").removeClass("ppw-options-lbl-show");
                $("#ppw-options-lbl").addClass("ppw-options-lbl-hide");
                $("#ppw-options-arrow").removeClass("ppw-options-arrow-show");
                $("#ppw-options-arrow").addClass("ppw-options-arrow-hide");
            }
            
        });
    });
    $('input[type="checkbox"]').click( function(){
        if( $(this).attr("checked") ) {
            $(this).parent().removeClass("ppw-checkbox-off");
            $(this).parent().addClass("ppw-checkbox-on");
        } else {
            $(this).parent().removeClass("ppw-checkbox-on");
            $(this).parent().addClass("ppw-checkbox-off");
        }
        Resources();
    });
    $('input[type="radio"]').click( function(){
        if( $(this).attr("checked") ) {
            $(this).parent().removeClass("ppw-checkbox-off");
            $(this).parent().addClass("ppw-checkbox-on");
        } else {
            $(this).parent().removeClass("ppw-checkbox-on");
            $(this).parent().addClass("ppw-checkbox-off");
        }
    });
    
    $('a[href^=/]').live('click', function(event){
        var href = $(this).attr('href');
        var uri = parseUri(href);
        if( (uri.host.indexOf("popwatchers.com") >= 0 || uri.host == "") 
            && $(this).attr("target") != "_blank") {
            event.preventDefault(); // 
            var link;
            if(uri.host != "") {
                link = "http://" + uri.host + uri.path;
            } else {
                link = uri.path;
            }
            var sep = "?";
            for(var i in uri.queryKey) {
                if(i == "sz" && $("#sz").val() != undefined){
                    link = link + sep + i + "=" + $("#sz").val();
                } else if (i == "ms" && $("#ms").val() != undefined) {
                    link = link + sep + i + "=" + $("#ms").val();
                } else {
                    link = link + sep + i + "=" + uri.queryKey[i];
                }
                if(sep == "?") {
                    sep = "&";
                }
            }
            if(uri.anchor != "" && uri.anchor != undefined){
                link += "#" + uri.anchor;
            }
            window.location = link;
        }
    });
    
    $(".ppw-grid .ppw-search-item.ppw-type-eb .ppw-item-image-thumb"
        +", .ppw-grid .ppw-search-item.ppw-type-am .ppw-item-image-thumb"
        +", .ppw-grid .ppw-search-item.ppw-type-amm .ppw-item-image-thumb"
        + ", #ppw-similars .ppw-search-item.ppw-type-eb .ppw-item-image-thumb"
        +", #ppw-similars .ppw-search-item.ppw-type-am .ppw-item-image-thumb"
        +", #ppw-similars .ppw-search-item.ppw-type-amm .ppw-item-image-thumb").load(function(){
        var width = $(this).width();
        var height = $(this).height();
        if($(this).width() * 0.75 > $(this).height() ) {
            $(this).width('100%');
            $(this).height('auto');
        }
    })
    .each(function(){
        if(this.complete) $(this).trigger("load");
    });
    $(".ppw-home-thmb .ppw-home-thmb-image img").load(function(){
        if($(this).width() >= $(this).height()) {
            //$(this).width('auto');
            $(this).height('100%');
        }
    })
    .each(function(){
        if(this.complete) $(this).trigger("load");
    });
    
    //Add target blank to pass validation
    $(".ppw-search-item a").each(function(){
        $(this).attr("target", "_blank");
    });
    $(".product-popular-item a").each(function(){
        $(this).attr("target", "_blank");
    });
    //$(".product-popular-item a").attr("target", "_blank");
    //target="_blank" 
    $("#ppw-options-zoom-plus").click(function(){
        $("#ppw-options-zoom-slider").slider("value", 175);
        SliderChanged(175);
    });
    $("#ppw-options-zoom-minus").click(function(){
        $("#ppw-options-zoom-slider").slider("value", 90);
        SliderChanged(90);
    });
    $("#ppw-search-form").submit(function(){
        $("[name='categoryChanger']").remove();
        $("[name='source']").remove();
        $("[name='pop_source']").remove();
        return true; 
    });
    SliderChanged(zoomlevel);
});

function UpdateView(services){
    if( services & 2 || services & 8){
        $("#ppw-popular-eb").removeClass("ppw-hidden");
    } else {
        $("#ppw-popular-eb").addClass("ppw-hidden");
    }
    
    if(services & 1){
        $(".ppw-type-am").each(function(){
            $(this).css("display","block");
        });
        $(".ppw-type-amm").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-am").each(function(){
            $(this).css("display","none");
        });
        $(".ppw-type-amm").each(function(){
            $(this).css("display","none");
        });
    }
    
    if(services & 2 || services & 8){
        $(".ppw-type-eb").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-eb").each(function(){
            $(this).css("display","none"); 
        });
    }
    
    if(services & 4){
        $(".ppw-type-bz").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-bz").each(function(){
            $(this).css("display","none"); 
        });
    }
    
    if(services & 16){
        $(".ppw-type-bb").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-bb").each(function(){
            $(this).css("display","none"); 
        });
    }
    
    if(services & 32){
        $(".ppw-type-zp").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-zp").each(function(){
            $(this).css("display","none"); 
        });
    }
    
    if(services & 64){
        $(".ppw-type-et").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-et").each(function(){
            $(this).css("display","none"); 
        });
    }
    
    if(services & 128){
        $(".ppw-type-br").each(function(){
            $(this).css("display","block");
        });
    }
    else{
        $(".ppw-type-br").each(function(){
            $(this).css("display","none"); 
        });
    }
}

function listView(){
    $(".ppw-search-item").width("100%");
    $(".ppw-search-item").attr("style","width:100%;height:auto;");
    $(".ppw-search-item").css("overflow", "hidden");
    //$(".ppw-search-item").css("padding-bottom", "20px");
    $(".ppw-search-item .ppw-vendor").css("left", (zoomlevel+55)+"px");
    $(".ppw-item-title").css("margin-top", "0px");
    $(".ppw-item-title").css("display", "block");
    //$("#ppw-items").css("padding-left", "0");
}

function gridView(){
    $(".ppw-search-item").width(zoomlevel);
    $(".ppw-search-item").height(  zoomlevel*0.75 + 50 );
    $(".ppw-search-item").css("overflow", "auto");
    $(".ppw-search-item").css("padding-bottom", "5px");
    $(".ppw-item-title").css("margin-top", "15px");
    $(".ppw-item-title").css("display", "block");
    $("#ppw-items").css("padding-left", "10");
}


function SliderChanged(value){
    zoomlevel = parseInt(value);  
    $("#sz").val(zoomlevel);
    $(".ppw-grid .ppw-search-item").width(zoomlevel);
    $(".ppw-grid .ppw-search-item").height(  zoomlevel*0.75 + 50 );
    $(".ppw-item-image").width(zoomlevel);
    $(".ppw-item-image").height( zoomlevel*0.75);
    if(gridview){
        Centrify(zoomlevel);
    } else {
        $(".ppw-search-item .ppw-vendor").css("left", (zoomlevel+55)+"px");
    }
}

function Centrify(value){
    var totalItemWidth = parseInt(value) + 42;
    var allWidth = $(document).width() - (73*2) - 30;
    var items = parseInt( allWidth / totalItemWidth );
    var difference = ( allWidth - totalItemWidth * items ) / 2;
    //alert(difference + " " + items + " " + allWidth + " " +totalItemWidth + " " +value )
    $("#ppw-items").css("padding-left", difference);
    $("#ppw-items").css("padding-right", difference);
}


function Resources(){
    $(document).stopTime("reloader");
    var result = 0;
    $("[name='source']").each(function(){
        if($(this).attr('checked')){
            result = result | parseInt($(this).val());
        }
    });
    $("#ms").val(result);
    UpdateView(result);
    if((ms_orig & result) != result){
        $(document).oneTime("2s", "reloader", function(){
            var uri = parseUri(location.href);
            var link;
            if(uri.host != "") {
                link = "http://" + uri.host + uri.path;
            } else {
                link = uri.path;
            }
            var sep = "?";
            var isSz = false;
            var isMs = false;
            for(var i in uri.queryKey) {
                if(i == "sz"){
                    link = link + sep + i + "=" + $("#sz").val();
                    isSz = true;
                } else if (i == "ms") {
                    link = link + sep + i + "=" + $("#ms").val();
                    isMs = true;
                } else {
                    link = link + sep + i + "=" + uri.queryKey[i];
                }
                if(sep == "?") {
                    sep = "&";
                }
            }
            if(!isSz){
                link = link + sep + "sz=" + $("#sz").val();
                sep = "&";
            }
            
            if(!isMs){
                link = link + sep + "ms=" + $("#ms").val();
            }
            
            
            window.location = link;
        });
    }
}

function parseUri (str) {
    var    o   = parseUri.options,
        m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
        uri = {},
        i   = 14;

    while (i--) uri[o.key[i]] = m[i] || "";

    uri[o.q.name] = {};
    uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
        if ($1) uri[o.q.name][$1] = $2;
    });

    return uri;
};

parseUri.options = {
    strictMode: false,
    key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
    q:   {
        name:   "queryKey",
        parser: /(?:^|&)([^&=]*)=?([^&]*)/g
    },
    parser: {
        strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
        loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
    }
};


//About page
function CheckRequired() 
{
 if(!check_firstname() || !check_lastname() || !check_email() || !check_comment() || !check_code())
  {
    return false;
  }
 else
  {
    return true;
  }
}

function check_comment()
{
    var error = "";

    if( !document.getElementById('comment').value || document.getElementById('comment').value.length < 10)
    {
        error += "You must enter some comment\n";
    }
    
         if(error)
         {
             document.getElementById('comment').focus();
        alert(error);
          return false;
         }
         else
         {
           return true;
         }
}


function check_code()
{
    var error = "";
    var reg_emailre = /^[A-Z]{4}$/;
      if(!document.getElementById('code').value.match(reg_emailre))
         {
          error += "Wrong code entered";
    }
        if(error)
         {
             document.getElementById('code').focus();
        alert(error);
           return false;
      }
    else
    {
        return true;
    }
}

function check_email()
{
    var error = "";
    var reg_emailre = /^[0-9a-z_\.\-]+@[0-9a-z_\-]+[\.a-z]{2,9}$/;
      if(!document.getElementById('email').value.match(reg_emailre))
         {
          error += "Wrong email entered";
    }
        if(error)
         {
             document.getElementById('email').focus();
        alert(error);
           return false;
      }
    else
    {
        return true;
    }
}

function check_lastname()
{
    var error = '';
    var reg_re = /[\;\,\|\[\]\$\'\"\!\@\#\%\^\&\*\(\)]/;
    if(document.getElementById('lname').value.match(reg_re))
    {
        error += "Wrong symbols used in Last Name\n";
    }
    if( !document.getElementById('lname').value || document.getElementById('lname').value.length < 3)
    {
        error += "Last Name lengths to small";
    }
    
         if(error)
         {
             document.getElementById('lname').focus();
        alert(error);
          return false;
         }
         else
         {
           return true;
         }
}

function check_firstname()
{
    var error = '';
    var reg_re = /[\;\,\|\[\]\$\'\"\!\@\#\%\^\&\*\(\)]/;
    if(document.getElementById('fname').value.match(reg_re))
    {
        error += "Wrong symbols used in First Name\n";
    }
    if( !document.getElementById('fname').value || document.getElementById('fname').value.length < 3)
    {
        error += "First Name lengths to small";
    }
    
         if(error)
         {
             document.getElementById('fname').focus();
        alert(error);
          return false;
         }
         else
         {
           return true;
         }
}

function AdjustSearchBar(isDefault) {
    if(isDefault) {
        $("#ppw-home-search-input input").css("font-weight", "normal");
        $("#ppw-home-search-input input").css("font-size", "18px");
    } else {
        $("#ppw-home-search-input input").css("font-weight", "bold");
        $("#ppw-home-search-input input").css("font-size", "24px");
    }
}

(function(){
    shareWidget = function(containerId) {
        var container = null;
        if(containerId !== null) {
            container = containerId;
        }
        
        var strings = {
            'ppw-title': 'enter product name',
            'ppw-bottom-line': 'examples: The lining is so warm, Made me laugh for 2 hours, Makes my butt look good',
            'ppw-product-category': 'Select a cateogory',
            'ppw-product-description': 'Tell your story of this purchase & why the product is especially good',
            'ppw-where': 'Where did you buy it? URL or store name',
            'ppw-how-much': 'How much was it?',
            'ppw-deal-tip': 'Do you have a deal tip?',
            'ppw-other-tip': 'Any other tips?'
        }
        
        function loadSimilars() {
            var keywords;
            keywords = $.trim($("#share #ppw-title").val());
            if (keywords == "") {
                return;
            }
            $.get("/ajax/getsimilars", 
            {   
                keywords: keywords
            },
            function(data, status) {
                $("#share #ppw-similar-list").html('');
                if(data.length>0){
                    for(i in data){
                        var item = data[i];
                        var itemHTML = "";
                        itemHTML = "<li class='ui-state-default' type='"+item.type+"' itemid='"+item.id+"'>"+item.title;
                        itemHTML += "<br>"+item.price;
                        itemHTML += "<br><img src='"+item.image+"' />";
                        itemHTML += "</li>";
                        $("#share #ppw-similar-list").append(itemHTML);                    
                    }
                    $("#share #ppw-similar-list").sortable({
                        connectWith: "#share #ppw-similar"
                    });
                }
            });
        }
        
        function init() {
            $(container+" input, "+container+" textarea").each(function(){
                var id = $(this).attr('id');
                if (strings[id] && $(this).val() == "") {
                    $(this).addClass('empty');
                    $(this).val(strings[id]);
                }
                if (id == "ppw-title" && strings[id] != $(this).val()) {
                    loadSimilars();
                }
            }).blur(function(){
                var value = $.trim($(this).val());
                var id = $(this).attr('id');
                var parent = $(this).parent().parent();
                if (id == "ppw-title") {
                    loadSimilars();
                }
                if (value == "" && strings[id]) {
                    $(this).addClass('empty');
                    $(this).val(strings[id]);
                    $(".ppw-req", parent).removeClass("ppw-ok");
                } else {
                    $(".ppw-req", parent).addClass("ppw-ok");
                }
            }).focus(function(){
                var id = $(this).attr('id');
                var value = $.trim($(this).val());
                if (value != "" 
                    && strings[id]
                    && strings[id] == value) {
                    $(this).val('');
                    $(this).removeClass('empty');
                }
            });
            
            $(container+" select").each(function(){
                $(this).addClass('empty');
            }).blur(function(){
                var value = $.trim($(this).val());
                var id = $(this).attr('id');
                if (value == "0") {
                    $(this).addClass('empty');
                } else {
                    $(this).removeClass('empty');
                }
            }).change(function(){
                var value = $.trim($(this).val());
                var id = $(this).attr('id');
                if (value == "0") {
                    $(this).addClass('empty');
                } else {
                    $(this).removeClass('empty');
                }
            });
            $("#share #ppw-similar").sortable({
                connectWith: "#share #ppw-similar-list"
            });
            
            $("#share-form").submit(function(){
                //validate if required fileds are there
                var title = $.trim($("#share #ppw-title").val());
                var bottom = $.trim($("#share #ppw-bottom-line").val());
                var file = $("#share #photouploader").val();
                var nofile = $("#share #nophotobox").attr('checked');
                if( title == "" 
                    || title == strings['ppw-title'] ) {
                    $("#share #ppw-title").focus();
                    return false;
                }
                if( bottom == "" 
                    || bottom == strings['ppw-bottom-line'] ) {
                    $("#share #ppw-bottom-line").focus();
                    return false;
                }
                if (file == "" && !nofile) {
                    $("#share #photouploader").focus();
                    return false;
                }
                //Clear default values before post
                $(container+" input, "+container+" textarea").each(function(){
                    var id = $(this).attr('id');
                    if (strings[id] && $.trim($(this).val()) == strings[id]) {
                        $(this).val("");
                    }
                });
                
                //Generate similar items array
                var sims = "";
                $("#share #ppw-similar li").each(function(){
                    sims += '' + $(this).attr('type') + $(this).attr('itemid')+',';
                })
                $('#ppw-similars-element').val(sims.substr(0, sims.length-1));
                var session = FB.getSession();
                if (session) {
                    $("#ppw-fb").val(session.uid);
                    return true;
                }
                if ($("#ppw-username").val() == "anonym") {
                    return true;
                }
                
                $("#ppw-login").removeClass("ppw-hidden");
                $("#ppw-login").css("top", "700px");
                return false;
            });
            $(".ppw-login-close").click(function(){
                $("#ppw-login").addClass("ppw-hidden");
            });
            $("#ppw-anonim").click(function(){
                $("#ppw-username").val("anonym");
                $("#share-form").submit();
            });
            $("#nophotobox").change(function(){
                if($(this).attr("checked")){
                    $("#photouploader").css("display", "none");
                } else {
                    $("#photouploader").css("display", "block");
                }
            });
            FB.Event.subscribe('auth.sessionChange', function(response) {
                if (response.session) {
                    $("#share-form").submit();
                }
            });
        }
        
        var publicInterface = {
            render: function(){
                init();
            }
        };
        return publicInterface;
    }
})();
