function switch_element_value(elem_id) {
	if (document.getElementById(elem_id).value == 'TRUE') {
		document.getElementById(elem_id).value	= 'FALSE';
	} else {
		document.getElementById(elem_id).value	= 'TRUE';
	}
}

function switch_element_display(elem_id) {
	if (document.getElementById(elem_id).style.display == 'block') {
		document.getElementById(elem_id).style.display	= 'none';
	} else {
		document.getElementById(elem_id).style.display	= 'block';
	}
}

function display_freight_request_popup(prod_id) {
	form = document.getElementById('freight_request_form_' + prod_id);
	
	form.postcode.value		= '';
	form.email.value		= '';
	
	document.getElementById('request_delivery_price_msg_' + prod_id).innerHTML	= '&nbsp;';
	
	set_element_display('request_freight_popup_' + prod_id, 'block');
}

function close_freight_request_popup(prod_id) {
    document.getElementById('request_freight_popup_' + prod_id + '_submit_btn').style.display = 'block';
	document.getElementById('request_freight_popup_' + prod_id + '_thankyou_btn').style.display = 'none';
    set_element_display('request_freight_popup_' + prod_id, 'none');
}

function load_product_info_content(parent_prod_id) {
	var prod_opts_form	= document.getElementById('prod_opts_form_' + parent_prod_id);
	
	var div	=	'product_info_content';
	var url	=	'/product_info.php';
	var params	=
	  'cmd=load_product_info_content'
	  + '&parent_prod_id=' + parent_prod_id;
	  
	for(i = 0; i < prod_opts_form.elements.length; i++) {
		params	+= '&prod_opts[' + prod_opts_form.elements[i].name + ']=' + prod_opts_form.elements[i].options[prod_opts_form.elements[i].selectedIndex].value;
	}
	
	//alert(params);
	
	var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: params, encoding: 'UTF-8' });
}

function load_product_column(parent_prod_id) {
	var prod_opts_form		= document.getElementById('prod_opts_form_' + parent_prod_id);
	var params	=
	  'parent_prod_id=' + parent_prod_id;
	  
	for(i = 0; i < prod_opts_form.elements.length; i++) {
		params	+= '&prod_opts[' + prod_opts_form.elements[i].name + ']=' + prod_opts_form.elements[i].options[prod_opts_form.elements[i].selectedIndex].value;
	}
	
	var div	=	'prod_opts_popup_' + parent_prod_id;
	var url	=	'/load_product_attributes_popup.php';
	  
	var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: params });
}

function request_delivery_price(form) {
	product_id_val	= form.product_id.value;
	postcode_val	= form.postcode.value;
	email_val		= form.email.value;
	
	if (validate_email(email_val) === true) {
		if (validate_postcode(postcode_val) === true) {
			var url = '/request_delivery_price.php';
        	var params = 'product_id=' + product_id_val + '&postcode=' + postcode_val + '&email=' + email_val;
			/*
			document.getElementById('request_delivery_price_msg_' + product_id_val).innerHTML		= '<font color="green">delivery inquiry has been lodged</font>';
			*/
			document.getElementById('request_delivery_price_msg_' + product_id_val).innerHTML		= '&nbsp;';
			document.getElementById('request_freight_popup_' + product_id_val + '_submit_btn').style.display = 'none';
			document.getElementById('request_freight_popup_' + product_id_val + '_thankyou_btn').style.display = 'block';
			var ajax = new Ajax.Request(url,{method: 'get',asynchronous: true,parameters: params}); 
		} else {
			document.getElementById('request_delivery_price_msg_' + product_id_val).innerHTML       = '<font color="red">invalid postcode</font>';
		}
	} else {
		document.getElementById('request_delivery_price_msg_' + product_id_val).innerHTML       = '<font color="red">invalid email</font>';
	}
	
	return false;
}

function get_url_param(strParamName){
	var strReturn = "";
	var strHref = window.location.href;
	if ( strHref.indexOf("?") > -1 ){
		var strQueryString = strHref.substr(strHref.indexOf("?"));
		var aQueryString = strQueryString.split("&");
		for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
			if (
				aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
				var aParam = aQueryString[iParam].split("=");
				strReturn = aParam[1];
				break;
			}
		}
	}
	return urldecode(strReturn);
}

function urldecode(input) {
	xmlHttp	= GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Your browser does not support AJAX!");
		return;
	}
	
	
	xmlHttp.open('GET', '/urldecode.php?input=' + input,false);
	xmlHttp.send(null);

	return xmlHttp.responseText;
}

function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try	{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e)	{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function init_search_input_div() {
	search_by	= get_url_param('search_by');
	
	for(i = 0; i < document.search_form.search_by.options.length; i++) {
		if (document.search_form.search_by.options[i].value == search_by) {
			document.search_form.search_by.options[i].selected = 'selected';
		}
	}
	
	
	if (search_by == 'prod_keyword') {
		search_keyword	= get_url_param('search_keyword');
		
		document.getElementById('search_input').innerHTML	= 
		  '<input class="search_input_boxes" type="text" name="search_keyword" value="' + search_keyword + '" />';
	} else if (search_by == 'prod_brand') {
		search_brand	= get_url_param('search_brand');
		
		document.getElementById('search_input').innerHTML	= 
		  '<input class="search_input_boxes" type="text" name="search_brand" value="' + search_brand + '" />';
	} else if (search_by == 'prod_gender') {
		search_gender	= get_url_param('search_gender');
		
		document.getElementById('search_input').innerHTML	= 
		  '<select class="search_input_select" name="search_gender"><option value="M" ' + ((search_gender == 'M') ? 'selected="selected"' : '') + '>Male</option><option value="F" ' + ((search_gender == 'F') ? 'selected="selected"' : '') + '>Female</option><option value="B" ' + ((search_gender == 'B') ? 'selected="selected"' : '') + '>Both</option></select>';
	} else if (search_by == 'prod_price_less_than') {
		search_price_less_than	= get_url_param('search_price_less_than');
		
		document.getElementById('search_input').innerHTML	=
		  '<select class="search_input_select" name="search_price_less_than"><option value="99" ' + ((search_price_less_than == '99') ? 'selected="selected"' : '') + '>$99</option><option value="89" ' + ((search_price_less_than == '89') ? 'selected="selected"' : '') + '>$89</option><option value="79" ' + ((search_price_less_than == '79') ? 'selected="selected"' : '') + '>$79</option><option value="69" ' + ((search_price_less_than == '69') ? 'selected="selected"' : '') + '>$69</option><option value="59" ' + ((search_price_less_than == '59') ? 'selected="selected"' : '') + '>$59</option><option value="49" ' + ((search_price_less_than == '49') ? 'selected="selected"' : '') + '>$49</option><option value="39" ' + ((search_price_less_than == '39') ? 'selected="selected"' : '') + '>$39</option><option value="29" ' + ((search_price_less_than == '29') ? 'selected="selected"' : '') + '>$29</option><option value="19" ' + ((search_price_less_than == '19') ? 'selected="selected"' : '') + '>$19</option><option value="9" ' + ((search_price_less_than == '9') ? 'selected="selected"' : '') + '>$9</option></select>';
	}
}

function update_search_input_div(search_by) {
	if (search_by == 'prod_keyword') {
		document.getElementById('search_input').innerHTML	= 
		  '<input class="search_input_boxes" type="text" name="search_keyword" value="" />';
	} else if (search_by == 'prod_brand') {
		document.getElementById('search_input').innerHTML	=
		  '<input class="search_input_boxes" type="text" name="search_brand" value="" />';
	} else if (search_by == 'prod_gender') {
		document.getElementById('search_input').innerHTML	=
		  '<select class="search_input_select" name="search_gender"><option value="M">Male</option><option value="F">Female</option><option value="B">Both</option></select>';
	} else if (search_by == 'prod_price_less_than') {
		document.getElementById('search_input').innerHTML	=
		  '<select class="search_input_select" name="search_price_less_than"><option value="99">$99</option><option value="89">$89</option><option value="79">$79</option><option value="69">$69</option><option value="59">$59</option><option value="49">$49</option><option value="39">$39</option><option value="29">$29</option><option value="19">$19</option><option value="9">$9</option></select>';
	}
}

function set_element_display(elem_id, display_value) {
	document.getElementById(elem_id).style.display = display_value;
}

function test()
   {
   		alert();
   
   }
   
   function fill_address(postcode,postcodeId,suburb,suburbId,state,stateId,div)
   {
	   var s = suburb.split("%%%");
	   var i = 0;
	   var ss="";
	   for(i=0; i<s.length; i++)
	   {
			ss = ss + " " + s[i];
	   }
	   document.getElementById(postcodeId).value = postcode;
	   document.getElementById(suburbId).value = ss;
	   document.getElementById(stateId).value = state;
	   document.getElementById(div).style.display = 'none';
	   //alert(postcode);
	   
   }
   
   function postcode_lookup(postcodeId,suburbId,stateId,div)
   {
	    
	   var postcode = document.getElementById(postcodeId).value;
	   var suburb = document.getElementById(suburbId).value;
	   if (suburb=="") suburb="empty";
	   var state = document.getElementById(stateId).value;
	   document.getElementById("main_"+div).style.display='block';
	   
	    var url = 'ajax_frontend.php';    
    	//alert(email);
	    var params = 'cmd=address_lookup&postcode='+postcode+'&suburb='+suburb+'&state='+state+'&div='+div+'&postcodeId='+postcodeId+'&suburbId='+suburbId+'&stateId='+stateId;
   		//alert(params);
    	var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: params });
		
		
   }
   
   function doformSubmit()
{
   var frm = document.loginForm;
   frm.submit();
}

   
   function update_discount_order(discount_code,qty,total,order_id)
   {
		//alert(discount_code+" " +qty+" "+total);
		var div = "discount_id";
		if (order_id==null) order_id = 0;
	    var url = 'ajax_frontend.php';    
    	//alert(email);
	    var params = 'cmd=discount&discount_code='+discount_code+'&qty='+qty+'&total='+total+'&order_id='+order_id;
   		//alert(params);
    	var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: params });
   }
   
