// JavaScript Document

var field_main;
function do_blink(field)
{
	var errorcolor="#FFCF1C";
	field.focus();
	field.select();
	field.style.background=errorcolor;
    field_main=field;
	setInterval("temp()",500);
  
    
}

function temp(field)
{
var okcolor="";
field_main.style.background=okcolor;
}

function validate(field)
{
	try
	{
	valiclass=field.getAttribute("valiclass");
	valimessage=field.getAttribute("valimessage");
	if(valiclass=="required")
	{
	
	req=field.getAttribute("req");
	//alert('asd'+valiclass);
	pattern="\\w{"+req+",}";
	if(!field.value.match(pattern))
	{
	alert(valimessage);do_blink(field);return false;
	}
	
	 }
	 else if(valiclass=="email")
 	{
 //pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$";
 if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(field.value)))
 {
 alert(valimessage);do_blink(field);return false;
 }
	
	}
	else if(valiclass=="number")
	{
		
	if((field.value.length<1)||isNaN(field.value))
	{
	alert(valimessage);do_blink(field);return false;
	}
		
	}
	else if(valiclass=="creditcard")
	{
	pattern="^[0-9]{16}$";
	if(!field.value.match(pattern))
	{
	alert(valimessage);do_blink(field);return false;
	}
	
	}
	else if(valiclass=="zip")
	{
	pattern="^[0-9]{5}$";
	if(!field.value.match(pattern))
	{
	alert(valimessage);do_blink(field);return false;
	}
	
	}
	
	else if(valiclass=="code")
	{
	pattern="^[0-9]{3}$";
	if(!field.value.match(pattern))
	{
	alert(valimessage);do_blink(field);return false;
	}
	
	}
	
	
	else if(valiclass=="select")
	{
	if(field.options[field.selectedIndex].text.toLowerCase()=="select")
	{
	alert(valimessage);
	field.focus();
	return false;
	}
		
	}
	
	
	else if(valiclass=="date")
	{
	pattern="[0-9]{4}\\-[1-9]{1,2}\\-[1-9]{1,2}$";
	if(!field.value.match(pattern))
	{
	alert(valimessage);do_blink(field);return false;
	}
}
else if(valiclass=="integer")
{
	$bool=field.value.match("^[0-9]{1,4}$");	
	if($bool==0)
	{
		alert("Please enter a non-zero number");
		do_blink(field);
		return false;
	}
	if((!$bool)||isNaN(field.value)||(field.value.indexOf(".")!=-1))
	{
	alert(valimessage);
	do_blink(field);
	return false;	
	}
}

else if(valiclass=="qty")
{
	$bool=field.value.match("^[1-9]{1,4}$");
	
if((!$bool)||isNaN(field.value)||(field.value<12))
{
alert(valimessage);do_blink(field);return false;
}
}

else if(valiclass=="picture")
{
if(field.value.length<1)
return true;
values=field.value.toLowerCase();
if(!ends_with(values,".jpg"))
			  {
alert(values+" is not a valid jpg file");do_blink(field);return false;
}

}
return true;
}
catch(ex)
{
alert(ex.message);
return true;
}
}



function call_validate(form,from,to)
{
for(counter=from;counter<to;counter++)
{
bool=validate(form[counter]);
if(!bool)
{
return false;
break;
}
}
form.submit();
}





function call_validate_ajax(form,from,to)
{
for(counter=from;counter<to;counter++)
{
bool=validate(form[counter]);
if(!bool)
{
return false;
break;
}
}
return true;
}


/////////////////////
function getIndex(what,form) {
    for (var i=0;i<form.length;i++)
        if (what == form[i])
            return i;
    return -1;
}
////////////////////////////////////

function ends_with(hay,neddle)
{
hay=hay.replace(/^\s*|\s*$/g,"");
neddle_length=neddle.length;
hay_length=hay.length;
hay_part=hay.substring((hay_length-neddle_length),hay_length);
return (hay_part==neddle)
}


function  enable_form(form,bools)
{
	
for(counter=0;counter<form.length;counter++)
{
form[counter].disabled=!bools;	
}
}


