var redirect_url;
redirect_url = false;

function loading(){
}

function hide_loader(){
}

function show_hide_block(hide_block_id, show_block_id)
{
	$('#'+hide_block_id).hide('normal');
	$('#'+show_block_id).show('normal');
}

function message(mess, make_redirect)
{
	if(make_redirect == undefined)
		make_redirect = false;

	hide_loader();
	
	cool_popup('cool_popup', '', mess, 400, make_redirect);
} 

function cool_confirm(msg)
{
	if(confirm(msg))
		return true;
	else
		return false;
}

/* STYLED POPUP */
function cool_popup(popID, title, text, popWidth, c_r)
{
	if(c_r == undefined)
		c_r = false;
	
	var el_id = $('#'+popID).attr('id');
	if(el_id != undefined)
	{
		$('#'+popID+'_title').html(title);
		$('#'+popID+'_text').html(text);
		
	    //Fade in the Popup and add close button
	    $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) });
	
	    //Define margin for center alignment (vertical   horizontal) - we add 80px to the height/width to accomodate for the padding  and border width defined in the css
	    var popMargTop = ($('#' + popID).height() + 80) / 2;
	    var popMargLeft = ($('#' + popID).width() + 80) / 2;
	
	    //Apply Margin to Popup
	    $('#' + popID).css({
	        'margin-top' : -popMargTop,
	        'margin-left' : -popMargLeft
	    });
	
	    //Fade in Background
	    $('body').append('<div id="fade"></div>'); //Add the fade layer to bottom of the body tag.
	    $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer - .css({'filter' : 'alpha(opacity=80)'}) is used to fix the IE Bug on fading transparencies 
	
	    return false;
	}
	else
	{
		alert(text);
		if(c_r)
			complete_redirect();
	}
}

function close_cool_popup()
{
    $('#fade , .popup_block').fadeOut(); //fade them both out
    $('#fade').remove();
    
    complete_redirect();
    
    return false;
}

function redirect_to(page, error)
{
	if(error != '')
	{
		redirect_url = page;
		message(error, true);
	}
	else
	{
		redirect_url = false;
		document.location.href=page;
	}	
}

function complete_redirect()
{
	if(redirect_url && redirect_url != '')
	{
		page = redirect_url;
		redirect_url = false;
		document.location.href=page;
	}
}

function clearBox(box)
{
	 if(box.value==box.defaultValue) {
 	 	 box.value = "";
 	 }
}

function dialog_error(dialog_msg_id, el_id, error)
{
	if(error)
	{
		$("#"+el_id).addClass('ui-state-error');
		$('#'+dialog_msg_id).text(error).effect("highlight",{},1500);
		return false;
	}
	return true;
}

// set zebra rows for list items tables
function set_zebra()
{
	$('.list_items tr.data:even').mouseover(function(){
		$(this).addClass('over');
	});
	$('.list_items tr.data:even').mouseout(function(){
		$(this).removeClass('over');
	});			
	$('.list_items tr.data:even').addClass('alt');	
}

// check all checkboxes
function check_all(checkbox_class)
{
	$('.'+checkbox_class).attr('checked', true);
}

// uncheck all checkboces
function uncheck_all(checkbox_class)
{
	$('.'+checkbox_class).attr('checked', false);
}

function check_show_error(error, field_id)
{
	if(error && error != true)
	{
		$('#'+field_id).css("backgroundColor","#FAA");
		$('#'+field_id).focus();
		message(error);
		return false;
	}
	else
	{
		$('#'+field_id).css("backgroundColor","#fff");
		return true;
	}
}

function check_phone_parts(p, len, next_id)
{
	pl = p.length;
	if(pl == len)
	{
		if(next_id != '')
		{
			$('#'+next_id).focus();
		}
	}
}