function search_header()
{
	var div = "search_header";
	//var obj = "pc_games";
	
	if (document.getElementById('cat_select'))
	{
		var obj = document.getElementById('cat_select').value;
	}
	
	var url;
	var params;
	var ajax;
	
	url         = 'ajax_frontend.php';
    params      = 'cmd=update_additional_search_filter&cat_select='+obj;
    
    ajax        = new Ajax.Updater({success: 'additional_search_filter'},url,{method: 'get',parameters: params });
	
    url         = 'ajax_frontend.php';
    params      = 'cmd=update_category_search_filter&cat_select='+obj;
    
    ajax        = new Ajax.Updater({success: 'category_search_filter'},url,{method: 'get',parameters: params });
    
    
}

function search_order_on_order_history() {
	var order_id					= document.search_order_form.order_id.value;
	var order_status				= document.search_order_form.order_status.value;
	var is_order_date_specified		= (document.search_order_form.is_order_date_specified[1].checked) ? 'TRUE' : 'FALSE';
	var order_start_date			= document.search_order_form.order_start_date.value;
	var order_end_date				= document.search_order_form.order_end_date.value;
	
	var url		= 'order_history.php';
	var params	= 'cmd=get_search_order_results_html&order_id=' + order_id + '&order_status=' + order_status + '&is_order_date_specified=' + is_order_date_specified + '&order_start_date=' + order_start_date + '&order_end_date=' + order_end_date;
	
	var ajax	= new Ajax.Updater({success: 'search_order_results'},url,{method: 'get',parameters: params });
	document.getElementById('search_order_results').style.display="block";
}

function view_search_order_results() {
	document.getElementById('search_order_results_contents').style.display="block";
	document.getElementById('view_order_contents').style.display="none";
	
	document.getElementById('search_order_results_tab_a0').className		= 'feat_tab_on_1';
	document.getElementById('search_order_results_tab_b0').className		= 'feat_tab_on_2';
	document.getElementById('search_order_results_tab_b1').className		= 'tab_1_text_on';
	document.getElementById('search_order_results_tab_c0').className		= 'feat_tab_on_3';
	
	document.getElementById('view_order_tab_a0').className					= 'feat_tab_off_1';
	document.getElementById('view_order_tab_b0').className					= 'feat_tab_off_2';
	document.getElementById('view_order_tab_b1').className					= 'tab_2_text_off';
	document.getElementById('view_order_tab_c0').className					= 'feat_tab_off_3';
}

function view_order_on_order_history(order_id) {
	var url		= 'order_history.php';
	var params	= 'cmd=get_view_order_html&order_id=' + order_id;
	
	var ajax	= new Ajax.Updater({success: 'view_order_contents'},url,{method: 'get',parameters: params });
	document.getElementById('search_order_results_contents').style.display="none";
	document.getElementById('view_order_contents').style.display="block";
	
	document.getElementById('search_order_results_tab_a0').className		= 'feat_tab_off_1';
	document.getElementById('search_order_results_tab_b0').className		= 'feat_tab_off_2';
	document.getElementById('search_order_results_tab_b1').className		= 'tab_1_text_off';
	document.getElementById('search_order_results_tab_c0').className		= 'feat_tab_off_3';
	
	document.getElementById('view_order_tab_a0').className					= 'feat_tab_on_1';
	document.getElementById('view_order_tab_b0').className					= 'feat_tab_on_2';
	document.getElementById('view_order_tab_b1').className					= 'tab_2_text_on';
	document.getElementById('view_order_tab_c0').className					= 'feat_tab_on_3';
	
	document.getElementById('view_order_tab_b1').innerHTML					= '<a href="javascript: view_order_on_order_history(' + order_id + ');">' + order_id + '</a>';
	document.getElementById('view_order_tab').style.display					= 'block';
}

function subcribe_newsletter()
{
   var div = "msg2";
   var pc_games = 0;
   if (document.getElementById('cb_pc_games').checked==true) pc_games = 1;
   var cb_ps3 = 0;
   if (document.getElementById('cb_ps3').checked==true) cb_ps3 = 1;
   var cb_ps2 = 0;
   if (document.getElementById('cb_ps2').checked==true) cb_ps2 = 1;
   var cb_xbox360 = 0;
   if (document.getElementById('cb_xbox360').checked==true) cb_xbox360 = 1;
   var cb_wii = 0;
   if (document.getElementById('cb_wii').checked==true) cb_wii = 1;
   var cb_psp = 0;
   if (document.getElementById('cb_psp').checked==true) cb_psp = 1;
   var cb_ds = 0;
   if (document.getElementById('cb_ds').checked==true) cb_ds = 1;
   var cb_xbox = 0;
   if (document.getElementById('cb_xbox').checked==true) cb_xbox = 1;
   var cb_gba = 0;
   if (document.getElementById('cb_gba').checked==true) cb_gba = 1;
   var cb_gc = 0;
   
   var cb_dvd = 0;
   if (document.getElementById('cb_dvd').checked==true) cb_dvd = 1;
   var cb_hddvd = 0;
   if (document.getElementById('cb_hddvd').checked==true) cb_hddvd = 1;
   var cb_blueray = 0;
   if (document.getElementById('cb_blueray').checked==true) cb_blueray = 1;
   var cb_cd = 0;
   if (document.getElementById('cb_cd').checked==true) cb_cd = 1;
   
   var email = document.getElementById('email2').value;
   
    if (validate_email(email) === true) {
        document.getElementById('msg2').innerHTML       = 'Sign up for the latest news &amp; offers';
        document.getElementById('newsletter_successful_signup_div').style.display = 'block';
        var url = '/ajax_frontend.php';
        var params = 'cmd=subcribe_newsletter&cb_pc_games='+pc_games+'&cb_ps3='+cb_ps3+'&cb_ps2='+cb_ps2+'&cb_xbox360='+cb_xbox360+'&cb_wii='+cb_wii+'&cb_psp='+cb_psp+'&cb_ds='+cb_ds+'&cb_xbox='+cb_xbox+'&cb_gba='+cb_gba+'&cb_gc='+cb_gc+'&cb_dvd='+cb_dvd+'&cb_hddvd='+cb_hddvd+'&cb_blueray='+cb_blueray+'&cb_cd='+cb_cd+'&email='+email;
        var ajax = new Ajax.Request(url,{method: 'get',asynchronous: true,parameters: params});  
    } else {
        document.getElementById('msg2').innerHTML       = '<font color="red">invalid email</font>';
    }
	return false;
}

function send_to_friend()

