/* 
 *  main.js.js
 *  Created on Dec 3, 2011 5:44:04 PM by bob
 */
jQuery.ajaxSetup ({
    // Disable caching of AJAX responses
    cache: false
});

jQuery(document).ready(function(){
    
    jQuery('#cyc').cycle({ 
        fx:     'fade', 
        speed:  'slow', 
        timeout: 0, 
        next:   '#rev-next', 
        prev:   '#rev-prev' 
    });    
    
    
    jQuery('.cart-close-btn').live("click", function(){
        jQuery('#quote-cart').dialog("close");
    });
   
    jQuery('#quote-cart').dialog({ 
        autoOpen: false,
        width:"850",
        height:"auto",
        modal:true,
        resizable:false,
        show: "blind",
        hide: "blind"
    }).siblings('.ui-dialog-titlebar').remove(); 
    
    jQuery("#see-cart-img").click(function(){
        jQuery('#quote-cart').dialog("open");       
        return false;
    });
    
    jQuery(".menu > li").click(function(e) {
        //var id = jQuery(this).closest("li").attr("id");
        setActiveTab(e.target.id);
        return false;
    });
    
    jQuery('.rstar').live("mouseenter", function() {
        jQuery(this).fadeTo("fast", 0.33);
    });
    
    jQuery('.rstar').live("mouseleave", function(){
        jQuery(this).fadeTo("fast", 1);
    });
    
    jQuery('.starlink').live("click", function(){
        var n = jQuery(this).attr("rel");
        jQuery("#review-rating").val(n);
        updateRatingStars();
        return false;
    });    
    updateRatingStars();
    
    jQuery('#review-form').ajaxForm({
        dataType:  'json',
        beforeSubmit: validateReview,
        success:   function(data) {            
            jQuery('#review-form').resetForm();
            setActiveTab("pics");
            alert("Thank you for the review!");
        } 
    });    
    jQuery('#review-cancel').click(function(){
        jQuery('#review-form').resetForm();
        return false;
    });
    
    jQuery('#fast-quote-form').ajaxForm({
        dataType:  'json',
        beforeSubmit: function() {
            if(validateFastQuote()) {                
                return true;
            }
            return false;
        },
        success: function(data) {             
            jQuery('#cart-wrapper').load("cart.php #cart-inner",  function(){
                updateItemCount();
                jQuery('#quote-cart').dialog("open");
            });              
        } 
    });
    
    jQuery('.remove-item').live("click", function(){
        var url = jQuery(this).attr("href");
        var parentItem = jQuery(this).closest('.cart-item');
        jQuery.ajax({
              url: url,
              data: {},
              success: function(data) {
                  if(data.status == "1") {
                      parentItem.fadeOut(300, function(){
                          jQuery(this).remove();
                          updateItemCount();
                      });
                  } else {
                      alert("Cannot delete item!");
                  }
              },
              dataType: "json"
        });
        return false;
    });
    
    jQuery("#close-cart-btn").live("click", function(){
        jQuery('#quote-cart').dialog("close");
        return false;
    });
    
    jQuery("#checkout-form").submit(function() {        
        if(!jQuery('.cart-item').length) {
            alert("Your cart is empty!");
            return false;
        }
        
        if(!validateContactInfo('#checkout-form')) {
            return false;
        }
                
        var hasErr = false;
        jQuery('.cart-item-details').each(function(){            
            if(hasErr) {
               return; 
            }
            var qty = jQuery(this).find('.quote_qty:first').val();
            var pname = jQuery(this).find('.prod_name:first').val();
            
            if(!isInteger(qty)) {
                alert("Please enter a quantity for '" + pname + "'");
                hasErr = true;
            }            
            var minQty = jQuery(this).find('.minQty:first').val();
            qty = parseInt(qty);
            minQty = parseInt(minQty);
            if(qty < minQty) {
                alert("Please enter a quantity of " + minQty + " or more for '" + pname + "'");
                jQuery('#fast-quote-form input[name="qty"]').focus();
                hasErr = true;       
            }
        });        
        return !hasErr;
    });
    
});

function updateItemCount() {
    var nItems = jQuery('.cart-item').length;
    if(nItems == 0) {
        jQuery('#num-items').html("Your cart is empty");
    } else if(nItems == 1) {
        jQuery('#num-items').html(nItems + " Item");
    } else {
        jQuery('#num-items').html(nItems + " Items");
    }
}

function updateRatingStars() {
    var n = jQuery("#review-rating").val();
    var html = "";
    for(var i = 1; i <= 5; i++) {
        if(i <= n) {
            html += "<a class='starlink' href='#' rel='" + i + "'><img class='rstar' src='images/star_on.png' /></a>";
        } else {
            html += "<a class='starlink' href='#' rel='" + i + "'><img class='rstar' src='images/star_off.png' /></a>";
        }
    }
    jQuery('#rating-stars').html(html);
}