function signup_submit(signup_number)
{		
	switch (signup_number)
	{
		case 0:
			var contact_f_name = $('#c_f_name').val();
			error = check_contact_name(contact_f_name, "First");
			if(!check_show_error(error, 'c_f_name'))		return false;
			
			var contact_l_name = $('#c_l_name').val();
			error = check_contact_name(contact_l_name, 'Last');
			if(!check_show_error(error, 'c_l_name'))		return false;
			
			var email = $('#email').val();
			if(!check_email(email))
			{
				if(!check_show_error('Please, enter valid email', 'email'))	return false;
			}
			else
				check_show_error(false, 'email');			
			
			break;

		case 1:
		
			var business_name = $('#business').val();
			error = check_businessname(business_name);
			if(!check_show_error(error, 'business'))	return false;
		
			var address	= $('#address').val();
			error = check_address(address);
			if(!check_show_error(error, 'address'))		return false;

			var address2	= $('#address2').val();
			error = check_address2(address2);
			if(!check_show_error(error, 'address2'))	return false;

			var city = $('#city').val();
			error = check_city(city);
			if(!check_show_error(error, 'city'))		return false;
	
			var state = $('#state').val();
			error = check_state(state);
			if(!check_show_error(error, 'state'))		return false;

			var zip = $('#zip').val();
			error = check_zip(zip);
			if(!check_show_error(error, 'zip'))			return false;

			var contact_f_name = $('#contact_f_name').val();
			error = check_contact_name(contact_f_name, "First");
			if(!check_show_error(error, 'contact_f_name'))		return false;
			
			var contact_l_name = $('#contact_l_name').val();
			error = check_contact_name(contact_l_name, 'Last');
			if(!check_show_error(error, 'contact_l_name'))		return false;
			
			// check phone parts
			var p1 = $('#phone_p1').val();
			error = check_phone_part(p1, 3);
			if(!check_show_error(error, 'phone_p1'))	return false;
			
			var p2 = $('#phone_p2').val();
			error = check_phone_part(p2, 3);
			if(!check_show_error(error, 'phone_p2'))	return false;

			var p3 = $('#phone_p3').val();
			error = check_phone_part(p3, 4);
			if(!check_show_error(error, 'phone_p3'))	return false;
			//
			
			// check toll-free
			var tf1 = $('#tollfree_p1').val();
			var tf2 = $('#tollfree_p2').val();
			var tf3 = $('#tollfree_p3').val();
		
			if(tf1 == '' && tf2 == '' && tf3 == '')
			{
				
			}
			else
			{
				error = check_phone_part(tf1, 3);
				if(!check_show_error(error, 'tollfree_p1'))	return false;
				
				error = check_phone_part(tf2, 3);
				if(!check_show_error(error, 'tollfree_p2'))	return false;
				
				error = check_phone_part(tf3, 4);
				if(!check_show_error(error, 'tollfree_p3'))	return false;
			}		
			
			/*
			var auto_email = '';
			$('input.checkbox:checked').each(function(i)
			{
				auto_email = this.value;
			});
			
			if(auto_email == '')
			{
				var email = $('#email').val();
				if(!check_email(email))
				{
					if(!check_show_error('Please, enter valid email or check generate random email', 'email'))	return false;
				}
			}
			else
				check_show_error(false, 'email');
			*/	
			
			var email = $('#email').val();
			if(!check_email(email))
			{
				if(!check_show_error('Please, enter valid email', 'email'))	return false;
			}
			else
				check_show_error(false, 'email');			
						
			var cat = $('#category').val();
			if(!check_number(cat))
			{
				if(!check_show_error('Please, select primary listings', 'category'))	return false;
			}			
			
			break;	
	}

	return true;	
}

function check_logo()
{
	var file = $('#logo_upload').val();
	
	if(file != '')
		return true;
	else
		return false;
}