{

   var div = "msg_friend";

   var recipient_full_name = document.getElementById('recipient_full_name').value;

   var recipient_email = document.getElementById('recipient_email').value;

   var sender_full_name = document.getElementById('sender_full_name').value;
   
   var sender_email		= document.getElementById('sender_email').value;

   var send_to_friend_message = document.getElementById('send_to_friend_message').value;
   
   var send_to_friend_url	= document.getElementById('send_to_friend_url').value;

   var url = 'ajax_frontend.php';

   var params = 'cmd=send_to_friend&recipient_email='+recipient_email+'&recipient_full_name='+recipient_full_name+'&sender_email='+sender_email+'&sender_full_name='+sender_full_name+'&send_to_friend_message='+encodeURIComponent(send_to_friend_message) + '&send_to_friend_url=' + encodeURIComponent(send_to_friend_url);

   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: params });

}

function send_wishlist_to_friend(product_id) {
	var recipient_full_name = document.getElementById('recipient_full_name').value;
	var recipient_email = document.getElementById('recipient_email').value;
	var sender_full_name = document.getElementById('sender_full_name').value;
	var send_to_friend_message = document.getElementById('send_to_friend_message').value;
	var product_id = document.getElementById('wishlist_product_id').value;
	
	var url		= 'ajax_frontend.php';
	var params	= 'cmd=send_wishlist_to_friend&recipient_email='+recipient_email+'&recipient_full_name='+recipient_full_name+'&sender_full_name='+sender_full_name+'&send_to_friend_message='+send_to_friend_message + '&product_id=' + product_id; 
	
	var ajax = new Ajax.Updater({success: 'response_message'},url,{method: 'get',parameters: params });
}

function check_gift_page()
{
   var div = "main_content";
   var url = 'ajax_frontend.php';    
   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=check_gift_page'});
}

function gift_page()
{
   var div = "main_content";
   var url = 'ajax_frontend.php';    
   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=gift_page'});
}

function signin_page()
{
   var div = "main_content";
   var url = 'ajax_frontend.php';    
   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=signin_page'});
}

function register_page()
{
   var div = "main_content";
   var url = 'ajax_frontend.php';    
   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=register_page'});
}

function add_to_basket_fix()
{
	var o1=document.getElementById('cart_amount');
	var o2=document.getElementById('total_amount');
	if (o1!==null && o2!=null) o2.innerHTML=o1.innerHTML;

	var o1=document.getElementById('cart_item');
	var o2=document.getElementById('total_item');
	if (o1!==null && o2!=null) o2.innerHTML=o1.innerHTML;

	var o1=document.getElementById('cart_item');
	var o2=document.getElementById('total_items');
	if (o1!==null && o2!=null) o2.innerHTML=o1.innerHTML;
}

function add_to_basket(product_id, div)
{
   //alert(product_id + "  " +div); 
   var add_to_cart_btn_id	= 'add_to_cart_btn_' + product_id;
   document.getElementById(add_to_cart_btn_id).innerHTML	= '<img src="/images/perry_management/btn_addtocart.png" alt="Add to cart" border="0" />';
   
   var url = '/add_to_basket.php';    
   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=add_to_basket&product_id='+parseInt(product_id)});
   window.setTimeout('may_disable_add_to_cart_btn(' + product_id + ')',500);
   // ajax_call = new Ajax.Request('shopping.phpproduct_id='+product_id,{method: 'get',asynchronous: true});  
   window.setTimeout("add_to_basket_fix()",1000);
   document.getElementById('cart2').style.display='block';
   
   // BEGIN:    by Richard
   
   setTimeout("document.getElementById('cart2').style.display='none'",5000);
   
   // END:      by Richard
}

function may_disable_add_to_cart_btn(product_id) {
	var ajax = new Ajax.Updater({success: 'add_to_cart_btn_' + product_id},'/may_disable_add_to_cart_btn.php',{method: 'post',parameters: 'cmd=may_disable_add_to_cart_btn&product_id='+parseInt(product_id)});
}

function add_to_basket_products(product_id, div, n)
{
   //alert(product_id + "  " +div);
   var url = '/add_to_basket.php';    
   var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=add_to_basket&product_id='+parseInt(product_id)+'&quantity='+n});
   // ajax_call = new Ajax.Request('shopping.phpproduct_id='+product_id,{method: 'get',asynchronous: true});  
   window.setTimeout('may_disable_add_to_cart_btn(' + product_id + ')',500);
   // BEGIN:    by Richard
   window.setTimeout("add_to_basket_fix()",1000);
   document.getElementById('cart2').style.display='block';
   setTimeout("document.getElementById('cart2').style.display='none'",5000);
   // END:      by Richard
}  

function save_email_request(productId, div)
{
	
	var email_obj = document.getElementById("save_email");
	var email = email_obj.value;
	var url = 'ajax_save_email.php';        
	
	var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'cmd=save_email&productId='+parseInt(productId)+'&email='+email});
	
}
function change_class_left_menu(obj_click,div_id)
{
	var obj = document.getElementById(div_id);
	if (obj)
	{
		obj.className="menu_on";
	}
	obj_click.parentNode.className="menu_text_on";
	
	return true;
}

function resize_div(main_div,lower_div)
{
			content_base =  document.getElementById(lower_div).clientHeight;
			content_offset = document.getElementById(lower_div).offsetTop;
			document.getElementById(main_div).style.height = content_base+content_offset+"px";
			
}

function toggle_div_display(div)
{
		
		var elem = document.getElementById(div);
		elem.style.display = (elem.style.display == "none")?"":"none";
		
}
		
function ajax_form_submit(div,url,form_element)
{
		var params  = Form.serialize(form_element);
		var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: params});
		
}

	
function change_tab(display_key,off_class,on_class,display_class,tab)
{
	
	on_tab = document.getElementsByClassName(on_class);
	on_tab[0].className = off_class;
	tab.className = on_class;
	div_array = document.getElementsByClassName(display_class);
	inc = 0;
	for(inc=0; inc<div_array.length; inc++)
	{
		div_array[inc].style.display = 'none'; 
	}
	div_array[display_key].style.display = ''; 	
}

function ajax_load_div(div,url,id)
{
		if( $( div ).innerHTML == "" )
		{
		    var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'id='+id});
        }
        else
        {
            var ajax = new Ajax.Updater({success: div},url,{method: 'get',parameters: 'hide=1'});
        }
}

function copy_billing_address(id)
{
	if($(id).checked == true)
		{
			$('member[d_address_01]').value = $('member[address_01]').value; 
			$('member[d_address_02]').value = $('member[address_02]').value; 
			$('member[d_state]').value = $('member[state]').value;
			$('member[d_postcode]').value = $('member[postcode]').value;
			$('member[d_suburb]').value = $('member[suburb]').value;
			$('member[d_country]').value = $('member[country]').value;
		}
		else
		{
			$('member[d_address_01]').value = "";
			$('member[d_address_02]').value = "";
			$('member[d_state]').value = "";
			$('member[d_postcode]').value = "";
			$('member[d_suburb]').value = "";
			$('member[d_country]').value = "";
		}
	
}


function get_suburb(postcode,div,url)
{
  
  if(postcode != "")
  {
  Effect.toggle(div,'blind',{duration: .2});  

 new Ajax.Updater({success: div},'actions/'+url+'?postcode='+postcode,{method: 'get',evalScripts : true});  
// alert("got called");
// alert(div);
    }
  }  

function get_postcode(suburb,state_field,div,url)
{
  if(suburb != "")
  {
  		Effect.toggle(div,'blind',{duration: .2});  

 		new Ajax.Updater({success: div},'actions/'+url+'?suburb='+suburb+'&state='+state_field,{method: 'get',evalScripts : true});  
// alert("got called");
// alert(div);
  }

}

function display_suburb_check(ajax_response)    
{
  suburb = ajax_response.responseText;
  result=   suburb.split("|");
  $('member[suburb]').value = result[0];
  $('member[state]').value =  result[1];

}


function get_suburb_d(postcode)
{

   ajax_call = new Ajax.Request('actions/get_suburb.php?postcode='+postcode,{method: 'get',asynchronous: true,onComplete: display_suburb_check_d});  
}  

function get_postcode_d(suburb,state_field)
{
    

 // alert(suburb);


}