function loading(bool)
{
try
{
comp=document.getElementById("loading");
if(bool)
{
comp.style.visibility="visible";
}
else
{
comp.style.visibility="hidden";
}
}
catch(d)
{
alert(d.message);	
}
}

function validate_range()
{
//alert(validate_range.arguments.length);	
for(counter=0;counter<validate_range.arguments.length;counter++)
{
bool=validate(validate_range.arguments[counter]);
if(!bool)
{
return false;
break;
}
}
validate_range.arguments[0].form.submit();
return true;
}



function delete_category(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_category.php?id="+id+"&"+query);	
}
return false;
}



function delete_mid_category(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_mid_category.php?id="+id+"&"+query);	
}
return false;
}

function delete_sub_category(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_sub_category.php?id="+id+"&"+query);	
}
return false;
}


function delete_product(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_product.php?id="+id+"&"+query);	
}
return false;	
}



function delete_image(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_image.php?id="+id+"&"+query);	
}
return false;	
}


	
function delete_description(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_description.php?desp_id="+id+"&"+query);
}
return false;	
}

function delete_colors(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_colors.php?color_id="+id+"&"+query);
}	
}

function delete_color_image(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_color_image.php?pic_id="+id+"&"+query);
}	
}

function delete_size(id,query)
{
if(confirm("Are you sure you want to delete"))
{
location.replace("delete_size.php?size_id="+id+"&"+query);
}	
}


function manage_payment(div)
{
	divdebit_card = document.getElementById("divdebit_card");
	divdcheque = document.getElementById("divcheque");
	divmoney_order = document.getElementById("divmoney_order");
	divdebit_card.style.visibility="hidden";
	divcheque.style.visibility="hidden";
	divmoney_order.style.visibility="hidden";
	div.style.visibility="visible";
}


function delete_confirm_sales(delte_where,delete_what,id,return_where,date1,date2)
{
alert("Sales once deleted are not recoverable");
bool=confirm("Are you sure you want to delete " + delete_what+" ?");
if(bool)
{
	
location.replace("delete_sales.php?delete_where="+delte_where+"&id="+id+"&return_where="+return_where+"&datefrom="+date1+"&dateto="+date2);
//alert("delete.php?delete_where="+delte_where+"&id="+id+"&return_where="+return_where+"&"+extra);
}
else
{
return false;	
}
}
function delete_client(delte_where,delete_what,id,return_where,date1,date2)
{
	alert("Sales once deleted are not recoverable");
bool=confirm("Are you sure you want to delete " + delete_what+" ?");
if(bool)
{
	
location.replace("delete.php?delete_where="+delte_where+"&id="+id+"&return_where="+return_where+"&datefrom="+date1+"&dateto="+date2);
//alert("delete.php?delete_where="+delte_where+"&id="+id+"&return_where="+return_where+"&"+extra);
}
else
{
return false;	
}
}
function delete_confirm(id)
{
bool=confirm("do you want to delete the client");
if(bool)
{
href="delete.php?id="+id;
location.replace(href);
}
else
{
return;
}
}
function in_stock(id,query)
{
location.replace("in_stock.php?id="+id+"&"+query);	
return false;	
}

function out_of_stock(id,query)
{
location.replace("out_of_stock.php?id="+id+"&"+query);	
return false;	
}
//*******************************************************************************************************************************	
	
	
var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";

function checkCreditCard (cardnumber, cardname) {
     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,16", 
               prefixes: "300,301,302,303,304,305,36,38,55",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011,650",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "15,16", 
               prefixes: "3,1800,2131",
               checkdigit: true};
  cards [7] = {name: "enRoute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  cards [8] = {name: "Solo", 
               length: "16,18,19", 
               prefixes: "6334, 6767",
               checkdigit: true};
  cards [9] = {name: "Switch", 
               length: "16,18,19", 
               prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
               checkdigit: true};
  cards [10] = {name: "Maestro", 
               length: "16,18", 
               prefixes: "5020,6",
               checkdigit: true};
  cards [11] = {name: "VisaElectron", 
               length: "16", 
               prefixes: "417500,4917,4913",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardnumber = cardnumber.replace (/\s/g, "");
  
  // Check that the number is numeric
  var cardNo = cardnumber
  var cardexp = /^[0-9]{13,19}$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}