/*
// upload logo file by jsHTTPRequest
function upload_file()
{
	var req = new JsHttpRequest();   
	
	var file = $('#logo_upload').val();
	
	if(file != '')
	{
		req.onreadystatechange = function() 
		{
			if (req.readyState == 4) 
			{
				// not worked. maybe codeignitor url format doesn't supported
				if(req.responseJS.error)
					document.getElementById('contacts_error').innerHTML=req.responseJS.error;
				
				document.getElementById('contacts_error').innerHTML='ok';
				
				req = null;
				return false;
			}
		}
	
		req.open(null, upload_script_name, true);
	
		req.send({ 'logo' : document.getElementById("logo_upload")});
	}
}
*/

// check billing address
function check_shipping_address()
{
	var f_name = $('#ship_f_name').val();
	error = check_contact_name(f_name, "First");
	if(!check_show_error(error, 'ship_f_name'))		return false;
	
	var l_name = $('#ship_l_name').val();
	error = check_contact_name(l_name, 'Last');
	if(!check_show_error(error, 'ship_l_name'))		return false;
	
	var address	= $('#ship_address').val();
	error = check_address(address);
	if(!check_show_error(error, 'ship_address'))		return false;
	
	var address2	= $('#ship_address2').val();
	error = check_address2(address2);
	if(!check_show_error(error, 'ship_address2'))	return false;

	var city = $('#ship_city').val();
	error = check_city(city);
	if(!check_show_error(error, 'ship_city'))		return false;

	var state = $('#ship_state').val();
	error = check_state(state);
	if(!check_show_error(error, 'ship_state'))		return false;

	var zip = $('#ship_zip').val();
	error = check_zip(zip);
	if(!check_show_error(error, 'ship_zip'))			return false;

	// check phone parts
	var p1 = $('#ship_phone_p1').val();
	var p2 = $('#ship_phone_p2').val();
	var p3 = $('#ship_phone_p3').val();

	if(p1 == '' && p2 == '' && p3 == '')
	{
		
	}
	else
	{
		error = check_phone_part(p1, 3);
		if(!check_show_error(error, 'ship_phone_p1'))	return false;
		
		error = check_phone_part(p2, 3);
		if(!check_show_error(error, 'ship_phone_p2'))	return false;
		
		error = check_phone_part(p3, 4);
		if(!check_show_error(error, 'ship_phone_p3'))	return false;
	}
		
	return true;
}

// check billing address
function check_billing_address()
{	
	var address	= $('#billing_address').val();
	error = check_address(address);
	if(!check_show_error(error, 'billing_address'))		return false;
	
	var address2	= $('#billing_address2').val();
	error = check_address2(address2);
	if(!check_show_error(error, 'billing_address2'))	return false;

	var city = $('#billing_city').val();
	error = check_city(city);
	if(!check_show_error(error, 'billing_city'))		return false;

	var state = $('#billing_state').val();
	error = check_state(state);
	if(!check_show_error(error, 'billing_state'))		return false;

	var zip = $('#billing_zip').val();
	error = check_zip(zip);
	if(!check_show_error(error, 'billing_zip'))			return false;

	// check phone parts
	var p1 = $('#billing_phone_p1').val();
	var p2 = $('#billing_phone_p2').val();
	var p3 = $('#billing_phone_p3').val();

	if(p1 == '' && p2 == '' && p3 == '')
	{
		
	}
	else
	{
		error = check_phone_part(p1, 3);
		if(!check_show_error(error, 'billing_phone_p1'))	return false;
		
		error = check_phone_part(p2, 3);
		if(!check_show_error(error, 'billing_phone_p2'))	return false;
		
		error = check_phone_part(p3, 4);
		if(!check_show_error(error, 'billing_phone_p3'))	return false;
	}
		
	return true;
}

