// mod_cazar - include ca_shop.js

// ocid ReloadAddress function centralized here ...
function ReloadAdress(cl) 
{
	//alert(document.order.oxaddressid.value);
	//alert(cl);
	
  if ( document.order.oxaddressid.value != -1 )
	{
    document.order.fnc.value    = "";
    document.order.cl.value     = cl;
    document.order.submit();
  }
  // clearing fields
  else
  {   
		oRoot = document.order.elements;
		// default inputs
		aFields = new Array(
							"deladr[oxaddress__oxfname]",
							"deladr[oxaddress__oxlname]",
							"deladr[oxaddress__oxcompany]",
							"deladr[oxaddress__oxstreet]",
							"deladr[oxaddress__oxstreetnr]",
							"deladr[oxaddress__oxzip]",
							"deladr[oxaddress__oxcity]",
							"deladr[oxaddress__oxaddinfo]",
							"deladr[oxaddress__oxfon]",
							"deladr[oxaddress__oxfax]"
							);
		
		for ( i=0; i<aFields.length; i++ )
		{   
			if ( oRoot.namedItem(aFields[i]) != null )
			{
	    	oRoot.namedItem(aFields[i]).value = "";
			}
	  }

		// select lists
		aFields = new Array(
							"deladr[oxaddress__oxcountryid]", 
							"deladr[oxaddress__oxsal]"
							);
		
		for ( i=0; i<aFields.length; i++ )
		{   
			if ( oRoot.namedItem(aFields[i]) != null )
			{
				// mod_cazar - since we changed oxsal to radio box, we adopt clearing code here ... according to field type
				// alert(oRoot.namedItem(aFields[i]).type);
				if ( oRoot.namedItem(aFields[i]).type == "select-one")
				{
					oRoot.namedItem(aFields[i]).options.item(0).selected = true;
				}
				if ( oRoot.namedItem(aFields[i]).type == "radio")
				{
					oRoot.namedItem(aFields[i]).checked = false;
				}
				// mod_cazar - since we changed oxsal to radio box, we adopt clearing code here ... according to field type				
	    }
    }
	}
}
// ocid ReloadAddress function centralized here ...

// close shipping addresses and use billing address ... see user.tpl
function ca_useBillingAddress(cl)
{
	document.order.oxaddressid.value = -2;
	ReloadAdress(cl);
}
// close shipping addresses and use billing address ... see user.tpl

// open delivery addresses ... see user.tpl
// setting this blshowshipaddress prevents a redirection to the payment page
// instead, address page will be shown with delivery address
function ca_useDeliveryAddress(value, submit)
{
	// alert(value);
	try
	{
		document.order.blshowshipaddress.value = value;
		if ( submit )
		{
			// only submit if user selects radio button "show seperate delivery address"
			document.order.submit();
		}
	} catch (e) { }
	return true;
}
// open shipping addresses ... see user.tpl

// document.onclick = ca_OnClick;
function ca_OnClick(e)
{

  try 
	{ 
		if (!e) e = window.event;
		if (e.target) t = e.target;
		else if (e.srcElement) t = e.srcElement;
		
		if ( t != "undefined" && t.nodeName != "undefined" )
		{
			if ( t.nodeName && t.nodeName == "A" ) 
			{
						// für alle A-Knoten, deren HREF der ungleich dem aktuellen URL ist
						// ... und der nicht mit "#" endet, automatisch ca_Progrss() aktivieren.
						// funktioniert nicht für DIV, IMG und andere Tags
						// bei diesen wird im Template explizit ca_progress() aufgerufen
						// if ( t.nodeName && t.nodeName == "IMG" ) 
						// if ( t.nodeName && t.nodeName == "DIV" ) 
						if (t.href != document.URL && t.href.charAt(t.href.length-1) != "#" )
						{
								ca_ProgressTimer();
						}
			}
		}
		e.returnValue = true; 	
	
	} catch (e) { }
	return true;
}

function ca_ProgressTimer() 
{
	ca_Progress();
	// setTimeout("ca_Progress()", 1000);
}

