/* ==========================================================
Tools Site Javascript

This file deals with product page script

author:    Matheu Niblett
website:   http://www.parkertools.co.uk
============================================================ */

/***********************
 Product page functions  
 ***********************/

/* Control displaying features, specification and technical details. */
function showProdDetail(activeControl) {
	var detailControls = document.getElementById("detailControls").value;
	var control = detailControls.split(',');
	for( var i = 0; i < control.length; i++ ) {
	    var objDetail = document.getElementById("prodDetail" + control[i]);
	    var objButton = document.getElementById("prodButton" + control[i]);
	    if( control[i] == activeControl ) {
	        objDetail.style.visibility = "visible";	
	        objButton.style.background = "#FF0000 url(/media/images/header/menu-bg.gif) repeat-x";
	        objButton.style.borderBottom = "1px solid #CD0000";
	    } else {
	    	objDetail.style.visibility = "hidden";
	    	objButton.style.background = "#D3D3D3 url(/media/images/header/menu-bg-off.gif) repeat-x";
	    	objButton.style.borderBottom = "1px solid #ccc";
	    }
    }
}



/* Perform image swap */
function swapImage(imgsrc) {
	var image = document.getElementById("mainImage");
	image.src = imgsrc;
}


/* Validate customer part number entry */ 
function validCustPartNum(id) {
	var val = document.getElementById(id).value;
	if( val.length > 0 ) {
		
		// Customer part number must be least three characters. 
	    if( val.length < 3 ) {
	        alert("Part number must be at least 3 characters");
	        document.getElementById(id).value = "";
	 	    document.getElementById(id).focus();
	 	
	 	// Validate entered characters are permissable. 
	    } else {
	    	var vldChrs = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 &-_(){}[]#@£!$%+=";
	    	var err = false;
	        var tmp;
	    	for (var i=0; i<val.length; i++) {
	    	    tmp = "" + val.substring(i, i+1);
	    	    if (vldChrs.indexOf(tmp) == "-1") {
	    	    	savChr = tmp;
	    	    	err = true; 
	    	    }
	    	}
	    	if(err) {	
	    		alert(savChr + " is an invalid entry");
	    		document.getElementById(id).value = "";
	    	    document.getElementById(id).focus();
	    	    return false;
	        } else {
	            return true;
	        }
	    }
	}
}



/* Display loading page */
function showLoading(num,dsc) {
	location.replace('/Loading.php?productNo=' + num + '&productDesc=' + dsc);
}


/********************
 List pages functions  
 ********************/


/* List lightbox. */
function listLightbox(mode,stk,i) {
	clearLightboxes();
	if ( mode == "on" ) {
		document.getElementById("favStockNo").value = stk;
	    document.getElementById("lightBox").style.display = "block";
	    document.getElementById("listContent").style.display = "block";
	    var size = document.getElementById("sizeDesc" + i).value;
	    document.getElementById("listProdSize").innerHTML = "<b>Size:</b> " + size;
	    document.getElementById("listName").value = "Give your list a name";
	    document.getElementById("listName").style.color = "gray";
	    var part = document.getElementById("part_id" + i).value;
	    if ( document.getElementById("addPart") ) {
	    	document.getElementById("addPart").style.color = "gray";
	    	document.getElementById("createPart").style.color = "gray";
	    	if ( trim(part) != "" ) {
	    		document.getElementById("addPart").value = part;
	    		document.getElementById("addPart").readOnly = true;
	    		document.getElementById("createPart").value = part;
	    		document.getElementById("createPart").readOnly = true;
	    	} else {
	            document.getElementById("addPart").value = "Add your own part number";
	            document.getElementById("addPart").readOnly = false;
	            document.getElementById("createPart").value = "Add your own part number";
	            document.getElementById("createPart").readOnly = false;
	    	}
	    }
		
	} else if ( mode == "off" ) {
		document.getElementById("lightBox").style.display = "none";
	}
}

var err = "";
function validateList(f,typ) {
	
    // Validate list creation. 
	if ( typ == "C" ) {
	    var name = document.getElementById("listName").value; 
	    if ( trim(name) == "" || trim(name) == "Give your list a name" ) {
	        alert("A list name must be entered");
	        document.getElementById("listName").focus();
		    return false;
	    }
	    var j = 2;
		var part = document.getElementById("createPart").value;
		var id   = "createPart";
	} else {
	    j = 1;
	    part = document.getElementById("addPart").value;
	    id   = "addPart";
	}
	
	// Validate quantity input?
	var qty = document.getElementById("qty_" + j).value;
	if ( qty != "Add a default quantity" && trim(qty) != "" ) {
	    if ( isNaN(qty) ) {
		    alert("Please enter a numeric quantity"); 
		    document.getElementById("qty_" + j).focus();
		    return false;   
	    } else if ( qty < 1 ) {
		    alert("Please enter a quantity greater than zero.");
		    document.getElementById("qty_" + j).focus();
		    return false;
	    }
	}
	
	// Validate part number input?
	if ( trim(part) != "Add your own part number" && trim(part) != "" ) {
		if ( ! validCustPartNum(id)) {
	        return false;
		} 
	}
	
}