function validateReview() {    
    var name = jQuery('#reviewer_name').val();
    var loc =  jQuery('#reviewer_location').val();
    var email = jQuery('#reviewer_email').val();
    var title = jQuery('#review_title').val();
    var review = jQuery('#review_text').val();
    
    if(!jQuery.trim(name).length) {
        alert("Please enter your name");
        jQuery('#reviewer_name').focus();
        return false;
    }
    
    if(!jQuery.trim(loc).length) {
        alert("Please enter your location");
        jQuery('#reviewer_location').focus();
        return false;
    }    
    
    if(!isValidEmail(email)) {
        alert("Please enter a valid email address");
        jQuery('#reviewer_email').focus();
        return false;
    }
    
    if(!jQuery.trim(title).length) {
        alert("Please enter a review title");
        jQuery('#reviewer_title').focus();
        return false;
    }
    
    if(!jQuery.trim(review).length) {
        alert("Please enter a review");
        jQuery('#review_text').focus();
        return false;
    }
    
    return true;    
}

function isValidEmail(str) {
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return filter.test(str);
}

function isInteger(x) { 
    var y=parseInt(x); 
    if (isNaN(y)) return false; 
    return x==y && x.toString()==y.toString(); 
} 

function validateFastQuote() {    
    if(!validateContactInfo('#fast-quote-form')) {
        return false;
    }
    
    var qty = jQuery('#fast-quote-form input:text[name="qty"]').val();
    var minQty = jQuery('#fast-quote-form input:hidden[name="minQty"]').val();
        
    if(!isInteger(qty)) {
        alert("Please enter a valid quantity");
        jQuery('#fast-quote-form input[name="qty"]').focus();
        return false;        
    }
    
    qty = parseInt(qty);
    minQty = parseInt(minQty);
    if(qty < minQty) {
        alert("Please enter a quantity of " + minQty + " or more");
        jQuery('#fast-quote-form input[name="qty"]').focus();
        return false;       
    }
    
    return true;
}

function validateContactInfo(formId) {   
    var name = jQuery(formId + ' input:text[name="name"]').val();
    var company = jQuery(formId + ' input:text[name="company"]').val();
    var email = jQuery(formId + ' input:text[name="email"]').val();
    var phone = jQuery(formId + ' input:text[name="phone"]').val();
    
    if(!jQuery.trim(name).length) {
        alert("Please enter your name");
        jQuery(formId + ' input[name="name"]').focus();
        return false;
    }
    
    if(!jQuery.trim(company).length) {
        alert("Please enter your company name");
        jQuery(formId + ' input[name="company"]').focus();
        return false;
    }    
    
    if(!isValidEmail(email)) {
        alert("Please enter a valid email address " + email);
        jQuery(formId + ' input[name="email"]').focus();
        return false;
    }
    
    if(!jQuery.trim(phone).length) {
        alert("Please enter your phone number");
        jQuery(formId + ' input[name="phone"]').focus();
        return false;
    }
    
    return true;
}

function setActiveTab(tab) {
    switch(tab) {
        case "pics":
            //change status & style menu
            jQuery("#pics").addClass("active");
            jQuery("#user-reviews").removeClass("active");
            jQuery("#write").removeClass("active");
            //display selected division, hide others
            jQuery("div.pics").fadeIn("slow");
            jQuery("div.user-reviews").css("display", "none");
            jQuery("div.write").css("display", "none");
            break;
        case "user-reviews":
            //change status & style menu
            jQuery("#pics").removeClass("active");
            jQuery("#user-reviews").addClass("active");
            jQuery("#write").removeClass("active");
            //display selected division, hide others
                
            jQuery("div.user-reviews").fadeIn("slow");
            jQuery("div.pics").css("display", "none");                
            jQuery("div.write").css("display", "none");
            break;
        case "write":
            //change status & style menu
            jQuery("#pics").removeClass("active");
            jQuery("#user-reviews").removeClass("active");
            jQuery("#write").addClass("active");
            //display selected division, hide others
                
            jQuery("div.write").fadeIn("slow");
            jQuery("div.pics").css("display", "none");
            jQuery("div.user-reviews").css("display", "none");                
            break;
    }
} 

//function toggleCart() {
//    jQuery("#quote-cart").slideToggle("slow");
//    jQuery("#see-cart-img").toggleClass("active");
//    if(jQuery("#see-cart-img").hasClass('active')) {
//        jQuery("#see-cart-img").attr("src", "images/see-cart-down.jpg");            
//    } else {
//        jQuery("#see-cart-img").attr("src", "images/see-cart-up.jpg");
//    }
//}