// check credit card data
function check_billing_cc()
{
	var cc_type = $('#billing_cc_type').val();
	if(cc_type == '')
	{
		error = 'Please, select Card Type';
		if(!check_show_error(error, 'billing_cc_type'))	return false;
	}

	var cc_number = $('#billing_cc_number').val();
	error = check_credit_card_number(cc_number);
	if(!check_show_error(error, 'billing_cc_number'))	return false;
	
	var cc_cv2	= $('#billing_cc_cv2').val();
	error = check_cv2(cc_cv2, cc_type);
	if(!check_show_error(error, 'billing_cc_cv2'))		return false;

	var exp_month = $('#billing_cc_exp_month').val();
	var exp_year = $('#billing_cc_exp_year').val();	
	error = check_exp_date(exp_month, exp_year);
	if(error)
		$('#billing_cc_exp_month').css("backgroundColor","#FAA");
	else
		$('#billing_cc_exp_month').css("backgroundColor","#fff");
	if(!check_show_error(error, 'billing_cc_exp_year'))	return false;
	
	return true;
}

// check billing data
function check_billing_info()
{	
	if(!check_shipping_address())		return false;
	
	if(!check_billing_address())		return false;
	
	var check_card = true;
	// check if new credit card is selected
	var cid = $('#selected_card_id').val();

	if(cid != undefined)
	{
		if(check_number(cid))
		{
			check_show_error('', 'selected_card_id');
			if(cid != 0)
				check_card = false;
		}
		else
		{
			error = 'Please, select Credit Card';
			if(!check_show_error(error, 'selected_card_id'))
				return false;
		}
	}
	
	if(check_card)
	{
		if(!check_billing_cc())				return false;
	}
	
	return true;
}

// chenge client credit cards on payment form
function change_card(card_id)
{
	if(card_id == 0)
	{
		$('#cc_info_include').show();
		
		$('#billing_cc_number').val('');
		$('#billing_cc_cv2').val('');
		$('#billing_cc_exp_month').val('');
		$('#billing_cc_exp_year').val('');	
		return false;
	}
	
	$('#cc_info_include').hide();
	xajax_x_change_credit_card(card_id);
	return false;
}

function check_domain_changed(sld, tld)
{
	last_sld = $('#last_sld').val();
//	last_tld = $('#last_tld').val();
	
/*
	if(last_sld != sld || last_tld != tld)
	{
		$('#last_sld').val(sld);
		$('#last_tld').val(tld);
		
		return true;
	}
	else
		return false;
*/
	if(last_sld != sld)
	{
		$('#last_sld').val(sld);		
		return true;
	}
	else
		return false;

}

// check domain name valid and available
function check_domain(submit_mode)
{
	$('#submit_button').attr('disabled', false);
	
	var sld = $('#dom_sld').val();
//	var tld = $('#dom_tld').val();
	var tld = 'com';
	
	if(sld == '' || sld == undefined)
	{
		if(submit_mode)
		{
			check_show_error('You must choose a site name to proceed.', 'dom_sld');
			return false;
		}
		else
			return true;
	}
	
	error = check_domain_name(sld);
	if(error && !submit_mode)
		return false;
	if(!check_show_error(error, 'dom_sld'))		return false;

	/*
	if(submit_mode)
	{
		var years = $('#dom_years').val();
		if(!check_number(years))
		{
			check_show_error('Period should be number from 1 to 10', 'dom_years');
			return false;
		}
		
		ynum = parseInt(years);
		if(ynum < 1 || ynum > 10)
		{
			check_show_error('Period should be number from 1 to 10', 'dom_years');
			return false;
		}
		
		check_show_error(false, 'dom_years');
	}
	*/
	
	if(submit_mode == false)
	{
		if(check_domain_changed(sld, tld))
		{
			show_hide_reg_dom_buttons(false, 'hide');
		
			$('#submit_button').attr('disabled', 'disabled');
			
			xajax_x_check_domain_available(sld, tld);		
			return false;
		}
	}
	
	return true;
}

// check valid domain name
function check_domain_name(name)
{
	var v_dom = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])+)$/;
	if(!v_dom.test(name))
		return 'Second level domain name should be any letter, numbers and the symbol "-" (character "-" is allowed inside the name)';
	
	income = name.toString();
	var len = income.length;
	if(len < 3 || len > 63)
		return 'Second level domain name length should be from 3 to 63 types';
		
	return false;
}