var advOption = false;
function addListAdvControl() {
	if ( advOption == false ) {
		advOption = true;
		document.getElementById("advControlImage").src = "/media/images/lists/favourite-arrow-up.jpg";
		document.getElementById("advControlImage").alt = "Hide advanced options";
		document.getElementById("advControlLink").title = "Hide advanced options";
		document.getElementById("addListLeft").style.height = "330px";
		document.getElementById("addListContent").style.height = "330px";
		document.getElementById("addListRight").style.height = "330px";
		document.getElementById("addListAdvInput").style.visibility = "visible";
	} else { 
		advOption = false;
		document.getElementById("advControlImage").src = "/media/images/lists/favourite-arrow-down.jpg";
		document.getElementById("advControlImage").alt = "View advanced options";
		document.getElementById("advControlLink").title = "View advanced options";
		document.getElementById("addListLeft").style.height = "250px";
		document.getElementById("addListContent").style.height = "250px";
		document.getElementById("addListRight").style.height = "250px";
		document.getElementById("addListAdvInput").style.visibility = "hidden";
	}
}

// Load list products
function loadListProducts(list,desc,page) {
	
	var view = document.getElementById("listView").value;
	if ( view == "T" ) {
		document.getElementById("fullContent").style.height = "640px";
	} else if ( view == "L" ) {
		document.getElementById("fullContent").style.height = "auto";
	}
	
	// Output header desc and loading spinner.
	$("#listProducts").html('<div style="height: 510px; margin-top: 50px; text-align: center;"><img src="/media/images/general/loader_large.gif" alt="Loading..." /><br /><br />Load list data, please wait...</div>');
    $("#listDesc").html('<h1 class="mainHeading">My Lists - ' + desc + '</h1>');
    
	// Disable filters.
	$("#listCategory").empty();
	$("#listCategory").append('<option selected="selected" value="">Loading Categories...</option>');
	$("#listCategory").attr("disabled", "disabled");
	$("#listBrand").empty();
	$("#listBrand").append('<option selected="selected" value="">Loading Brands...</option>');
	$("#listBrand").attr("disabled", "disabled");
	
	// Reload products and filters.
	$("#listProducts").load('/ListData.php?listID=' + list + '&page=' + page, function() {
        $("#listPagingControls").load('/ListData.php?mode=P');		
	});
    $("#listCategory").load('/ListData.php?mode=C&listID=' + list, function() {
     	$("#listCategory").removeAttr("disabled");    
    });
    $("#listBrand").load('/ListData.php?mode=B&listID=' + list, function() {
     	$("#listBrand").removeAttr("disabled");    
    });
    
}

// Control list product filtering.
function filterListProducts(page) {
	
	// Output loading spinner.
	$("#listProducts").html('<div style="height: 510px; margin-top: 50px; text-align: center;"><img src="/media/images/general/loader_large.gif" alt="Loading..." /><br /><br />Load list data, please wait...</div>');

	// Reload products. 
  	var cat = document.getElementById("listCategory").value;
	var brand = document.getElementById("listBrand").value;
    $("#listProducts").load('/ListData.php?cat=' + cat + '&brand=' + brand + '&page=' + page, function() {
		$("#listPagingControls").load('/ListData.php?mode=P');		
	});
}


// Switch from text view to list view (and vice versa).
function switchListView(mode) {
	view = mode;
	if ( view == "T" ) {
		document.getElementById("listView").value                 = "T";
		document.getElementById("fullContent").style.height       = "640px";
		document.getElementById("textButtonOn").style.visibility  = "visible";
		document.getElementById("textButtonOff").style.visibility = "hidden";
		document.getElementById("listButtonOn").style.visibility  = "hidden";
		document.getElementById("listButtonOff").style.visibility = "visible";
	} else if ( view == "L" ) {
		document.getElementById("listView").value                 = "L";
		document.getElementById("fullContent").style.height       = "auto";
		document.getElementById("textButtonOn").style.visibility  = "hidden";
		document.getElementById("textButtonOff").style.visibility = "visible";
		document.getElementById("listButtonOn").style.visibility  = "visible";
		document.getElementById("listButtonOff").style.visibility = "hidden";
	}	
	
	// Output loading spinner.
	$("#listProducts").html('<div style="height: 510px; margin-top: 50px; text-align: center;"><img src="/media/images/general/loader_large.gif" alt="Loading..." /><br /><br />Load list data, please wait...</div>');
    
	// Reload products.
	$("#listProducts").load('/ListData.php?mode=' + view + '&page=1', function() {
		$("#listPagingControls").load('/ListData.php?mode=P');		
	});
	
	// Reset filter.
	document.getElementById("listCategory").options[0].selected = 1;
	document.getElementById("listBrand").options[0].selected = 1;
	
}