function display_suburb_check_d(ajax_response)    
{
  suburb = ajax_response.responseText;
  result=   suburb.split("|");
  $('member[d_suburb]').value = result[0];
  $('member[d_state]').value =  result[1];

}

function registerAllVariable( div, file, param )
{
    var objupdate = new Ajax.Updater(
        {success: div},
        file,
        {
            method: "post",
            parameters: param,
            evalScripts: true
        }
    );
}

var hwnd_NewAlternate;

function NewAlternate( type ) 
{
	//alert($F( 'b_postcode2' )); return;
    if( type == 'b' )
    {
        hwnd_NewAlternate = window.open( 
                                            "addressLookUp.php?p="+escape($F( 'b_postcode2' ))+
                                            "&st="+escape($F( 'b_state2' ))+
                                            "&s="+escape($F( 'b_suburb2' ))+
                                            "&t=" + type
                                            ,"image","width=370,height=460,scrollbars=yes" 
                                        );
    }
    else
    {
        hwnd_NewAlternate = window.open( 
                                            "addressLookUp.php?p="+escape($F( 'd_postcode' )) +
                                            "&st="+escape($F( 'd_state' ))+
                                            "&s="+escape($F( 'd_suburb' ))+
                                            "&t=" + type
                                            ,"image","width=370,height=460,scrollbars=yes" 
                                        );
    }
}

function postCodeLookUp()
{
    hwnd_NewAlternate = window.open( 
                                        "addressLookUp.php?p="+escape($F( 'delivery[postcode]' )) +
                                        "&st="+escape($F( 'delivery[state]' ))+
                                        "&s="+escape($F( 'delivery[suburb]' ))+
                                        "&t=c"
                                        ,"image","width=370,height=460,scrollbars=yes" 
                                    );
}

function setAddr( zip, state, suburb, type)
{
    if (type == 'b')
    {
	    window.opener.document.register_form[ 'member[postcode]' ].value=zip;
	    window.opener.document.register_form[ 'member[state]' ].value=state;
	    window.opener.document.register_form[ 'member[suburb]' ].value=suburb;
    }
    else if( type == 'c' )
    {
        window.opener.document.process_payment[ 'delivery[postcode]' ].value=zip;
	    window.opener.document.process_payment[ 'delivery[state]' ].value=state;
	    window.opener.document.process_payment[ 'delivery[suburb]' ].value=suburb;
    }
    else
    {
	    window.opener.document.register_form[ 'member[d_postcode]' ].value=zip;
	    window.opener.document.register_form[ 'member[d_state]' ].value=state;
	    window.opener.document.register_form[ 'member[d_suburb]' ].value=suburb;
    }
    window.close ();
}

function addressCheck()
{
    if( $( 'copy_addy' ).checked == true )
    {
        $( 'member[copy_addy]' ).value = 1;
    }
    else
    {
        $( 'member[copy_addy]' ).value = 0;
    }
}

function validateGiftCertificate()
{
    div =  "giftCerti_gcDiv";
    file = "./actions/giftCertificate.php?gift_code=" + $( 'gift_c' ).value;
    var param  = "";
    var objupdate = new Ajax.Updater(
        {success: div},
        file,
        {
            method: "post",
            parameters: param,
            evalScripts: true
        }
    );
}

function removeGC( code )
{
    div =  "giftCerti_gcDiv";
    file = "./actions/giftCertificate.php?r=1&gift_code=" + code;
    var param  = "";
    var objupdate = new Ajax.Updater(
        {success: div},
        file,
        {
            method: "post",
            parameters: param,
            evalScripts: true
        }
    );
}

function detectBrowser()
{
    version=0;
    type = 0;
    if( navigator.userAgent.indexOf("Firefox")!=-1 )
    {
        var versionindex=navigator.userAgent.indexOf("Firefox")+8;
        if( parseInt(navigator.userAgent.charAt(versionindex))>=1 )
            type = 1;//firefox
    }
    else if (navigator.appVersion.indexOf("MSIE")!=-1)
    {
        temp=navigator.appVersion.split("MSIE");
        version=parseFloat(temp[1]);
        
        if (version>=5.5) //NON IE browser will return 0
            type = 2;//IE
    }
    
    file = "./actions/browser.php?t=" + type;
    var objupdate = new Ajax.Updater(
        {success: ""},
        file,
        {
            method: "post",
            parameters: "",
            evalScripts: true
        }
    );
}

var dissapeardiv;
var height = 0;
var elem;
var open1 = false;
function add_to_cart( products,n )
{
    var productString = "";
    var numreg = /^\d*$/;
    //var isnumber = new RegExp(numreg);
    
    var k = 0;    
    
    for( i = 0; i < products.length; i++ )
    {
        
       if(!$( 'product_' + products[ i ] ) || $( 'product_' + products[ i ] ).value == "")
       {
	 continue; 
       }
       else
       {
       	 k = 1;	
       }	
	
       if($( 'product_' + products[ i ] ))
       {
         if (!numreg.test($( 'product_' + products[ i ] ).value)) {
           $( 'product_' + products[ i ] ).focus();

           document.getElementById("msgcontent_"+n).innerHTML="Sorry, please input digit(s) only!"
           document.getElementById("showmsghere_"+n).style.display="";
           dissapeardiv = window.setInterval( "stopdiv("+n+")", 3000 );           
           return;
         }

        
        if( $( 'product_' + products[ i ] ). value != "" )
        {
            productString += products[ i ] + "_" + $( 'product_' + products[ i ] ). value + "^";
        }
        
       }
               
    }

        if(k == 0)
        {
           document.getElementById("msgcontent_"+n).innerHTML="Please type quantity in a box above!"
           document.getElementById("showmsghere_"+n).style.display="";	
           dissapeardiv = window.setInterval( "stopdiv("+n+")", 3000 );
           return;
        }  
               
    if( productString == "" )
        return;
    
           document.getElementById("msgcontent_"+n).innerHTML="Product(s) added into the cart successfully!"
           document.getElementById("showmsghere_"+n).style.display="";
           dissapeardiv = setInterval( "stopdiv("+n+")", 3000 );
           
           for(i=0;i<products.length;i++) //clear the value in each text box;
           {
    	      if($( 'product_' + products[ i ] ))
           	$( 'product_' + products[ i ] ).value = "";	
           }           
           
    var div = "cartBodyTable";
    var file = "../actions/add_to_cart.php?ps=" + productString;
    //prompt( "", file );
    var aj = new Ajax.Updater(
//        {success: div},
	{},
        file,
        {
            method: "post",
            parameters: "",
            evalScripts: true,
            onSuccess: dropDownShoppingCart
        }
    );
}

function stopdiv(n)
{

	var elem = document.getElementById( "showmsghere_"+n );

	elem.style.display = "none";

	clearInterval( dissapeardiv );

}


function removeitem(div,n,m)
{
	if(m == 0)
	{
	  document.getElementById("qty_"+n).value = document.getElementById("def_quan_"+n).value;
	  document.getElementById("showmsghere_"+n).style.display = "none";	
	  return;
	}
	if(m == 1)
	{
	  var aj = new Ajax.Updater
	  (
	  	  {success: div},
		  "../actions/deal_with_cart.php?action=remove&pid="+n,
		  {
		  	  method: "post",
			  parameters: "",
			  evalScripts: true
		  }
	  );
	}
}

function deal_with_cart(div,n)
{
	var x = document.getElementById("qty_"+n);
	var defx = document.getElementById("def_quan_"+n).value;
    	var numreg = /^\d*$/;	
	
	if (!numreg.test(x.value))
	{
		alert("Sorry, please input digit(s) only!");
		x.value = defx;
		x.focus();		
		return false;
	}
	
	if (x.value == 0)
	{
           document.getElementById("showmsghere_"+n).style.display="";
           //dissapeardiv = window.setInterval( "stopdiv("+n+")", 10000 ); 		
	}
	else
	{
        	var quantity = x.value;

//        	alert ("../actions/deal_with_cart.php?action=update&pid="+n+"&amount="+quantity);
		var aja = new Ajax.Updater
		(
			{success: div},
			"../actions/deal_with_cart.php?action=update&pid="+n+"&amount="+quantity,			
			{
				method: "post",
				parameters: "",
				evalScripts: true
			}
		);

	}
	
}