function ca_Progress() 
{
	document.getElementById("ca_progress").style.visibility = "visible";
	// setTimeout("ca_ProgressKill()", 5000);
}

function ca_ProgressKill() 
{
	alert("ca_ProgressKill()");
	document.getElementById("ca_progress").style.visibility = "hidden";
}

function ca_isEmailValid(checkEmail)
{
	if ( (checkEmail.indexOf('@') < 0) || ((checkEmail.charAt(checkEmail.length-4) != '.') && (checkEmail.charAt(checkEmail.length-3) != '.')) ) 
		return false;
	return true;
}

function ca_checkPOBOX(checkStreet, messageDiv, title, size)
{
	// alert(checkStreet.value);
	sCheckString = checkStreet.value.toUpperCase(); 
	if ( sCheckString.search(/PACKSTATION/) != -1 || 
			 sCheckString.search(/PAKETSTATION/) != -1 || 
			 sCheckString.search(/POSTFACH/) != -1 || 
			 sCheckString.search(/POSTNUMMER/) != -1 || 
			 sCheckString.search(/POSTNUMBER/) != -1 || 
			 sCheckString.search(/POST NUMBER/) != -1 || 
			 sCheckString.search(/P\.O\./) != -1 || 
			 sCheckString.search(/P\.O BOX/) != -1 || 
			 sCheckString.search(/P\.O\.BOX/) != -1 || 
			 sCheckString.search(/P\.O\. BOX/) != -1 || 
			 sCheckString.search(/POSTNR/) != -1 || 
			 sCheckString.search(/POSTCODE/) != -1 || 
			 sCheckString.search(/PACKING STATION/) != -1 || 
			 sCheckString.search(/POSTAL BOX/) != -1 || 
			 sCheckString.search(/POST OFFICE BOX/) != -1 || 
			 sCheckString.search(/POSTOFFICE BOX/) != -1 || 
			 sCheckString.search(/POSTOFFICEBOX/) != -1 || 
			 sCheckString.search(/PIGEON HOLE/) != -1 || 
			 sCheckString.search(/POSTAL CODE/) != -1 || 
			 sCheckString.search(/POBOX/) != -1 || 
			 sCheckString.search(/PO BOX/) != -1 )
	{
		ca_modalError(messageDiv, title, size);
		checkStreet.value = ""
	}
}

function ca_validateInputString(inputString,shopLang)
{
	andReplace = "";
	switch (shopLang) 
	{
    	case "0": andReplace = "und"; break;
    	case "1": andReplace = "and"; break;
    	case "2": andReplace = "et"; break;
	}
	sInputString = inputString.value; 
	sInputString = sInputString.replace( "&", andReplace);
	inputString.value = sInputString;
}


String.prototype.stripHTML = function()
{
	// What a tag looks like
  var matchTag = /<(?:.|\s)*?>/g;
  // Replace the tag
  return this.replace(matchTag, "");
};


function ca_modalError(messageDiv, title, size)
{
	// debug: show requested window size
	// title = title + " - " + size;
	
/* 
  // mod_cazar - todo: try to calculate window size in advance
	// Problem bei zweiten call von xa_modalError() ohne dass das Dokument neu geladen wird ist div.innerHTML leer ???
	//alert(messageDiv);
	try { ca_modalErrorWindow.close(); } catch (e) {};
	var div = document.getElementById(messageDiv);
	alert(div.innerHTML);
	var matchTag = /<(?:.|\s)*?>/g;
	var str = div.innerHTML.replace(matchTag, "");
	alert(str);
	alert(str.length);
*/

	switch (size)
	{
		case 1:
			ca_modalErrorWindow=dhtmlmodal.open('ca_modalErrorBox', 'div', messageDiv, title, 'width=250px,height=100px,center=1,resize=0,scrolling=0');
			break;
		case 2:
			ca_modalErrorWindow=dhtmlmodal.open('ca_modalErrorBox', 'div', messageDiv, title, 'width=300px,height=125px,center=1,resize=0,scrolling=0');
			break;
		case 3:
			ca_modalErrorWindow=dhtmlmodal.open('ca_modalErrorBox', 'div', messageDiv, title, 'width=350px,height=200px,center=1,resize=0,scrolling=0');
			break;
		case 4:
			ca_modalErrorWindow=dhtmlmodal.open('ca_modalErrorBox', 'div', messageDiv, title, 'width=450px,height=300px,center=1,resize=0,scrolling=0');
			break;
		default:
			ca_modalErrorWindow=dhtmlmodal.open('ca_modalErrorBox', 'div', messageDiv, title, 'width=250px,height=100px,center=1,resize=0,scrolling=0');	
	}
	ca_modalErrorWindow.onclose=function() { return true; }
}