// Condition selected lines. 
function selectStk(line,rowClass) {
	if ( document.getElementById("add_" + line).checked == true ) {
		document.getElementById("listTableRow" + line).style.backgroundColor = "#ffff00";
	} else {
		if ( rowClass == "evenRow" ) {
		    document.getElementById("listTableRow" + line).style.backgroundColor = "#ffffff";
		} else {
			document.getElementById("listTableRow" + line).style.backgroundColor = "#f0f0f0";
		}
	}
}


// Set all add checkboxes. 
function selectAllStk(state,start,end) {
	var rowClass = "evenRow";
	if ( state ) {
    	document.getElementById("selectAllText").innerHTML = "Deselect All:";
    } else {
    	document.getElementById("selectAllText").innerHTML = "Select All:";
    }	
	for ( i=start; i<=end; i++ ) {
		 if ( rowClass == "evenRow" ) {
             rowClass = "oddRow";
         } else {
             rowClass = "evenRow";
         }
		if ( document.getElementById("add_" + i).disabled == false ) {
	        document.getElementById("add_" + i).checked = state;
	        selectStk(i,rowClass);
		}
	}    	
}

function increaseListQuantity(i) {
	var qty = document.getElementById("qty_" + i).value;
	if ( parseInt(qty) < 99999 ) {
	    qty++; 
	    document.getElementById("qty_" + i).value = qty;
	}
}


function decreaseListQuantity(i) {
	var qty = document.getElementById("qty_" + i).value;
	if ( parseInt(qty) > 1 ) { 
        qty--;
        document.getElementById("qty_" + i).value = qty;
	}
}


function validateListAdd(f,i) {
	
	// Validate quantity input?
	var qty = document.getElementById("qty_" + i).value;
    if ( isNaN(qty) ) {
        alert("Please enter a numeric quantity"); 
	    document.getElementById("qty_" + i).focus();
	    return false;   
	} else if ( qty < 1 ) {
	    alert("Please enter a quantity greater than zero.");
		document.getElementById("qty_" + i).focus();
		return false;
	}
	
	// Validate part number input?
	var part = document.getElementById("part_" + i).value;
	if ( trim(part) != "My Part Number" && trim(part) != "" ) {
	    if ( ! validCustPartNum("part_" + i)) {
	        return false;
		} 
    }
}

function validateTextAdd(f,i,j) {
		
	while ( i <= j ) {
		
		// Validate quantity input?
		var qty = document.getElementById("qty_" + i).value;
	    if ( isNaN(qty) ) {
	        alert("Please enter a numeric quantity"); 
		    document.getElementById("qty_" + i).focus();
		    return false;   
		} else if ( qty < 1 ) {
		    alert("Please enter a quantity greater than zero.");
			document.getElementById("qty_" + i).focus();
			return false;
		}
	    
        // Validate part number input?
	    if (document.getElementById("part_" + i)) {
		    var part = document.getElementById("part_" + i).value;
		    if ( trim(part) != "" ) {
			    if ( ! validCustPartNum("part_" + i)) {
				    document.getElementById("part_" + i).focus();
		            return false;
			    } 
		    }
	    }
		i++;
	}
}


function activeListProduct(action,i) {
    if ( action == "over" ) {
    	document.getElementById("listProductContainer" + i).className = "activeListProductContainer";	
    	document.getElementById("listProductDelete" + i).style.visibility = "visible";
    	//document.getElementById("addListProduct" + i).style.backgroundColor = "#74acff";
    } else if ( action == "out" ) {
    	document.getElementById("listProductContainer" + i).className = "listProductContainer";
    	document.getElementById("listProductDelete" + i).style.visibility = "hidden";
    	//document.getElementById("addListProduct" + i).style.backgroundColor = "#e1e1e1";
    }
}


function conditionListInput(id) {
   if ( document.getElementById(id).readOnly == false ) {
       document.getElementById(id).value = "";
       document.getElementById(id).style.color = "black";
   } 
}