var intervalID, dissapearId;
var height = 0;
var elem;
var open1 = false;
function dropDownShoppingCart(data)
{
    //elem.style.border = "solid 1px #000000";
    //alert( elem.innerHTML );

	var elem = document.getElementById( "shoppinCart" );
	document.getElementById( "cartBodyTable" ).innerHTML=data.responseText;
	elem.innerHTML = data.responseText;
    //alert( document.body.scrollTop );
    //elem.style.height = "auto";  
//    if( navigator.userAgent.indexOf("Firefox")!=-1 )
//    {
//        var versionindex=navigator.userAgent.indexOf("Firefox")+8;
//        if( parseInt(navigator.userAgent.charAt(versionindex))>=1 )
//        {
//            elem.style.height = getHeight( document.getElementById( "cartBodyTable" ).innerHTML ) + "px";
//            alert( elem.style.height + " >>> " + $( "ddCart" ).style.height );
//        }
//    }
    
    //height = 0;
    dropDownCart();
    //intervalID = setInterval( dropDownCart, 30 );
    //dissapearId = setInterval( stopDropDown, 2000 );
    //elem.style.clip = 'rect(0px 0px 0px 0px)';
    //elem.style.display = "block";
}



function changeColor()
{
  
}

function dropDownCart()
{
    
//    if( height < 500 )
//    {
//        height += 10;
//        elem.style.height = height + "px";
        
        //prompt( "", $( "ddCart" ).innerHTML );
        //elem.style.position = "fixed";
	var elem = document.getElementById( "shoppinCart" );
	elem.style.position = "absolute";
	elem.style.display = "block";
        elem.style.overflow = "hidden";
	elem.style.visibility = "visible";

	var pos=0;
      if ( window.pageYOffset )
         pos=window.pageYOffset;
      else if ( document.documentElement && document.documentElement.scrollTop )
         pos=document.documentElement.scrollTop;
      else if ( document.body )
         pos=document.body.scrollTop;

	elem.style.top = pos+'px';

	elem.style.left = '-276px';
	elem.style.width = '686px';

//	alert(document.body.scrollTop);
//alert(elem.scrollTop);
        
        //document.getElementById( "ddCart" ).removeChild( document.getElementById( "fixedCart" ) );
        //$( "fixedCart" ).innerHTML = "abhishek";//document.getElementById( "floatingCart" ).innerHTML;
        //elem.style.clip = 'rect(0px 0px ' + height + 'px 0px)';
//    }
//    else
//    {
        //clearInterval( intervalID );
        //open = true;
        dissapearId = setInterval( stopDropDown, 3000 );
//    }
}

function stopDropDown()
{
//    elem.style.visibility = "visible";
//    elem.style.display = "block";
	var elem = document.getElementById( "shoppinCart" );
	elem.style.overflow = "hidden";
    //animate( 100, 100, 400, 20 );
    //height = 0;
    //elem.style.height = "0px";
    //elem.style.position = "absolute";
	elem.style.visibility = "hidden";
	elem.style.display = "none";
//    open = false;
	clearInterval( dissapearId );
    //ypSlideOutMenu.hideMenu('menu1');
    //document.getElementById( "fixedCart" ).innerHTML = document.getElementById( "floatingCart" ).innerHTML;
}

function animate( top, left, width, height )
{
    var d = document
	d.write('<style type="text/css">')
	d.write('#' + elem + 'Container { visibility:hidden; ')
	d.write('left:' + left + 'px; ')
	d.write('top:' + top + 'px; ')
	d.write('overflow:hidden; }')
	d.write('#' + elem + 'Container, #' + elem + 'Content { position:absolute; ')
	d.write('width:' + width + 'px; ')
	d.write('height:' + height + 'px; ')
	d.write('clip:rect(0 ' + width + ' ' + height + ' 0); ')
	d.write('}')
	d.write('</style>')

	this.load()
}

function getHeight( str )
{
    //alert( str.indexOf( "<tr>" ) );
    var occurances = 0;
    while( true )
    {
        if( str.indexOf( "<tr>" ) != -1 )
        {
            str = str.substring( str.indexOf( "<tr>" ) + 10, 1000  );
            //alert( str );
            occurances ++;
        }
        else
        {
            return occurances * 70;
        }
        
    }
}

form_submited=false;
function submit_once()
{
	var temp=form_submited;
	form_submited=true;
	return (!temp);
}

///////////////////////////////////////////////////////////////////////////////////


updateAmount = function( key )
{
	div =  'giftCerti_gcDiv';
    file = "./actions/giftCertificate.php?ua=" + key + "&amount=" + $( 'gc' + key ).value;
    var param  = "";
    var objupdate = new Ajax.Updater(
        {success: div},
        file,
        {
            method: "post",
            parameters: param,
            evalScripts: true
        }
    );
    //$( 'a' + key ).focus();
}


lockGiftCertis = function()
{
	div =  'giftCerti_gcDiv';
    file = "./actions/giftCertificate.php?lock=1";
    var param  = "";
    var objupdate = new Ajax.Updater(
        {success: div},
        file,
        {
            method: "post",
            parameters: param,
            evalScripts: true
        }
    );
}

setFocus = function( key )
{
	$( 'a' + key ).focus()
}

function add_bookmark(n)
{

	  var aj = new Ajax.Updater
	  (
	  	  {},
		  "../actions/add_to_bookmark.php?actnow=add&pid="+n,
		  {
		  	  method: "post",
			  parameters: "",
			  evalScripts: true
		  }
	  );

}

function delete_from_bookmark(n)
{

	  var aj = new Ajax.Updater
	  (
	  	  {},
		  "../actions/add_to_bookmark.php?actnow=delete&pid="+n,
		  {
		  	  method: "post",
			  parameters: "",
			  evalScripts: true
		  }
	  );

}

showOutOfStock = function( e )
{
//    var tempX = 0;
//    var tempY = 0;
//    
//    if( document.all )
//    { // grab the x-y pos.s if browser is IE
//        tempX = event.clientX + document.body.scrollLeft;
//        tempY = event.clientY + document.body.scrollTop;
//    }
//    else 
//    {  // grab the x-y pos.s if browser is NS
//        tempX = e.pageX;
//        tempY = e.pageY;
//    }  
//    
//    if (tempX < 0)
//    {
//        tempX = 0;
//    }
//    if (tempY < 0)
//    {
//        tempY = 0;
//    }  
//    
//    alert( e + "   " + findPosX( e ) + "   " + findPosY( e ) );

//    var pos=0;
//      if ( window.pageYOffset )
//         pos=window.pageYOffset;
//      else if ( document.documentElement && document.documentElement.scrollTop )
//         pos=document.documentElement.scrollTop;
//      else if ( document.body )
//         pos=document.body.scrollTop;

    $( 'outOfStockEmail_' + e ).value = '';
    $( e ).style.display = '';
}

function sendEmailNotification( divID, pID, nID )
{
    var aj = new Ajax.Updater
	  (
	  	  {success: "error_" + divID},
		  "../actions/outOfStock.php?pid=" + pID + "&email=" + $( 'outOfStockEmail_' + divID ).value + "&did=" + divID + "&n=" + nID,
		  {
		  	  method: "post",
			  parameters: "",
			  evalScripts: true
		  }
	  );
}

var div_Id;
function load_products_by_category(div_id, cat_id, prod_status) {
    var url = 'ajax_loader.php';
    var params = 'div_id=' + div_id + '&cmd=load_products_by_category&cat_id=' + parseInt(cat_id) + '&prod_status=' + prod_status;
    var ajax = new Ajax.Updater({success: div_id},url,{method: 'get',parameters: params });
}

function loadProduct(cat,divId,catId)
{
    div_Id = divId;
    var url = 'ajax_loader.php?cmd=loadProductsDetail&catId='+parseInt(catId)+'&cat_name='+cat;        
  
    new Ajax.Request(
      url
      , {
        method: 'post',
        onComplete:callbackProducts
      }
    );
        
}

function load_products_by_cat_id(divId, catId, status)
{
	div_Id = divId;
	var url = '/ajax_loader.php?cmd=load_products_by_cat_id&cat_id='+parseInt(catId)+'&status='+status;
  
    new Ajax.Request(url, {
         method: 'post',
         onComplete:callbackProducts
        }
      );
}

function callbackProducts(resp)
{
  
  
  $(div_Id).innerHTML = resp.responseText;  
}