function ca_modalProgress(messageDiv, title)
{
	ca_modalProgressWindow=dhtmlmodal.open('ca_modalProgressBox', 'div', messageDiv, title, 'width=250px,height=100px,center=1,resize=0,scrolling=0');
}

function ca_GetFilter(fname, message, sep, resetMsg) 
{
	var form = document.getElementById(fname);
	var filter = "";
	var separator = "";
	for (var i = 0; i < form.length; ++i) 
	{
		if ( filter.length > 0 )
		{
			separator = sep + "";
		}
		if (form.elements[i].type == 'checkbox' && form.elements[i].checked == true) 
		{
			filter += separator + form.elements[i].alt + "";
		}
		if (form.elements[i].type == 'select-one' && form.elements[i].options[form.elements[i].selectedIndex].value != "") 
		{
			filter += separator + form.elements[i].options[form.elements[i].selectedIndex].value + "";
		}
	}
	if ( filter.length > 0 )
	{
		document.write("&nbsp;&nbsp;" + filter + "&nbsp;&nbsp;");
		document.write("<a href='#' onclick='JavaScript:ca_ResetFilter(" + form.name + ");'> " + resetMsg + "</a>");
	}
	else
	{
		document.write(message);
	}
}

function ca_SetFilter(form) 
{
	ca_Progress();
	form.submit();
}

function ca_ResetFilter(form)
{
	ca_Progress();
	for (var i = 0; i < form.length; ++i) 
	{
		if (form.elements[i].type == 'checkbox') 
		{
			form.elements[i].checked=false;
		}
		if (form.elements[i].type == 'select-one') 
		{
			form.elements[i].selectedIndex=0;
		}
	}
	form.submit();
}

// mod_cazar - provide state/province for USA/Canada orders
// used in: account_user.tpl , user.tpl
function ca_handleChangeBillState(resetBillState)
{
	// always try deleting bill state when changing country select field
	// since element is only rendered in form when country eqals US or CA, we use try/catch to avoid js-errors
	if (resetBillState)
	{
		// changes in country select reset bill state ...
  		try { document.forms['order'].elements['oxuser__sol_bw_bill_state'].value = ''; } catch (e) { }
	}
  // alert (document.forms['order'].elements['fnc'].value);
  try { document.forms['order'].elements['fnc'].value = 'ca_changeuser'; } catch (e) { }
	document.forms['order'].submit();
}

function ca_handleChangeUserForm()
{
	// alert(document.forms['order'].fnc.value);
	// called from user.tpl in order to ensure bill state has a valid value if exists
	// since element is only rendered in form when country eqals US or CA, we use try/catch to avoid js-errors
  try 
	{ 
		if (document.forms['order'].elements['oxuser__sol_bw_bill_state'].value == '') { return false;  } 
	} 
	catch (e) { }
	return true;
}
// mod_cazar - provide state/province for USA/Canada orders

// mod_cazar - provide functionality to delete address from user account
// used in: account_user.tpl , user.tpl
function ca_deleteAddress(msgText)
{
	// alert(document.order.oxaddressid.value);
	var ret = window.confirm(msgText);
	
	if ( ret == false ) return true;
	if ( document.order.oxaddressid.value != -1 )
	{
	  try { document.forms['order'].elements['fnc'].value = 'ca_delete_address'; } catch (e) { }
		document.forms['order'].submit();
		ca_modalProgress('CA_MSG_UPDATE_CUSTOMER_DATA','')		
	}
	return true;
}

// mod_cazar - include ca_shop.js