function show_hide_reg_dom_buttons(submit_mode, show_hide)
{
	if(submit_mode)
	{
		if(show_hide == 'hide')
		{
			$('#submit_register_domain').val('wait...');
			document.getElementById('submit_register_domain').disabled = true;
		}
		else
		{
			$('#submit_register_domain').val('Continue');
			document.getElementById('submit_register_domain').disabled = false;
		}
	}
	else
	{
		if(show_hide == 'hide')
		{
			$('#button_check_domain').val('wait...');
			document.getElementById('button_check_domain').disabled = true;
		}
		else
		{
			$('#button_check_domain').val('check');
			document.getElementById('button_check_domain').disabled = false;
		}
	}	
}

// add or remove product in list for sending to payment
function add_remove_product_in_payment(product_id)
{
	var checkbox_id = 'product_'+product_id;
	
	var val = '';
	$('#'+checkbox_id+':checked').each(function(i)
	{
		val = this.value;
	});
	
	var action = 'add';
	if(val == '')
		action = 'remove';
		
	xajax_x_add_remove_product_in_payment(product_id, action);
	return false;
}

//add or remove product in list for sending to payment
function add_remove_product_in_modification(product_id)
{
	var checkbox_id = 'product_'+product_id;
	
	var val = '';
	$('#'+checkbox_id+':checked').each(function(i)
	{
		val = this.value;
	});
	
	var action = 'add';
	if(val == '')
		action = 'remove';

	xajax_x_add_remove_product_in_modification(product_id, action);
	return false;
}

// start payment process
function start_payment(url)
{
	var privacy = $('#privacy').attr('checked');
	if(!privacy)
	{
		message('You should confirm you have read Privacy Policy');
		return false;
	}
	var terms = $('#terms').attr('checked');
	if(!terms)
	{
		message('You should confirm you have read Terms and Conditions');	
		return false;
	}
	var refund = $('#refund').attr('checked');
	if(!refund)
	{
		message('You should confirm you have read Refund Policy');	
		return false;
	}
	
	$('#payment_buttons').hide();
	$('#payment_wait_message').show();
	redirect_to(url,'');
	return false;
}

// edit account personal information
function edit_personal_info(form_id)
{	
	if(!check_shipping_address())		return false;
	
	if(!check_billing_address())		return false;
		
	var form_data = xajax.getFormValues(form_id);
	xajax_x_edit_personal_info(form_data);
	
	return false;
}

// add new credit card for client
function add_credit_card(form_id)
{
	if(!check_billing_cc())				return false;
	
	var form_data = xajax.getFormValues(form_id);
	xajax_x_add_credit_card(form_data);
	
	return false;
}

// add or update client domain
function add_update_client_domain(form_id)
{
	if(!check_domain(true, true))	return false;

	var but_val = $('#submit_register_domain').val();	
	$('#submit_register_domain').val('please, wait...');
	
	var form_data = xajax.getFormValues(form_id);
	xajax_x_add_update_client_domain(form_data, 'submit_register_domain', but_val);
	return false;
}

function show_popup(title, script, width, height)
{
	if(width == undefined)
		width = 750;
	if(height == undefined)
		height = 600;
	var A=script;
	window.open(A,title, "resizable=0,scrollbars=1,width="+width+",height="+height);
}

function field_not_empty(id)
{
	var v = $('#'+id).val();
	if(v == '')
		return false;
	else
		return true;
}

function apply_discount(client_id, dis_val_id)
{
	var dis_code = $('#'+dis_val_id).val();
	xajax__x_check_discount_exist(client_id, dis_code);
	return false;
}

function confirm_assign_discount(client_id, dis_code, msg)
{
	if(confirm(msg))
		xajax__x_assign_discount(client_id, dis_code);
	return false;
}