function loadRightName(cat,catId,divId)
{
  div_Id = divId;
  var url = '/ajax_loader.php?cmd=loadRightProducts&catId='+parseInt(catId)+'&cat_name='+cat;        
  new Ajax.Request(url, {
             method: 'post',
             onComplete:callbackRightProducts
            }
          );
      
}
function callbackRightProducts(resp)
{
  
  $(div_Id).innerHTML = resp.responseText;  
}

function loadProductSubCat(cat,divId,catId)
{
    div_Id = divId;
    var url = 'ajax_loader.php?cmd=loadSubProducts&catId='+parseInt(catId)+'&cat_name='+cat;        
  
        new Ajax.Request(url, {
             method: 'post',
             onComplete:callbackProducts
            }
          );

}
function loadProductsFromPC(cat,divId,catId)
{
  div_Id = divId;
  var url = 'ajax_loader.php?cmd=loadProductsFromPC&catId='+parseInt(catId)+'&cat_name='+cat;        
  
        new Ajax.Request(url, {
             method: 'post',
             onComplete:callbackloadProductsFromPC
            }
          );
        
}

function callbackloadProductsFromPC(resp)
{
  
  
  $(div_Id).innerHTML = resp.responseText;  
}


function loadPaymentMethod(paymentType)
{
	//var obj = document.getElementById('payment_method');
	//obj = obj.id;
	//alert(obj);
	var url = '/ajax_loader.php';        
	
	var ajax = new Ajax.Updater({success: 'payment_method_type'},url,{method: 'post',parameters: 'cmd=loadPaymentMethod&paymentType='+paymentType, evalScripts: true});
	
	
	if (paymentType == 'gift_certificate') {
	    /*
		document.getElementById('other_payment_method_checkboxes').style.display = 'none';
		document.getElementById('gc_payment_method_checkbox').style.display = 'block';
		*/
		
		document.payment_form.payment_method[2].checked	= true;
		document.getElementById('apply_gift_cert_to_order_btn').style.display = 'block';
		document.getElementById('place_order_btn').style.display = 'none';
	} else {
	    document.getElementById('apply_gift_cert_to_order_btn').style.display = 'none';
	    document.getElementById('place_order_btn').style.display = 'block';
	}
	
	/*
    var url = 'ajax_loader.php?cmd=loadPaymentMethod&paymentType='+paymentType;        
    new Ajax.Request(url, {
             method: 'post',
             onComplete:callbackloadPaymentType
            }
         );
	*/
}

function apply_gift_cert_to_order(form) {
    var gc_code = form.gift_cert_code.value;

    var ajax_request    =
      new Ajax.Request(
        '/enter_gift_certificate_number.php'
        , {
          method:           'post'
          , parameters:     'ajax_func_name=validate_gift_cert_code&gift_certificate_number=' + gc_code
          , onComplete:     function (transport) {
                                document.getElementById('gift_cert_error_msg').innerHTML   = '';
                                if (transport.responseText == '1') {
                                    if (doFromSubmit()) {
                                        form.submit();
                                    }
                                } else {
                                    document.getElementById('gift_cert_error_msg').innerHTML   = 'Gift Certificate Code is not valid';
                                }
                            }
        }
    );
    
    
}

function remove_gift_cert_from_order(gc_id) {
    var form    = document.getElementById('payment_form');
    form.elements['action'].value   = 'remove_gift_cert_from_order';
    form.elements['gift_cert_id'].value   = gc_id;
    form.submit();
    //document.location.href  = '/enter_gift_certificate_number.php?cmd=remove_gift_cert&gift_cert_id=' + gc_id;
}

function validate_email_address(str) {
    var at  = '@';
	var dot = '.';
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   //alert('Invalid E-mail ID');
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   //alert('Invalid E-mail ID');
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    //alert('Invalid E-mail ID');
	    return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    //alert('Invalid E-mail ID');
	    return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    //alert('Invalid E-mail ID');
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    //alert('Invalid E-mail ID');
	    return false;
	 }
	
	 if (str.indexOf(" ")!=-1){
	    //alert('Invalid E-mail ID');
	    return false;
	 }

	 return true;
}

function callbackloadPaymentType(resp)
{
	
  if (resp)
  {
    document.getElementById('payment_method').innerHTML = resp.responseText;
  }
  else
  {
	  document.getElementById('payment_method').value = "hhhhkllklkl";
  }
}

function checkGiftStatus(giftId)
{
  
  var url = 'ajax_loader.php?cmd=loadGiftStatus&giftId='+giftId;        
  
        new Ajax.Request(url, {
             method: 'post',
             onComplete:callbackLoadGiftStatus
            }
          );
}

function callbackLoadGiftStatus(resp)
{
  
  $('gift_status').innerHTML = resp.responseText;
}

var UNKNOWN_PRODUCT_MESSAGE     = 'Unknown Product ID';
var BLANK_ORDER_MESSAGE         = 'There is no complete order entered';
var PARTIAL_ORDER_MESSAGE       = "The order is not completed. \r\nPlease put valid item and quantity";
var INVALID_QUANTITY_MESSAGE    = 'Enter valid quantity'; 
var INVALID_CC_ALERT_MSG        = "The credit card number is invalid. \r\nIf it is valid, then we do not accept this type of credit card";
var INVALID_CC_INPUT            = 'Enter numbers only';
var INVALID_CCV2_ALERT_MSG      = 'The CVV number must be atleast 3 characters.';
var INVALID_CC_EXP_DATE         = 'The expiration date entered for the credit card is invalid. \r\nPlease check the date and try again.';
var INVALID_EMAIL_ALERT         = "Your email is invalid. \r\nPlease enter valid email address";
var CANCEL_ORDER_ALERT          = "Do you really want to cancel this order?";
var CREATE_CUSTMER_CONFIRM_MSG  = "Customer not found!\nWant to create one?";
var REG_NUMBER                  = /^([0-9])+$/;
var MIN_CCV2_LENGTH             = 3;

var cc_names                    = new Array();

cc_names["VISA"]                = 'Visa';
cc_names["MC"]                  = 'Master Card';
cc_names["AMEX"]                = 'American Express';
cc_names["DINERS_CLUB"]         = 'Diners_Club';
cc_names["DISCOVER"]            = 'Discover';
cc_names["JCB"]                 = 'JCB';
cc_names["AUSTRALIAN_BANKCARD"] = 'Australian BankCard';


function isValidCreditCard(cardNumber,cc_types)
{
return true;  // !!!
  
  var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber); 
  
  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;
    var valid = false;
    var cc_count=1;
    var i = 0;    
    for(i = 0; i < cc_count; i++)
    {

        switch(cc_types)
        {
           
           case "MC":
             lengthIsValid = (cardNumberLength == 16);
             prefixRegExp = /^5[1-5][0-9]{14}$/;
             break;
             
        
           case "VISA":
             lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
             prefixRegExp = /^4[0-9]{12}([0-9]{3})?$/;
             break;
        
           case "AMEX":             
             lengthIsValid = (cardNumberLength == 15);         
             prefixRegExp = /^3[47][0-9]{13}$/;
             break;
           
           case "DINERS":
             lengthIsValid = (cardNumberLength == 15);
             prefixRegExp = /^3(0[0-5]|[68][0-9])[0-9]{11}$/;
             break;         
             
           case "DISCOVER":
             lengthIsValid = (cardNumberLength == 15);
             prefixRegExp = /^6011[0-9]{12}$/;
             break;
             
           case "JCB":
             lengthIsValid = (cardNumberLength == 15);
             prefixRegExp = /^(3[0-9]{4}|2131|1800)[0-9]{11}$/;
             break;
             
           case "BC":
             lengthIsValid = (cardNumberLength == 15);
             prefixRegExp = /^5610[0-9]{12}$/;
             break;
        
        }
        
        if(prefixRegExp.test(cardNumbersOnly))
        {        	
        	 if(creditCardChecksum(cardNumbersOnly))
        	 {
        	   valid = true;
        	   break;
        	 }        	

        }

    }
    
    if(!valid)
    {
    
       alert(INVALID_CC_ALERT_MSG);
       return false;
    
    }
      return true;    

  }
  else
  {
  
     alert(INVALID_CC_INPUT);
     return false;
  }

}


