﻿function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			// and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}

function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}





function hidediv(id) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showdiv(id) {
	//safe function to show an element with a specified id
		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}


function showBarcodes (btnId)
{
    var theLink = btnId;
    //theLink = window.document.getElementById(btnId);
    //alert (theLink);
    
    var thePanel = "";
    thePanel = window.document.getElementById(btnId.replace(/ibBarcodes/,"pnBarCodes"));
    
    var theElementStyle = thePanel;

    if(theElementStyle.style.display == "none")
    {
    // showdiv
    theElementStyle.style.display = "block"; 
    //window.document.getElementById(btnId).innerHTML="Hide Barcodes";
    return false;
    }
    else
    {
    // hidediv
    theElementStyle.style.display = "none";
    //window.document.getElementById(btnId).innerHTML="Show Barcodes";
    return false;
    }
}

function showhide( el, id, id2) { 

if( document.getElementById ) { 
   getElemById = function( id ) { 
     return document.getElementById( id ); 
     } 
} else if( document.all ) { 
   getElemById = function( id ) { 
     return document.all[ id ]; 
     } 
} else if( document.layers ) { 
   getElemById = function( id ) { 
     return document.layers[ id ]; 
     } 
} 


   if ( el && el.style ) { 
     getElemById( id ).style.display = (el.checked)? 'none' : ''; 
     getElemById( id2 ).style.display = (el.checked)? 'inline' : 'none';
     return false; 
   } 
   return false; 
} 



function confirmOrder()
{
    return true;
}

function cancelOrder()
{
    var agree=confirm("Are you sure you wish to cancel? This will empty your basket!");
    if (agree)
	    return true;
    else
	    return false;
}

function printOrder()
{
   window.print();
}

function clearDefault(el) 
{
   if ("Account Ref" == el.value || "Details not recognised" == el.value || "Enter UserName and try ..." == el.value || "Password sent! Check your email..." == el.value) 
        el.value = "";
}

function clearSearch(el) 
{
   //if ("Account Ref" == el.value || "Account not recognised.." == el.value || "Enter UserName and try ..." == el.value || "Password sent! Check your email..." == el.value) 
        el.value = "";
}



function OpenLargeImage(StockRef)
{   
    //This is a common function used in all the pages for opening the LargeImage in the Image.aspx page
    // The StockReference will be passed as a QueryString to the  Image.aspx page
    window.open("Image.aspx?LargeImgName='"+StockRef+"'",null,"height=500,width=600,left=210,top=150,status=yes,toolbar=no,menubar=no,location=no");
   
}

function CreatePassword()
{
     Password = genPattern(8);
     var txt = document.aspnetForm.ctl00$ContentPlaceHolder1$HidPassword;
     txt.value = Password;    
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// BASKET FUNCTIONS // DK 10TH OCTOBER 2006
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// ONLY ALLOW NUMERIC ENTRY
function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
    return false;
    return true;
}

function addToCart(btnId)
{
     // btnId = THE CONTROL ID (e.g. ctl00_ContentPlaceHolder1_GridView1_ctl03_BTNAddLess)
          
     var textBox = "";
     var tempTextBoxQty = "";
     var intInnerQty = "";
     var intMasterQty = "";
     var blQtyIsNull = false;
          
     textBox = window.document.getElementById(btnId.replace(/BTNAddToBasket/,"TXTQuantity"));
     tempTextBoxQty = window.document.getElementById(btnId.replace(/BTNAddToBasket/,"hfTempTextBoxQty"));
     intInnerQty = window.document.getElementById(btnId.replace(/BTNAddToBasket/,"hfInnerQty"));
     intMasterQty = window.document.getElementById(btnId.replace(/BTNAddToBasket/,"hfmasterQty"));
     
     var tempQtyVar = tempTextBoxQty;
         
     var intMinimumQty = intInnerQty.value; // DEFAULT IS INNER QUANITY
     if ((intInnerQty.value==0)) { var intMinimumQty = intMasterQty.value;} // OVER-RIDE WITH MASTER QTY WHEN NO INNER QTY
     
     if ((textBox.value.length==0) ||(textBox.value=="0" || textBox.value<="0" )) { blQtyIsNull = true; } // CHECK EMPTY QTY 
     
         if (!blQtyIsNull)
         {   
                    objTextBox = textBox;      
                    objTextBox.value++;
	                objTextBox.value--;
	                intMinimumQty++;
	                intMinimumQty--;  
            	           
                    if (objTextBox.value >= intMinimumQty)
                    {
                        if (( objTextBox.value % intMinimumQty != 0 ) && intMinimumQty != 0)
                         {                 
                                var remUp = intMinimumQty - objTextBox.value % intMinimumQty;
                                var remUp = parseFloat(objTextBox.value) + parseFloat(remUp);
                                                    
                                var remDown = parseFloat(objTextBox.value) / parseFloat(intMinimumQty);
                                var remDown = parseInt(remDown) * intMinimumQty;                   
                                       
                                var agree=confirm("The quantity must be a multiple of " +  intMinimumQty + "\n\nPress OK to round up to " + remUp + " or Cancel to round down to " + remDown);
                                        if (agree)
                                        {
	                                        objTextBox.value = remUp;
	                                        updateQty(objTextBox);
	                                    }
                                        else
                                        {
	                                        objTextBox.value = remDown;
	                                        updateQty(objTextBox);
	                                    }            
                         }
                         else
                         {
                                 updateQty(objTextBox);                    
                         }             
                    }
                    else
                    {                               
                                var agree=confirm("The minimum quantity is " + intMinimumQty + "\n\nPres OK to add " + intMinimumQty + " to the basket or Cancel");

                                        if (agree)
                                        {
	                                        objTextBox.value = intMinimumQty;
	                                        updateQty(objTextBox);
	                                    }
                                        else 
                                        {
                                            objTextBox.value = tempQtyVar.value;
	                                        updateQty(tempQtyVar);
	                                        return false;
	                                    }  
                    }            
         }
         else
         {
                alert("Please enter a quantity");
                objTextBox = textBox;      
                objTextBox.value = tempQtyVar.value;
	            updateQty(tempQtyVar);
	            return false;
         } 
 } 
 
function updateQty(objTextBox)
{
    var hiddenField = document.aspnetForm.ctl00$ContentPlaceHolder1$HiddenField2;
    hiddenField.value = objTextBox.value;
 }
  
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// END BASKET FUNCTIONS
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////