/*
  $Id: general.js,v 1.3 2003/02/10 22:30:55 hpdl Exp $

  osCommerce, Open Source E-Commerce Solutions
  http://www.oscommerce.com

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/

function SetFocus(TargetFormName) 
{
  var target = 0;
  
  if (TargetFormName != "") 
  {
    for (i=0; i<document.forms.length; i++) 
	{
      if (document.forms[i].name == TargetFormName) 
	  {
        target = i;
        break;
      }
    }
  }
  
  var TargetForm = document.forms[target];
  
  for (i=0; i<TargetForm.length; i++) 
  {
    if ( (TargetForm.elements[i].type != "image") && (TargetForm.elements[i].type != "hidden") && (TargetForm.elements[i].type != "reset") && (TargetForm.elements[i].type != "submit") ) 
	{
      TargetForm.elements[i].focus();
      
      if ( (TargetForm.elements[i].type == "text") || (TargetForm.elements[i].type == "password") ) 
      {
        TargetForm.elements[i].select();
      }
      
      break;
    }
  }
}

function RemoveFormatString(TargetElement, FormatString) 
{
  if (TargetElement.value == FormatString) 
  {
    TargetElement.value = "";
  }
  
  TargetElement.select();
}

function CheckDateRange(from, to) 
{
  if (Date.parse(from.value) <= Date.parse(to.value)) 
  {
    return true;
  } 
  else 
  {
    return false;
  }
}

function IsValidDate(DateToCheck, FormatString) 
{
  var strDateToCheck;
  var strDateToCheckArray;
  var strFormatArray;
  var strFormatString;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var intDateSeparatorIdx = -1;
  var intFormatSeparatorIdx = -1;
  var strSeparatorArray = new Array("-"," ","/",".");
  var strMonthArray = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
  var intDaysArray = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
  
  strDateToCheck = DateToCheck.toLowerCase();
  strFormatString = FormatString.toLowerCase();
  
  if (strDateToCheck.length != strFormatString.length) 
  {
    return false;
  }
  
  for (i=0; i<strSeparatorArray.length; i++) 
  {
    if (strFormatString.indexOf(strSeparatorArray[i]) != -1) 
    {
      intFormatSeparatorIdx = i;
      break;
    }
  }
  
  for (i=0; i<strSeparatorArray.length; i++) 
  {
    if (strDateToCheck.indexOf(strSeparatorArray[i]) != -1) 
    {
      intDateSeparatorIdx = i;
      break;
    }
  }
  
  if (intDateSeparatorIdx != intFormatSeparatorIdx) 
  {
    return false;
  }
  
  if (intDateSeparatorIdx != -1) 
  {
    strFormatArray = strFormatString.split(strSeparatorArray[intFormatSeparatorIdx]);
	if (strFormatArray.length != 3) 
    {
      return false;
    }
    
    strDateToCheckArray = strDateToCheck.split(strSeparatorArray[intDateSeparatorIdx]);
    if (strDateToCheckArray.length != 3) 
    {
      return false;
    }
    
    for (i=0; i<strFormatArray.length; i++) 
    {
      if (strFormatArray[i] == 'mm' || strFormatArray[i] == 'mmm') 
      {
        strMonth = strDateToCheckArray[i];
      }
      
      if (strFormatArray[i] == 'dd') 
      {
        strDay = strDateToCheckArray[i];
      }
      
      if (strFormatArray[i] == 'yyyy') 
      {
        strYear = strDateToCheckArray[i];
      }
    }
  } 
  else 
  {
    if (FormatString.length > 7) 
    {
      if (strFormatString.indexOf('mmm') == -1) 
      {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mm'), 2);
      } 
	  else 
      {
        strMonth = strDateToCheck.substring(strFormatString.indexOf('mmm'), 3);
      }
      
      strDay = strDateToCheck.substring(strFormatString.indexOf('dd'), 2);
      strYear = strDateToCheck.substring(strFormatString.indexOf('yyyy'), 2);
    } 
    else 
    {
      return false;
    }
  }
  
  if (strYear.length != 4) 
  {
    return false;
  }
  
  intday = parseInt(strDay, 10);
  if (isNaN(intday)) 
  {
    return false;
  }
  
  if (intday < 1) 
  {
    return false;
  }
  
  intMonth = parseInt(strMonth, 10);
  if (isNaN(intMonth)) 
  {
    for (i=0; i<strMonthArray.length; i++) 
    {
      if (strMonth == strMonthArray[i]) 
      {
        intMonth = i+1;
        break;
      }
    }
    
	if (isNaN(intMonth)) 
    {
      return false;
    }
  }
  
  if (intMonth > 12 || intMonth < 1) 
  {
    return false;
  }
  
  intYear = parseInt(strYear, 10);
  if (isNaN(intYear)) 
  {
    return false;
  }
  
  if (IsLeapYear(intYear) == true) 
  {
    intDaysArray[1] = 29;
  }
  
  if (intday > intDaysArray[intMonth - 1]) 
  {
    return false;
  }
  
  return true;
}

function IsLeapYear(intYear) 
{
  if (intYear % 100 == 0) 
  {
    if (intYear % 400 == 0) 
    {
      return true;
    }
  } 
  else 
  {
    if ((intYear % 4) == 0) 
    {
      return true;
    }
  }
  
  return false;
}

function createXMLHttpRequest() 
{ 
  var request = false; 
  
  if (window.XMLHttpRequest) 
  { 
    request = new XMLHttpRequest(); 
    if (request.overrideMimeType) 
      request.overrideMimeType('text/xml'); 
  } 
  else if (window.ActiveXObject) 
  {  
    var versions = new Array('Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'); 
    
    for (var i=0; i<versions.length; i++) 
    { 
      try 
      {  
        request = new ActiveXObject(versions[i]);  
        if (request)  
          return request;  
      } 
      catch(e) 
      {  
        //alert(e.message); 
      }  
    }  
  }  
  return request;  
}

function getResponseTextLogin(method,url,data,isasyn) 
{  
  var xmlhttp=createXMLHttpRequest();
  var requestdoc; 
  
  if (url.indexOf('?') == -1) 
    url += '?randnum=' + Math.random(); 
  else 
    url += '&randnum=' + Math.random(); 
    
  xmlhttp.onreadystatechange =  function() 
  { 
    if (xmlhttp.readyState == 4) 
    { 
      if (xmlhttp.status == 200) 
      { 
        requestdoc = xmlhttp.responseText; 
      }
      else if (xmlhttp.status == 500) 
        requestdoc = 'read error ' + xmlhttp.status; 
    }
    else
    { 
      requestdoc = 'Data is submiting, Please wait...'; 
    } 
  } 
  xmlhttp.open(method,url,isasyn); 
  xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
  
  if(data != '') 
    xmlhttp.send(data); 
  else 
    xmlhttp.send(null); 

  if (xmlhttp.status == 200) 
  {
    requestdoc = xmlhttp.responseText;
  }
  return unescape(requestdoc); 
} 

function isMail(mail)
{
  return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}

function trimall(his)
{
  Pos_Start = -1;
  for(var i=0;i<his.length;i++)
  {
    if(his.charAt(i)!=" ")
    {
      Pos_Start = i;   
      break;     
    }
  }
  
  Pos_End = -1;
  
  for(var i=his.length-1;i>=0;i--)
  {
    if(his.charAt(i)!=" ")
    {
      Pos_End = i;
      break;
    }
  }
  
  Str_Return = ""
  
  if(Pos_Start!=-1 && Pos_End!=-1)
  {
    for(var i=Pos_Start;i<=Pos_End;i++)
    {
      Str_Return = Str_Return + his.charAt(i);
    }
  }
  
  if (Str_Return=="")
    return false;
  else
    return Str_Return;
}

function ChkAccount(str)
{
  if (checkfirstname(str) == false)
    return false;
  
  if (checklastname(str) == false)
    return false;
  
  if (checkemail(str) == false)
    return false;
  
  if (checktel(str) == false)
    return false;
  
  if (checkaddress(str) == false)
    return false;
  
  if (checkpost(str) == false)
    return false;
  
  if (checkcity(str) == false)
    return false;
  
  if (checkstates(str) == false)
    return false;
  
  if (checkcountry(str) == false)
    return false;
  
  if (checkpassword(str) == false)
    return false;
  
  if (checkpasswordconfirm(str) == false)
    return false;
  
  return true;
}

function checkeditaccount(str)
{
  if (checkfirstname(str) == false)
    return false;
  
  if (checklastname(str) == false)
    return false;
  
  if (checkeditemail(str) == false)
    return false;
  
  if (checktel(str) == false)
    return false;

  return true;
}

function checkaccountpassword(str)
{
  if (checkpasswordcurrent(str) == false)
    return false;
  
  if (checkpassword(str) == false)
    return false;
  
  if (checkpasswordconfirm(str) == false)
    return false;

  return true;
}

function checkaddressbook(str)
{
  if (checkfirstname(str) == false)
    return false;
  
  if (checklastname(str) == false)
    return false;
  
  if (checktel(str) == false)
    return false;
  
  if (checkaddress(str) == false)
    return false;
  
  if (checkpost(str) == false)
    return false;
  
  if (checkcity(str) == false)
    return false;
  
  if (checkstates(str) == false)
    return false;
  
  if (checkcountry(str) == false)
    return false;
  
  return true;
}

function checkfirstname(str) 
{
  if (trimall(document.forms[str].firstname.value) == false || trimall(document.forms[str].firstname.value).length < 2) 
  {
    document.getElementById('firstnameimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('firstnameimage').style.display="block";
    
    document.getElementById('firstnamemsg').style.display="block";
    document.getElementById('firstnamemsg').innerHTML='Must contain a minimum of 2 characters!';
    
    return false;
  }
  else 
  {
    document.getElementById('firstnameimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('firstnameimage').style.display="block";
    
    document.getElementById('firstnamemsg').style.display="none";
  }
}

function checklastname(str) 
{
  if (trimall(document.forms[str].lastname.value) == false || trimall(document.forms[str].lastname.value).length < 2) 
  {
    document.getElementById('lastnameimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('lastnameimage').style.display="block";
      
    document.getElementById('lastnamemsg').style.display="block";
    document.getElementById('lastnamemsg').innerHTML="Must contain a minimum of 2 characters!";
    
    return false;
  }
  else 
  {
    document.getElementById('lastnameimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('lastnameimage').style.display="block";
    
    document.getElementById('lastnamemsg').style.display="none";
  }
}

function checkemail(str) 
{
  if (trimall(document.forms[str].email.value) == false)
  {
	document.getElementById('emailimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('emailimage').style.display="block";
    
    document.getElementById('emailmsg').style.display="block";
    document.getElementById('emailmsg').innerHTML="Plese input Email Address!";

	return false;
  }
  else if (!isMail(document.forms[str].email.value)) 
  { 
    document.getElementById('emailimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('emailimage').style.display="block";
    
    document.getElementById('emailmsg').style.display="block";
    document.getElementById('emailmsg').innerHTML="Unavailable Email Address!";
    
    return false;
  }
  else 
  {
    var email_check=getResponseTextLogin('GET','ajax_login.php?email='+document.forms[str].email.value,'',false);
	
    if (email_check==0) 
    {
      document.getElementById('emailimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
      document.getElementById('emailimage').style.display="block";
      
      document.getElementById('emailmsg').style.display="block";
      document.getElementById('emailmsg').innerHTML='Your Email Address is Exsits!';
      
      return false;
    }
    else 
    {
      document.getElementById('emailimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
      document.getElementById('emailimage').style.display="block";
      
      document.getElementById('emailmsg').style.display="none";
    }
  }
}

function checktel(str) 
{
  if (trimall(document.forms[str].tel.value) == false || trimall(document.forms[str].tel.value).length < 7) 
  {
    document.getElementById('telimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('telimage').style.display="block";
    
    document.getElementById('telmsg').style.display="block";
    document.getElementById('telmsg').innerHTML="Must contain a minimum of 7 characters, very important for the shipping!";
    
    return false;
  }
  else 
  {
    document.getElementById('telimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('telimage').style.display="block";
    
    document.getElementById('telmsg').style.display="none";
  }
}

function checkaddress(str) 
{
  if (trimall(document.forms[str].address.value) == false || trimall(document.forms[str].address.value).length < 6) 
  {
    document.getElementById('addressimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('addressimage').style.display="block";
    
    document.getElementById('addressmsg').style.display="block";
    document.getElementById('addressmsg').innerHTML="Must contain a minimum of 6 characters!";
    
    return false;
  }
  else 
  {
    document.getElementById('addressimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('addressimage').style.display="block";
    
    document.getElementById('addressmsg').style.display="none";
  }
}

function checkpost(str) 
{
  if (trimall(document.forms[str].post.value) != false) 
  {
    document.getElementById('postimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('postimage').style.display="block";
    
    document.getElementById('postmsg').style.display="none";
  }
  else
  {
    document.getElementById('postimage').style.display="none";
    document.getElementById('postmsg').style.display="none";
  }
}

function checkcity(str) 
{
  if (trimall(document.forms[str].city.value) == false || trimall(document.forms[str].city.value).length < 2) 
  {
    document.getElementById('cityimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('cityimage').style.display="block";
    
    document.getElementById('citymsg').style.display="block";
    document.getElementById('citymsg').innerHTML="Must contain a minimum of 2 characters!";
    
    return false;
  }
  else 
  {
    document.getElementById('cityimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('cityimage').style.display="block";
    
    document.getElementById('citymsg').style.display="none";
  }
}

function checkstates(str) 
{
  if (trimall(document.forms[str].states.value) == false || trimall(document.forms[str].states.value).length < 2) 
  {
    document.getElementById('statesimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('statesimage').style.display="block";
    
    document.getElementById('statesmsg').style.display="block";
    document.getElementById('statesmsg').innerHTML="Please input or choose a State/Province!";
    
    return false;
  }
  else 
  {
    document.getElementById('statesimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('statesimage').style.display="block";
    
    document.getElementById('statesmsg').style.display="none";
  }
}

function checkcountry(str) 
{
  if (trimall(document.forms[str].country.value) != false)
  {
    var state_check=getResponseTextLogin('GET','ajax_login.php?state='+document.forms[str].states.value+'&country='+document.forms[str].country.value+'&formname='+str,'',false);
    
    if (state_check != 1)
    {
      document.getElementById('states_list').innerHTML=state_check;
      
      if (trimall(document.forms[str].states.value) == false)
      {
        document.getElementById('statesimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
        document.getElementById('statesimage').style.display="block";
        
      	document.getElementById('statesmsg').style.display="block";
        document.getElementById('statesmsg').innerHTML="Please input or choose a State/Province!";
        
        return false;
      }
    }
  }
  
  if (trimall(document.forms[str].country.value) == false) 
  {
    document.getElementById('countryimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('countryimage').style.display="block";
    
    document.getElementById('countrymsg').style.display="block";
    document.getElementById('countrymsg').innerHTML="Please choose a country!";
    
    return false;
  }
  else 
  {
    document.getElementById('countryimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('countryimage').style.display="block";
    
    document.getElementById('countrymsg').style.display="none";
  }
}

function checkpassword(str) 
{
  if (document.forms[str].password.value.length < 6 || document.forms[str].password.value.length > 20) 
  {
    document.getElementById('passwordimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('passwordimage').style.display="block";
    
    document.getElementById('passwordmsg').style.display="block";
    document.getElementById('passwordmsg').innerHTML="Must contain 6 to 20 characters!";
    
    return false;
  }
  else 
  {
    document.getElementById('passwordimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('passwordimage').style.display="block";
    
    document.getElementById('passwordmsg').style.display="none";
    
    if ((document.forms[str].passwordconfirm.value != '') && (document.forms[str].passwordconfirm.value != document.forms[str].password.value))
    {
      document.getElementById('passwordconfirmimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
      document.getElementById('passwordconfirmimage').style.display="block";
      
      document.getElementById('passwordconfirmmsg').style.display="block";
      document.getElementById('passwordconfirmmsg').innerHTML="Must the Same as Password!";
      
      return false;
    }
  }
}

function checkpasswordconfirm(str) 
{
  if (document.forms[str].passwordconfirm.value != document.forms[str].password.value)
  {
    document.getElementById('passwordconfirmimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('passwordconfirmimage').style.display="block";
    
    document.getElementById('passwordconfirmmsg').style.display="block";
    document.getElementById('passwordconfirmmsg').innerHTML="Must the Same as Password!";
    
    return false;
  }
  else if (document.forms[str].passwordconfirm.value.length < 6 || document.forms[str].passwordconfirm.value.length > 20) 
  {
    document.getElementById('passwordconfirmimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('passwordconfirmimage').style.display="block";
    
    document.getElementById('passwordconfirmmsg').style.display="block";
    document.getElementById('passwordconfirmmsg').innerHTML="Must contain 6 to 20 characters!";
    
    return false;
  }
  else 
  {
    document.getElementById('passwordconfirmimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('passwordconfirmimage').style.display="block";
    
    document.getElementById('passwordconfirmmsg').style.display="none";
  }
}

function checkeditemail(str) 
{
  if (!isMail(document.forms[str].email.value)) 
  { 
    document.getElementById('emailimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('emailimage').style.display="block";
    
    document.getElementById('emailmsg').style.display="block";
    document.getElementById('emailmsg').innerHTML="Unavailable Email Address!";
    
    return false;
  }
  else 
  {
    var email_check=getResponseTextLogin('GET','ajax_edit_account.php?email='+document.forms[str].email.value+'&customers_id='+document.forms[str].customers_id.value,'',false);
	
    if (email_check==0) 
    {
      document.getElementById('emailimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
      document.getElementById('emailimage').style.display="block";
      
      document.getElementById('emailmsg').style.display="block";
      document.getElementById('emailmsg').innerHTML='Your Email Address is Exsits!';
      
      return false;
    }
    else 
    {
      document.getElementById('emailimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
      document.getElementById('emailimage').style.display="block";
      
      document.getElementById('emailmsg').style.display="none";
    }
  }
}

function checkpasswordcurrent(str) 
{
  if (document.forms[str].passwordcurrent.value.length < 6 || document.forms[str].passwordcurrent.value.length > 20) 
  {
    document.forms[str].passwordcurrent.value = '';
    document.getElementById('passwordcurrentimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
    document.getElementById('passwordcurrentimage').style.display="block";
    
    document.getElementById('passwordcurrentmsg').style.display="block";
    document.getElementById('passwordcurrentmsg').innerHTML="Must contain 6 to 20 characters!";
    
    return false;
  }
  else 
  {
    document.getElementById('passwordcurrentimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
    document.getElementById('passwordcurrentimage').style.display="block";
    
    document.getElementById('passwordcurrentmsg').style.display="none";
  }
  
  if (document.forms["account_password"].passwordcurrent.value != '')
  {
    var state_check=getResponseTextLogin('GET','ajax_login.php?password='+document.forms[str].passwordcurrent.value+'&customers_id='+document.forms[str].customers_id.value,'',false);
    
    if (state_check != 1)
    {
      document.forms[str].passwordcurrent.value = '';
      document.getElementById('passwordcurrentimage').innerHTML='<img src="tab/check_error.gif" width="13" height="13">';
      document.getElementById('passwordcurrentimage').style.display="block";
      
      document.getElementById('passwordcurrentmsg').style.display="block";
      document.getElementById('passwordcurrentmsg').innerHTML="Please input the correct password!";
        
      return false;
    }
    else
    {
      document.getElementById('passwordcurrentimage').innerHTML='<img src="tab/check_right.gif" width="13" height="13">';
      document.getElementById('passwordcurrentimage').style.display="block";
      
      document.getElementById('passwordcurrentmsg').style.display="none";
    }
  }
}

function rowOverEffect(object) 
{
  if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}

function rowOutEffect(object) 
{
  if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}

function checkBox(object) 
{
  document.account_notifications.elements[object].checked = !document.account_notifications.elements[object].checked;
}