function creditCardChecksum(cardNo)
{

    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; 
    }

   return true;

}

function formSubmit(cat)
{
  window.open('search.php?category='+cat,'_self');
}   

function fillFormValue()
   {
		var frm = document.payment_form;
		if (frm==null) var frm = document.registrationForm;

		 //alert(frm.copy.checked)
		 if(frm.copy.checked == true)
		{
			frm.d_first_name.value = frm.b_first_name.value;
			frm.d_last_name.value = frm.b_last_name.value;
			frm.d_company.value	= frm.b_company.value;
			frm.d_address1.value = frm.b_address1.value;
			frm.d_address2.value = frm.b_address2.value;
			frm.d_postcode.value = frm.b_postcode.value;
			frm.d_suburb.value = frm.b_suburb.value;
			seIndex = frm.b_state.selectedIndex;
			frm.d_state.options[seIndex].selected = 'true';      
		 } 
   }
  
   
   function doRegFormSubmit(form_name)
   {

      RE_NAME     = /^[a-zA-Z \-\.\']+$/;
      RE_USERNAME = /^[a-z0-9\_]+$/;
      RE_MOBILE   = /^((\d\d\d)|(\(\d\d\d\)))?\s*[\.-]?\s*(\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/;
      RE_CREDIT   =  /^[0-9]+$/;
      RE_URL      = /^(((http(s?))|(ftp))\:\/\/)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$/i;
      RE_EMAIL_ADDRESS     =  /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
      RE_DECIMAL  = new RegExp(/^[0-9]{1,8}([\.]{1}[0-9]{1,2})?$/);
      RE_NUMBER   = new RegExp(/^[0-9]+$/);
      RE_PHONE    = new RegExp(/^((\d\d\d)|(\(\d\d\d\)))?\s*[\.-]?\s*(\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/);
	  //RE_PHONE    = new RegExp(/^((\d\d)|(\(\d\d\d\d)))?\s*[\.-]?\s*(\d\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/);
      RE_ZIP      = new RegExp(/^[0-9]{4}(([\-\ ])?[0-9]{4})?$/);
      RE_CHAR     = new RegExp(/^[a-zA-Z0-9\ ]+$/);

     
	  if (form_name=="payment_form")
	  {
		  var frm = document.payment_form;
		  
	  }
	  else
	  {
		  var frm = document.registrationForm;
	  }
	   var valid = true;
	   // bill address
	  if ((frm.username.value == '') /* || !(RE_USERNAME.test(frm.username.value)) */)
	  {
	  	 document.getElementById('username').className = 'register_longer_text_error';
		 valid = false;
	  }
	  else
	  {
	  		document.getElementById('username').className = 'register_longer_text';
	  }
	  if (frm.password.value == '')
	  {
	  	 document.getElementById('password').className = 'register_longer_text_error';
		 valid = false;
	  }
	  else
	  {
	  		document.getElementById('password').className = 'register_longer_text';
	  }
	   if (frm.confirm_password.value == '')
	  {
	  	 document.getElementById('confirm_password').className = 'register_longer_text_error';
		 valid = false;
	  }
	  else
	  {
	  		document.getElementById('confirm_password').className = 'register_longer_text';
	  }
	   
	   
	   if (frm.password.value!=frm.confirm_password.value)
	   {
   			document.getElementById('password').className = 'register_longer_text_error';
		 	valid = false;
	    	
	   }
  
   	 	  
	  // bill address
	  if ((frm.b_first_name.value == '') /* || !(RE_NAME.test(frm.b_first_name.value)) */)
	  {
	  	 document.getElementById('b_first_name').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  		document.getElementById('b_first_name').className = 'register_norm_text';
	  }
	  if (frm.b_last_name.value == '' /* || !(RE_NAME.test(frm.b_last_name.value)) */)
	  {
	  	 document.getElementById('b_last_name').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	 document.getElementById('b_last_name').className = 'register_norm_text';
	  }
	  if (frm.b_phone.value == '' /* || !(RE_NUMBER.test(frm.b_phone.value)) */)
	  {
	  	 document.getElementById('b_phone').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('b_phone').className = 'register_norm_text';
	  }
	  if (frm.b_email.value == '' /* || !(RE_EMAIL_ADDRESS.test(frm.b_email.value)) */)
	  {
	  	 document.getElementById('b_email').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('b_email').className = 'register_norm_text';
	  }
	  if (frm.b_postcode.value == '' /* || !(RE_ZIP.test(frm.b_postcode.value)) */)
	  {
	  	 document.getElementById('b_postcode').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	 document.getElementById('b_postcode').className = 'register_norm_text';
	  }
	  if (frm.b_address1.value == '' /* || !(RE_CHAR.test(frm.b_address1.value)) */)
	  {
	  	 document.getElementById('b_address1').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('b_address1').className = 'register_norm_text';
	  }

/*	  if (frm.b_address2.value == '' || !(RE_CHAR.test(frm.b_address2.value)))
	  {
	  	 document.getElementById('b_address_2').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('b_address_2').className = 'register_norm_text';
	  }
*/
	  if (frm.b_suburb.value == '' /* || !(RE_CHAR.test(frm.b_suburb.value)) */)
	  {
	  	 document.getElementById('b_suburb').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	 document.getElementById('b_suburb').className = 'register_norm_text';
	  }
	  // delivery address
	  if ((frm.d_first_name.value == '') /* || !(RE_NAME.test(frm.d_first_name.value)) */)
	  {
	  	 document.getElementById('d_first_name').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	 document.getElementById('d_first_name').className = 'register_norm_text';
	  }
	  if (frm.d_last_name.value == '' /* || !(RE_NAME.test(frm.d_last_name.value)) */)
	  {
	  	 document.getElementById('d_last_name').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('d_last_name').className = 'register_norm_text';
	  }
	  if (frm.d_postcode.value == '' /* || !(RE_ZIP.test(frm.d_postcode.value)) */)
	  {
	  	 document.getElementById('d_postcode').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('d_postcode').className = 'register_norm_text';
	  }
	  if (frm.d_address1.value == '' /* || !(RE_CHAR.test(frm.d_address1.value)) */)
	  {
	  	 document.getElementById('d_address1').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('d_address1').className = 'register_norm_text';
	  }

/*	  if (frm.d_address2.value == '' || !(RE_CHAR.test(frm.d_address2.value)) )
	  {
	  	 document.getElementById('d_address_2').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	 document.getElementById('d_address_2').className = 'register_norm_text';
	  }
*/
	  if (frm.d_suburb.value == '' /* || !(RE_CHAR.test(frm.d_suburb.value)) */)
	  {
	  	 document.getElementById('d_suburb').className = 'register_norm_text_error';
		 valid = false;
	  }
	  else
	  {
	  	document.getElementById('d_suburb').className = 'register_norm_text';
	  }
	  
	   
	  if (!valid)
	 {
		  $('msg').innerHTML = "Please fill out all required fields marked with (*)";
		 
		  return false;
	 }
	 else
	 {
	  	frm.submit();
	 }
   }  
   
   function showDiv()
   {
     $('checkout').style.display = 'inline';
     $('information').style.display = 'inline';
	 $('row_shoppingcart').style.display = 'none';
   }
   
   function testPhoneFormat(x)
   {
   		return RE_MOBILE.test(x);
   		// regex=/^\d{1,10}$/;
		//return regex.test(x);
		// return /^\+\d{1,3}\ \d{1,10}$/.test(x);
   }
   
	function validate_purchase_membership(frm) {
		is_valid	= false;
		
		if (frm === undefined || frm === null) {
			return true;
		}
		
		for (i = 0;i < frm.membership_radio_checkbox.length; i++) {
			if (frm.membership_radio_checkbox[i].checked) {
				is_valid	= true;
			}
		}
		
		if (! is_valid) {
			$('membership_action_section_error_msg').innerHTML = 'Please chose any of the action below';
			
			document.location = '#membership_action_section_anchor';
		} else {
			$('membership_action_section_error_msg').innerHTML = '';
		}
		
		return is_valid;
	}
   
	/*
	 * an exact copy of "function doRegFormSubmit", except submitting the form "frm.submit();"
	 */
	function validate_user_form(frm) {
   		RE_NAME     = /^[a-zA-Z \-\.\']+$/;
		RE_USERNAME = /^[a-z0-9\_]+$/;
		RE_MOBILE   = /^((\d\d\d)|(\(\d\d\d\)))?\s*[\.-]?\s*(\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/;
		RE_CREDIT   =  /^[0-9]+$/;
		RE_URL      = /^(((http(s?))|(ftp))\:\/\/)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(\/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$/i;
		RE_EMAIL_ADDRESS     =  /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
		RE_DECIMAL  = new RegExp(/^[0-9]{1,8}([\.]{1}[0-9]{1,2})?$/);
		RE_NUMBER   = new RegExp(/^[0-9]+$/);
		RE_PHONE    = new RegExp(/^((\d\d\d)|(\(\d\d\d\)))?\s*[\.-]?\s*(\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/);
		//RE_PHONE    = new RegExp(/^((\d\d)|(\(\d\d\d\d)))?\s*[\.-]?\s*(\d\d\d\d)\s*[\.-]?\s*(\d\d\d\d)$/);
		RE_ZIP      = new RegExp(/^[0-9]{4}(([\-\ ])?[0-9]{4})?$/);
		RE_CHAR     = new RegExp(/^[a-zA-Z0-9\ ]+$/);
		
		var valid = true;
		// bill address
		if (frm.username !== undefined && frm.username.value == '') {
			if (document.getElementById('username')) {
				document.getElementById('username').className			= 'register_longer_text_error';
			}
			valid = false;
		}
		else
		{
			if (document.getElementById('username')) {
				document.getElementById('username').className			= 'register_longer_text';
			}
		}
		
		if (frm.password !== undefined && frm.password.value == '')
		{
			if (document.getElementById('password')) {
				document.getElementById('password').className			= 'register_longer_text_error';
			}
			valid = false;
		} else {
			if (document.getElementById('password')) {
	  			document.getElementById('password').className			= 'register_longer_text';
			}
		}
		
		if (frm.confirm_password !== undefined && frm.confirm_password.value == '') {
			if (document.getElementById('confirm_password')) {
				document.getElementById('confirm_password').className	= 'register_longer_text_error';
			}
			valid = false;
		} else {
			if (document.getElementById('confirm_password')) {
				document.getElementById('confirm_password').className	= 'register_longer_text';
			}
		}
	   
	   
		if (frm.password !== undefined && frm.confirm_password !== undefined && frm.password.value != frm.confirm_password.value) {
			if (document.getElementById('password')) {
				document.getElementById('password').className			= 'register_longer_text_error';
			}
			valid = false;
		}
  
   	 	  
		// bill address
		if ((frm.b_first_name.value == '') /* || !(RE_NAME.test(frm.b_first_name.value)) */) {
			document.getElementById('b_first_name').className		= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_first_name').className		= 'register_norm_text';
		}
		
		if (frm.b_last_name.value == '' /* || !(RE_NAME.test(frm.b_last_name.value)) */) {
			document.getElementById('b_last_name').className		= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_last_name').className		= 'register_norm_text';
		}
		
		if (frm.b_phone.value == '' /* || !(RE_NUMBER.test(frm.b_phone.value)) */) {
			document.getElementById('b_phone').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_phone').className			= 'register_norm_text';
		}
		
		if (frm.b_email.value == '' /* || !(RE_EMAIL_ADDRESS.test(frm.b_email.value)) */) {
			document.getElementById('b_email').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_email').className			= 'register_norm_text';
		}
		
		if (frm.b_postcode.value == '' /* || !(RE_ZIP.test(frm.b_postcode.value)) */) {
			document.getElementById('b_postcode').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_postcode').className			= 'register_norm_text';
		}
		
		if (frm.b_address1.value == '' /* || !(RE_CHAR.test(frm.b_address1.value)) */) {
			document.getElementById('b_address1').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_address1').className			= 'register_norm_text';
		}
		
		/*	  if (frm.b_address2.value == '' || !(RE_CHAR.test(frm.b_address2.value)))
		{
			document.getElementById('b_address_2').className		= 'register_norm_text_error';
			valid = false;
		}
		else
		{
			document.getElementById('b_address_2').className		= 'register_norm_text';
		}
		*/
		
		if (frm.b_suburb.value == '' /* || !(RE_CHAR.test(frm.b_suburb.value)) */) {
			document.getElementById('b_suburb').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('b_suburb').className			= 'register_norm_text';
		}
		
		// delivery address
		if ((frm.d_first_name.value == '') /* || !(RE_NAME.test(frm.d_first_name.value)) */)
		{
			document.getElementById('d_first_name').className		= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('d_first_name').className		= 'register_norm_text';
		}
		
		if (frm.d_last_name.value == '' /* || !(RE_NAME.test(frm.d_last_name.value)) */) {
			document.getElementById('d_last_name').className		= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('d_last_name').className		= 'register_norm_text';
		}
		
		if (frm.d_postcode.value == '' /* || !(RE_ZIP.test(frm.d_postcode.value)) */) {
			document.getElementById('d_postcode').className = 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('d_postcode').className			= 'register_norm_text';
		}
		
		if (frm.d_address1.value == '' /* || !(RE_CHAR.test(frm.d_address1.value)) */) {
			document.getElementById('d_address1').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('d_address1').className			= 'register_norm_text';
		}
		
		/*	  if (frm.d_address2.value == '' || !(RE_CHAR.test(frm.d_address2.value)) ) {
			document.getElementById('d_address_2').className		= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('d_address_2').className		= 'register_norm_text';
		}
		*/
		
		if (frm.d_suburb.value == '' /* || !(RE_CHAR.test(frm.d_suburb.value)) */) {
			document.getElementById('d_suburb').className			= 'register_norm_text_error';
			valid = false;
		} else {
			document.getElementById('d_suburb').className			= 'register_norm_text';
		}
		
		
		if (! valid)
		{
			$('user_section_error_msg').innerHTML = 'Please fill out all required fields marked with (*)';
			document.location = '#user_section_anchor';
		}
		else
		{
			$('user_section_error_msg').innerHTML = '';
		}
		
		return valid;
	}
	
	function validate_affiliate_form(form) {
		var is_valid	= true;
		if (form.is_aff_new.value == 'TRUE') {
			if (form.aff_name.value == '') {
				document.getElementById('aff_name_field').className					= 'register_norm_text_error';
				is_valid	= false;
			} else {
				document.getElementById('aff_name_field').className					= 'register_norm_text';
			}
			
			if (form.aff_contact_phone.value == '') {
				document.getElementById('aff_contact_phone_field').className		= 'register_norm_text_error';
				is_valid	= false;
			} else {
				document.getElementById('aff_contact_phone_field').className		= 'register_norm_text';
			}
			
			if (form.aff_address1.value == '') {
				document.getElementById('aff_address1_field').className				= 'register_norm_text_error';
				is_valid	= false;
			} else {
				document.getElementById('aff_address1_field').className				= 'register_norm_text';
			}
			
			if (form.aff_postcode.value == '') {
				document.getElementById('aff_postcode_field').className				= 'register_norm_text_error';
				is_valid	= false;
			} else {
				document.getElementById('aff_postcode_field').className				= 'register_norm_text';
			}
			
			if (form.aff_city.value == '') {
				document.getElementById('aff_city_field').className					= 'register_norm_text_error';
				is_valid	= false;
			} else {
				document.getElementById('aff_city_field').className					= 'register_norm_text';
			}
			
			if (! is_valid) {
				$('affiliate_section_error_msg').innerHTML = 'Please fill out all required fields marked with (*)';
				document.location = '#affiliate_section_anchor';
			}
			
			return is_valid;
		}
		
		return true;
	}
	
	/*
	 * an exact copy of "function fillFormValue()", except submitting the form "frm.submit();"
	 */
	function copy_billing_address_to_delivery_address(frm) {
		if(frm.copy_billing_address_checkbox.checked == true)
		{
			frm.d_first_name.value = frm.b_first_name.value;
			frm.d_last_name.value = frm.b_last_name.value;
			frm.d_company.value	= frm.b_company.value;
			frm.d_address1.value = frm.b_address1.value;
			frm.d_address2.value = frm.b_address2.value;
			frm.d_postcode.value = frm.b_postcode.value;
			frm.d_suburb.value = frm.b_suburb.value;
			seIndex = frm.b_state.selectedIndex;
			frm.d_state.options[seIndex].selected = 'true';      
		 } 
	}
  