/*
  $Id: general.js,v 1.1.1.1 2004/03/04 23:40:52 ccwjr 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 uc_first(string) {
			if (string == null) {
				string = '';
			}
			if (string.length < 1) {
				return '';
			}
		var first_char = string.substr(0, 1);
			if (string.length > 1) {
				string = string.substr(1);
			}
		string = first_char.toUpperCase() + string;
		
		return string;
	}
	
	function explode(seperator, string) {
		
		var return_array = new Array;
			if (!empty(string)) {
				return_array = string.split(seperator);
			}
	
		return return_array;
	}
	
	function strtolower(string) {
			if (empty(string)) {
				return '';
			}
		return string.toLowerCase();
	}
	
	function empty(string) {
			if ((string == null) || (!string) || (string.length < 1)) {
				return true;
			} else {
				return false;	
			}
	}
	
	function strlen(string) {
			if ((string == null) || (!string)) {
				string = '';
			}
		return string.length;
	}
	
	function strpos(string, findString) {
			if ((string == null) || (!string)) {
				string = '';
			}
			if (string.indexOf(findString) != -1) {
				return true;	
			} else {
				return false;	
			}
	}
	
	function count(array) {
		return array.length;
	}
	
	function show_error_message(element, message) {
			if (document.getElementById('errorBox'+uc_first(element)+'InputElement')) {
				document.getElementById('errorBox'+uc_first(element)+'InputElement').style.display = 'block';
				document.getElementById('errorBox'+uc_first(element)+'InputContent').innerHTML = message;
			}
	}
	
	function hide_error_message(element) {
			if (document.getElementById('errorBox'+uc_first(element)+'InputElement')) {
				document.getElementById('errorBox'+uc_first(element)+'InputElement').style.display = 'none';
			}
	}

var currentZoom = '';
var currentZoomParent = '';
var currentZoomContents = '';
	function switchZoom(parent, element) {
			if (empty(currentZoom)) {
				startZoom(parent, element);
			} else {
				stopZoom(element);
			}
	}
	
	function startZoom(parent, element) {
			if (!document.getElementById(element) || (document.getElementById(element).innerHTML == '')) {
				return false;
			}
		var image_string = document.getElementById(element).innerHTML;
		document.getElementById(element).style.cursor = 'move';
		document.getElementById('iconZoom').innerHTML = 'ZOOM OUT';
		currentZoom = element;
		currentZoomParent = parent;
		currentZoomContents = image_string;
		
		var matches = image_string.match(/src="([^"]+)"/);
			if (count(matches) < 2) {
				return false;
			}

		var image_explode = explode('/', matches[1]);
		
		var new_image_string = '';
		var strip_thumb = false;
			for (var n = 0; n < image_explode.length; n++) {
					
					if (n == (image_explode.length - 1)) {
							if (!empty(new_image_string)) {
								new_image_string += '/';
							}
						var image = image_explode[n];
							if (strip_thumb) {
								img_explode = explode('.', 	image);
								ext = img_explode[1];
								img_explode = explode('_', img_explode[0]);
									for (var m = 0; m < (img_explode.length - 3); m ++) {
											if (m > 0) {
												new_image_string += '_';
											}
										new_image_string += img_explode[m];
									}
								new_image_string += '.' + ext;
							} else {
								new_image_string += image;
							}
					} else if (image_explode[n] != 'thumb_cache') {
							if (!empty(new_image_string)) {
								new_image_string += '/';
							}
						new_image_string += image_explode[n];
					} else {
						strip_thumb = true;	
					}
			}

			if (empty(new_image_string) || (new_image_string == matches[1])) {
				return false;
			}
	
		document.getElementById(currentZoomParent).style.width = (parseInt(document.getElementById(element).offsetWidth))+'px'; //-2
		document.getElementById(currentZoomParent).style.height = (parseInt(document.getElementById(element).offsetHeight))+'px'; //-2
		document.getElementById(currentZoomParent).style.overflow = 'hidden';
		
		//document.getElementById(element).id = 'dragImage';
		 
		document.getElementById(element).innerHTML = '<img src="'+new_image_string+'" border="0">';
addEvent(document.getElementById(currentZoom), 'mousedown', function (evt) {
if (evt.preventDefault) {
evt.preventDefault();
} 
startDrag();
return false;
});
		addEvent(document.getElementById(currentZoom), 'dragstart', function (evt) {
if (evt.preventDefault) {
evt.preventDefault();
}
return false;
});
		addEvent(document, 'mouseup', function (evt) {
stopDrag();
});
		
	}
	
	function stopZoom(element) {
			if (empty(currentZoom)) {
				return;
			}
		
		document.getElementById(element).innerHTML = currentZoomContents;
		document.getElementById(currentZoomParent).firstChild.style.width = '270px';
		document.getElementById(currentZoomParent).firstChild.style.height = '290px';
		document.getElementById(currentZoomParent).firstChild.style.left = '0px';
		document.getElementById(currentZoomParent).firstChild.style.top = '0px';
		
		currentZoom = '';
		document.getElementById('iconZoom').innerHTML = 'ZOOM';
	}
	
	function addEvent( obj, type, fn ) {
	  if ( obj.attachEvent ) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
		obj.attachEvent( 'on'+type, obj[type+fn] );
	  } else {
		obj.addEventListener( type, fn, false );
	  }
	}
	
	function removeEvent( obj, type, fn ) {
	  if ( obj.detachEvent ) {
		obj.detachEvent( 'on'+type, obj[type+fn] );
		obj[type+fn] = null;
	  } else {
		obj.removeEventListener( type, fn, false );
	  }
	}

var current_identifier = null;
	function reset_swap() {
		current_identifier = null;	
	}
	
	function swap_image(identifier, element, image_string) {
			if (identifier == current_identifier) {
				return;
			}
		current_identifier = identifier;
		stopZoom(currentZoom);
		document.getElementById(element).innerHTML = image_string;
			if (image_string.indexOf('thumb_cache') == -1) {
				document.getElementById('productsImageZoom').style.visibility = 'hidden';
			} else {
				document.getElementById('productsImageZoom').style.visibility = 'visible';
			}
	}
	
var startPosX = '';
var startPosY = '';
var bufferX = 0;
var mousePos = false;
var dragStatus = false;
	function startDrag() {
			if (empty(currentZoom)) {
				return;
			}
		document.body.style.cursor = 'move';
		document.getElementById(currentZoomParent).firstChild.ondrag = 'return false';
		
		//Set the left as the offset left in case the image was centered.
		bufferX = parseInt(document.getElementById(currentZoomParent).firstChild.offsetLeft);
		
		startPosX = mousePos.x;
		startPosY = mousePos.y;
		
		

dragStatus = true;
	}
	
	function stopDrag() {
		dragStatus = false;
		document.body.style.cursor = '';
	}
	
	function updateDrag() {
			if (empty(currentZoom)) {
				return;
			}
		var parentWidth = parseInt(document.getElementById(currentZoomParent).offsetWidth-2);
		var width = parseInt(document.getElementById(currentZoomParent).firstChild.offsetWidth);
		var parentHeight = parseInt(document.getElementById(currentZoomParent).offsetHeight-2);
		var height = parseInt(document.getElementById(currentZoomParent).firstChild.offsetHeight);
		var top = parseInt(document.getElementById(currentZoomParent).firstChild.style.top);
		var left = parseInt(document.getElementById(currentZoomParent).firstChild.style.left);
			if (isNaN(top)) {
				top = 0;
			}
			if (isNaN(left)) {
				left = 0;
			}
			
		var differenceLeft = mousePos.x-startPosX;
		startPosX = mousePos.x;
		var differenceTop = mousePos.y-startPosY;
		startPosY = mousePos.y;
		
		var ratioX = ((width-parentWidth)/parentWidth);
		
		var ratioY = ((height-parentHeight)/parentHeight);
		
		top += parseInt(differenceTop*ratioY);
		
		left += parseInt(differenceLeft*ratioX);

if (top > 0) {
				top = 0;
			}
			if (left > 0) {
				left = 0;
			}
		var minX = 0 - (width-parentWidth);
		var minY = 0 - (height-parentHeight);
			if (left < minX) {
				left = minX;
			}
			if (top < minY) {
				top = minY;
			}
		
			if (ratioY > 0.1) document.getElementById(currentZoomParent).firstChild.style.top = top+'px';
			if (ratioX > 0.1) document.getElementById(currentZoomParent).firstChild.style.left = left+'px';
	}
	
	function trackMouse(ev){ 
		ev = ev || window.event; 
		
		mousePos = getMouseCoords(ev);
			if (dragStatus) {
				updateDrag();
			}
	} 
	
	function getMouseCoords(ev){ 
			if(ev.pageX || ev.pageY){ 
				return {x:ev.pageX, y:ev.pageY}; 
			}
		return { 
			x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
			y:ev.clientY + document.body.scrollTop  - document.body.clientTop 
		}; 
	}
	
document.onmousemove = trackMouse;

	function showElement(id, type) {
			if (!document.getElementById(id)) {
				return true;
			}
			if (type == null) {
				type = 'block';
			}
		document.getElementById(id).style.display = type;
		
		return false;
	}
	
	function hideElement(id) {
			if (!document.getElementById(id)) {
				return true;
			}
		document.getElementById(id).style.display = 'none';
		
		return false;
	}
	
	 function CreateBookmarkLink(url, title) {
		if (window.sidebar) {
			window.sidebar.addPanel(title, url,"");
		} else if( window.external ) {
			window.external.AddFavorite(url, title);
		} else if(window.opera && window.print) {
			return true; 
		}
	}

	function showAllFilter(element) {
		var id = element.id;

		showElement(id + 'Before');
		showElement(id + 'After');
		
		showElement(id + 'Less');
		hideElement(id + 'More');
	}
	
	function hideAllFilter(element) {
		var id = element.id;

		hideElement(id + 'Before');
		hideElement(id + 'After');
		
		hideElement(id + 'Less');
		showElement(id + 'More');
	}
	
	function tep_count_chracters(element, update_id, string) {
		var count = element.value.length;	
		var insert_value = count;
			if (!empty(string)) {
				insert_value = string.replace(/%s/, count);
			}
		
			if (document.getElementById(update_id)) {
				document.getElementById(update_id).innerHTML = insert_value;
			}
	}	
	
	function tep_adjust_rating(element) {
			var width = parseInt(element.offsetWidth);
			var left = parseInt(element.offsetLeft);
			var new_width = (width + left);
				if (document.getElementById('product_rating')) {
					document.getElementById('product_rating').style.width = new_width + 'px';
				}
				
		document.forms['write_review'].rating.value = new_width/width;
	}
	
											
										var status = new Array;
										var action = new Array;
										var outerDivStartHeight = 0;
										
											function switch_status(element_id, dest_height) {
												var element = document.getElementById(element_id+'Parent');
													if (!element) {
														alert(element_id + ' does not exist');
														return false;
													}
													
													if (status[element_id] == null) {
															if ((parseInt(element.style.height) == '1') || (parseInt(element.style.height) == parseInt(dest_height))) {
																status[element_id] = true;
															} else {
																status[element_id] = false;
															}
														action[element_id] = null;
													}
												status[element_id] = !status[element_id];
												clearTimeout(action[element_id]);
												expand_box(element_id, 10, dest_height);
											}
											
											function expand_box(element_id, speed, dest_height) {
													if (!document.getElementById(element_id+'Parent')) {
														return;
													}
												
												var current_height = document.getElementById(element_id+'Parent').style.height;
													if ((current_height == '') || (current_height == null)) {
														current_height = parseInt(document.getElementById(element_id+'Parent').offsetHeight);
													} else {
														current_height = parseInt(current_height);
													}
													if (status[element_id]) {
														if (!dest_height) {
															var dest_height = 1;
														}
													} else {
														var dest_height = parseInt(document.getElementById(element_id).offsetHeight);
													}
													if (current_height == dest_height) {
														return;
													}
													if (current_height > dest_height) {
														var new_height = current_height - speed;
															if (new_height < dest_height) {
																new_height = dest_height;
															}
													} else {
														var new_height = current_height + speed;
															if (new_height > dest_height) {
																new_height = dest_height;
															}
													}
												
												document.getElementById(element_id+'Parent').style.height = new_height + 'px';
													if (new_height != dest_height) {
															if (status[element_id]) {
															}
														
														action[element_id] = setTimeout('expand_box(\''+element_id+'\', '+speed+', '+dest_height+');', 3);
														setTimeout('adjustHeight(\''+element_id+'\', '+speed+', '+status[element_id]+');', 3);
													} else {
														if (status[element_id]) {
														} else {
															
														}
													}
												
											}
	function changeOrderHistoryArrow(element_id) {
		if (document.getElementById(element_id+'Arrow')) {
			if (document.getElementById(element_id+'Arrow').alt == 'Collapse') {
				document.getElementById(element_id+'Arrow').src = 'templates/Original/images/buttons/english/button_expand_arrow.gif';
				document.getElementById(element_id+'Arrow').alt = 'Expand';
				document.getElementById(element_id+'Arrow').title = 'Expand';
					if (document.getElementById(element_id+'Tee')) {
						document.getElementById(element_id+'Tee').src = 'images/order_history_white_tee_icon.gif';
					}
			} else {
				document.getElementById(element_id+'Arrow').src = 'templates/Original/images/buttons/english/button_collapse_arrow.gif';
				document.getElementById(element_id+'Arrow').alt = 'Collapse';
				document.getElementById(element_id+'Arrow').title = 'Collapse';
					if (document.getElementById(element_id+'Tee')) {
						document.getElementById(element_id+'Tee').src = 'images/order_history_blue_tee_icon.gif';
					}
			}
		}
		
		if (document.getElementById(element_id+'TextToggleShow') && document.getElementById(element_id+'TextToggleHide')) {
			if (document.getElementById(element_id+'TextToggleShow').style.display == 'block') {
				document.getElementById(element_id+'TextToggleShow').style.display = 'none';
				document.getElementById(element_id+'TextToggleHide').style.display = 'block';
			} else {
				document.getElementById(element_id+'TextToggleShow').style.display = 'block';
				document.getElementById(element_id+'TextToggleHide').style.display = 'none';
			}
		}
	}
	
	
	function selectShippingMethod(method) {
		
		for(var id in shippingMethods) {
					if (!document.getElementById(id)) {
						continue;
					}
					if (id == method) {
						document.getElementById(id).className = 'checkoutOption checkoutBox';
					} else {
						document.getElementById(id).className = 'checkoutOption';
					}
			}

	}
	
	function selectPaymentMethod(method) {
		return;
			for(var id in paymentMethods) {
					if (!document.getElementById(id)) {
						continue;
					}
					if (id == method) {
						document.getElementById(id).className = 'checkoutOption checkoutBox';
					} else {
						document.getElementById(id).className = 'checkoutOption';
					}
			}

	}
	
	function adjustHeight(element_id, speed, status) {
		if (outerDivStartHeight == 0) {
			outerDivStartHeight = parseInt(document.getElementById(element_id+'Outer').offsetHeight);
		}
		if ((parseInt(document.getElementById(element_id+'Parent').style.height)+240) >= (outerDivStartHeight)) {
			if (document.getElementById(element_id+'Outer')) {
					if (status) {
						document.getElementById(element_id+'Outer').style.height = (parseInt(document.getElementById(element_id+'Outer').offsetHeight) - parseInt(speed)) + 'px';
					} else {
						document.getElementById(element_id+'Outer').style.height = (parseInt(document.getElementById(element_id+'Outer').offsetHeight) + parseInt(speed)) + 'px';
					}
				
			}
		}
	}
	
	function number_format(a, b, c, d) {
			if (c == null) {
				c = '.';
			}
			if (d == null) {
				d = ',';
			}
	 a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
	 e = a + '';
	 f = e.split('.');
	 if (!f[0]) {
	  f[0] = '0';
	 }
	 if (!f[1]) {
	  f[1] = '';
	 }
	 if (f[1].length < b) {
	  g = f[1];
	  for (i=f[1].length + 1; i <= b; i++) {
	   g += '0';
	  }
	  f[1] = g;
	 }
	 if(d != '' && f[0].length > 3) {
	  h = f[0];
	  f[0] = '';
	  for(j = 3; j < h.length; j+=3) {
	   i = h.slice(h.length - j, h.length - j + 3);
	   f[0] = d + i +  f[0] + '';
	  }
	  j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
	  f[0] = j + f[0];
	 }
	 c = (b <= 0) ? '' : c;
	 return f[0] + c + f[1];
	}
	
	function select_card_type_number(type) {
				if ((type == 'SWITCH') || (type == 'SOLO')){
					document.getElementById('issueNumberText').style.visibility = 'visible';
					document.getElementById('issueNumberBox').style.visibility = 'visible';
				} else {
					document.getElementById('issueNumberText').style.visibility = 'hidden';
					document.getElementById('issueNumberBox').style.visibility = 'hidden';	
				}
	}

	function tep_check_email_exists(string) {
		return false;
	}
	
	function scroll_box(id, direction, amount) {
		var element = document.getElementById(id);
			if (!element) return;
		var parent = element.parentNode;
		var width = parseInt(element.offsetWidth);
		var leftPos = ((element.style.left) ? parseInt(element.style.left) : 0);
		var parentWidth = parseInt(parent.offsetWidth);
			if (amount == null) amount = parentWidth;
			//if ((direction == 'right') && (((leftPos*-1) + amount) >= (width))) amount = width - ((leftPos*-1)+amount);
			//if ((direction == 'left') && ((leftPos + amount) >= 0)) amount = leftPos * -1;
		//alert(leftPos);
			if (direction == 'right') {
				leftPos -= amount;
				//alert(leftPos + ' - ' + ((width - amount)*-1));
					if (leftPos < ((width - amount)*-1)) {
						leftPos =  0;
					}
			}
			if (direction == 'left') {
				//alert('adding ' + amount + ' to ' + leftPos + ' to get ' + (leftPos + amount));
				leftPos += amount;
					if ((leftPos) > 0) {
						leftPos = (width - amount)*-1;
					}
			}
		//alert(leftPos);
		element.style.left = leftPos + 'px';
			if (leftPos >= 0) {
			//	document.getElementById('scroll_left').style.visibility = 'hidden';
			} else {
			//	document.getElementById('scroll_left').style.visibility = 'visible';
			}
		
			if (leftPos <= ((width - amount)*-1)) {
			//	document.getElementById('scroll_right').style.visibility = 'hidden';
			} else {
			//	document.getElementById('scroll_right').style.visibility = 'visible';
			}
			if ((leftPos == 0) || (leftPos == width)) {
				return false;
			} else {
				return true;
			}
	}