/**
**	VERTICAL POSITIONING IMAGES IN IMAGEHOLDER
***/
$(window).load(function(){
	
	$(".imageHolder img").each(function(){
		height = $(this).height();
		width = $(this).width();
			
		pheight = $(this).parent(0).height();
		pwidth = $(this).parent(0).width();
			
		margintop = 0;
		marginleft = 0;
			
		if(height<pheight && height > 0){
			margintop = Math.floor((pheight-height)/2);
		}else if(height>pheight){
			margintop = Math.floor((height-pheight)/2);
			margintop = "-"+margintop;
		}
		if(width<pwidth && width > 0){
			marginleft = Math.floor((pwidth-width)/2);
		}else if(width>pwidth){
			marginleft = Math.floor((width-pwidth)/2);
			marginleft = "-"+marginleft;
		}
		$(this).css("margin-top",margintop+"px");
		$(this).css("margin-left",marginleft+"px");
	});
});

$(document).ready(function(){
	if(baseHref=="/")
		baseHref = "";
	
	
	$(".error_box,.info_box,.success_box,.warning_box").fadeIn(350);
	
	/**ADD TOOLTIPS**/
	$tipDiv = $('<div class="register-tip ui-corner-all ui-state-default"></div>');
	var current = null;
	$('input').each(function(){
		if($(this).hasClass("form-submit"))
			return;
			
		$(this).focus(function(){
			if(current != null){
				$tipDiv.css("display","none");
				current = null;
			}
			if($(this).attr("rel")){
				current = $(this);
				pos = $(this).position();
				width = $(this).width();
				$tipDiv.html($(this).attr("rel")+"&nbsp;");
				$tipDiv.css({left:pos.left+width-2,top:pos.top-10,opacity:0.8});
				$tipDiv.fadeIn();
				$(this).parent(0).append($tipDiv);
			}
		});
		
		$(this).blur(function(){
			if(current != null){
				if($(this).attr("id") == current.attr("id")){
					$tipDiv.css("display","none");
					current = null;
				}
			}
		});
	});
	
	
	function urlencode(str) {
		return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
	}
	
	
	/***
	***	ALL SUBMIT BUTTONS & ACTIONS
	***/
	$(".form-submit").each(function(){
		
	
		$(this).hover(function(){
			$(this).addClass("hover");
		},function(){
			$(this).removeClass("hover");
		});
		$(this).mousedown(function(){
			if(!$(this).hasClass("down"))
				$(this).addClass("down");
		});
		$(this).mouseup(function(){
			$(this).removeClass("down");
		});
		$(this).mouseout(function(){
			if($(this).hasClass("down"))
				$(this).removeClass("down");
		});
	
		$(this).click(function(){
			
			var id = $(this).attr('id');
			if(id=='contest-submit'){
				if(validateForm()){
					return true;
				}
				return false;
			}
			if(id=='callmeback-submit' || id=='advice-submit' || id=='subscribenl-submit' || id=='traveller-submit'){
				if(validateForm()){
					return true;
				}
				return false;
			}
			if(id=='subscribe-submit'){
				if(validateForm()){
					return true;
				}
				return false;
			}
			if(id=='login-submit'){
				login();
			}
			if(id.substring(0,5) == "order"){
				articleID = id.substring(6);
				window.location.href = baseHref+'/'+module_name+'/cart/'+articleID+"/";
			}
			if(id=='register-submit'){
				window.location.href = baseHref+'/'+module_name+'/register/';
			}
			if(id=='backlogin-submit'){
				window.location.href = baseHref+'/'+module_name+'/login/register';
			}
			if(id=='doregister-submit'){
				ajaxStart();
				if(validateForm()){
					$(".error_box_holder").fadeOut(function(){$(this).html("");});
					
					//$("#form_register").submit();
					values = collectRegisterFields();
					strValues = JSON.stringify(values);
					
					
					$.ajax({
					   type		: "POST",
					   url		: baseHref+"/"+module_name+"/tools/register/",
					   data		: "postVars="+strValues,
					   dataType	: "json",	
					   success	: function(msg){
							if(msg == "OK"){
					  			window.location.href = baseHref+"/"+module_name+"/confirm/";
					   		}else{
					   			if(msg.html){
					   				if(msg.error_fields){
					   					for(i=0;i<msg.error_fields.length;i++){
					   						$("#"+msg.error_fields[i]).addClass("error");	
					   					}
					   				}
					   				$(".error_box_holder").html("");
					   				var errhtml = $(msg.html);
					   				$(".error_box_holder").append(errorhtml);
					   				
					   				/*
					   				$(".error_box_holder").html(msg.html);
					   				$(".error_box").css("display","block");
					   				$(".error_box_holder").fadeIn();
					   				$(".error_box label").each(function(){
					   					var id = $(this).attr("for");
					   					$("#"+id).addClass("error");
					   				});
					   				*/
					   				$.scrollTo(".error_box_holder",{duration:500});
					   			
					   			}
					   		}
					  		ajaxStop();
						} 
					 });
					return false;
				}else{
					ajaxStop();
					return false;
				}
			}
			if(id=='shop-submit'){
				window.location.href=baseHref+'/'+module_name+'/list/';
			}
			if(id=='site-submit'){
				window.location.href=baseHref+'/';
			}
			if(id=='checkout-submit'){
				window.location.href=baseHref+'/'+module_name+'/login/';
			}
			if(id=='error-back'){
				window.location.href = $(this).attr('rel');
			}
			if(id=='config-submit-next' || id=='config-submit-cart'){
				if(validateForm()){
					postConfig(id);
				}else{
					$("#ajaxLoader").css("display","none");
					return false;
				}
			}
			if(id=='config-submit-previous'){
				form = $("#configForm");
				$("#action").val(id);
				form.submit();
			}
			
			/** CHECK DOMAIN NAME **/
			if(id=='config-submit-domaincheck'){
				div = $(this).parent(0).parent(0);
				div.find(".msg").addClass("timeToRemove");
				$(".timeToRemove").fadeOut(250,function(){
					$(this).remove();
				});
				
				input = div.find("input:first");
				input_id = input.attr("id");
				config = collectConfig();
				
				$.ajax({
					  type		:	"POST",
					  url		:	baseHref+"/"+module_name+"/tools/validate/",
					  data		:	"field="+input_id+"&json_config="+config,
					  dataType	:	"json",
					  success: function(msg){
					  		input.removeClass("error");
					  		input.removeClass("warning");
					  		input.removeClass("notice");
					  		input.removeClass("validated");
					  		
					  		if(msg == true){
					  			input.addClass("validated");
					  		}else{
					  			input.addClass(msg.result);
					  			div.prepend(msg.html);
					  			initCloseMessages();
					  		}
					  		updateConfig("validation");
					  		$("#ajaxLoader").css("display","none");
					  } 
				});
			}
			/** CHECK ADSL ADDRESS **/
			if(id=='config-submit-adslcheck' || $(this).hasClass("config-submit-adslcheck_be")){
				ajaxStart();
				ul = $(this).parent(0).parent(0).parent(0).parent(0);
				
				$(".msg",ul).addClass("timeToRemove");
				$(".timeToRemove").fadeOut(250,function(){
					$(this).remove();
				});
				
				input_id = $(this).attr("rel");
				config = collectConfig();
				inputfields = ul.find("input.form-text");
				
				$.ajax({
					  type		: "POST",
					  url		: baseHref+"/"+module_name+"/tools/validate/",
					  data		: "field="+input_id+"&json_config="+config,
					  dataType	: "json",
					  success: function(msg){
					  		if(msg == true){
					  			inputfields.each(function(){
					  				$(this).removeClass("error");
					  				$(this).removeClass("warning");
					  				$(this).removeClass("notice");
					  			});
					  		}else{
					  			inputfields.each(function(){$(this).addClass(msg.result);});
					  			ul.find("li:first").prepend(msg.html);
					  		}
					  		updateConfig("validation");
					  		ajaxStop();
					  },
					  timeout: function(){
							alert("Request timeout - please contact system administrator");
					  },
					  error : function(XMLHttpRequest, textStatus, errorThrown){
							alert("An error has occured: "+textStatus+"\n");
							
					  }
				});
			}
			
			/**	CART CONFIRMATION
			**/
			if(id=='doconfirm-submit'){
				return true;
			}
			if(id=='backinfo-submit'){
				window.location.href=baseHref+'/'+module_name+'/register/';
			}
			
			if(id=='partner-register-new' || id == 'partner-register'){
				window.location.href = $(this).attr("rel");
			}
			
		});
	});
	
	
	
	function isInteger (s)
   	{
      var i;
      if (isEmpty(s))
      if (isInteger.arguments.length == 1) return 0;
      else return (isInteger.arguments[1] == true);

      for (i = 0; i < s.length; i++)
      {
         var c = s.charAt(i);

         if (!isDigit(c)) return false;
      }

      return true;
	}
	var validator = {
		required: function(element) {
			if($(element).attr('value') != '' && ($(element).attr('value') != $(element).attr('rel'))){
				return true;
			}else{
				return false;
			}
		},
		email: function(element) {
				//posibility multiple emails
				var str = $(element).attr('value');
				var arr = str.split(";");
				var valid = true;
				for(i=0;i<arr.length;i++){
					if(arr[i] != ""){
					 if(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(arr[i])){
					 	
					 }else{
					 	valid = false;
					 }
					}
				}
				return valid;
		},
		int:	function(element){
				return isInteger(element);
		}
		
	};

	function validateForm() {
		var validated = true;
		$('input[type=text],input[type=password],input[type=checkbox],select,textarea').each(function(){
			check = true;
			/**
			*	NO CHECK WHEN SHIPPING IS IDENTICAL TO BILLING
			**/
			if($(".form-identical").hasClass("selected")){
				if($(this).attr("name").substring(0,4) == "ship"){
					check = false;
				}
			}
			if(check){
				hasError = false;
				errOption = "";
				
				if($(this).is("input[type=checkbox]")){
					if($(this).hasClass("required") && $(this).attr("checked") == false){
						hasError = true;
					}
				}else{
				
					if ($(this).hasClass('required')) {
						if (validator.required($(this)) == false) 
							{hasError = true;}
					}
					if ($(this).hasClass('email') && !hasError) {
						if (validator.email($(this)) == false) {
								hasError = true;
								errOption='email';
						}
					}
				}
				/**
				**	WHEN FORM IS HIDDEN, NO VALIDATION REQUIRED
				**/
				
				/* check all parents to see if they are not hidden**/
				$(this).parents().each(function(){
					if($(this).css("display") == "none"){
						hasError = false;
					}
				});
				/*
				if($(this).parent(0).hasClass('toggle_block_holder') || 
						$(this).parent(0).parent(0).hasClass('toggle_block_holder') || 
								$(this).parent(0).parent(0).hasClass("option")){
								
									if($(this).parent(0).css("display") == "none" || 
										$(this).parent(0).parent(0).css("display") == "none" || 
											$(this).parent(0).parent(0).parent(0).css("display") == "none" ||
												$(this).parent(0).parent(0).parent(0).parent(0).css("display") == "none"){
												hasError = false;
									}else{}
				}*/
				if (hasError == true) {
				
					if($(this).is("input[type=checkbox]")){
						$(this).parent(0).addClass('error');
					}else if($(this).is("select")){
						$(this).parent(0).addClass('error');
						$(this).addClass('error');
					}else{
						$(this).addClass('error');
						
					}
					/*
					if($(this).hasClass("message")){
						$.ajax({
						   type: "POST",
						   url: "/edp/tools/error-msg/",
						   data: "field="+$(this).attr('id')+"&option="+errOption,
						   success: function(msg){
						   			if(msg){
							   			ob = JSON.parse(msg);
							   			var id = "input#"+ob.id;
							   			div = document.createElement("div");
							    		$(div).addClass("form-error-msg");
							    		$(div).attr("rel",ob.id);
							    		$(div).html(ob.msg);
							    		if($('[rel='+$(id).attr('id')+']').length>0){
							   				$('[rel='+$(id).attr('id')+']').fadeOut(500,function(){
							   					$(this).remove();
							   					$(div).insertAfter($(id));
							   				});
							   			}else{
											$(div).insertAfter($(id));
							    		
										}
									}
							 }
						 });
					}
					*/
				}else{
					if($(this).is("input[type=checkbox]")){
						$(this).parent(0).removeClass('error');
					}else if($(this).is("select")){
						$(this).parent(0).removeClass('error');
						$(this).removeClass('error');
					}else{
						$(this).removeClass('error');
					}
					
				}
				if(hasError){
					validated = false;
					
				}
			}
		});
		return validated;
	}
	function hasParent(el){
		if(el.parent(0).length > 0){
			return true;
		}
		return false;
	}
	function resetForm() {
		$('input[type=text]').each(function(i, item) {
			$(this).attr('value', $(this).attr('rel'));
			$(this).removeClass('error');
			$(this).addClass('default');
		})
		update();
	}
	function login(){
		if(validateForm()){
			ajaxStart();
			$.ajax({
				type	: "POST",
				url		: baseHref+"/"+module_name+"/tools/shoplogin/",
				data	: "username="+$("#username").val()+"&password="+$("#password").val(),
				dataType: "json",
				success	: function(msg){
						if(msg == true){
							window.location.href= $("#actionURL").val();
						}else if(msg == false){
							$("#username").addClass("error");
							$("#password").addClass("error");
						}
						ajaxStop();
				} 
			});
		}else{
		}
	}
	
	$("#username").keyup(function(event){
		if (event.keyCode == 13) {
			login();
       	}
    });
	$("#password").keyup(function(event){
		if (event.keyCode == 13) {
       		login();
    	}
	});
	$('input[type=text]').each(function(){
		if ($(this).hasClass("nodefault"))
			return;
	
		if($(this).val() == '' || $(this).val() == $(this).attr('rel')){
			$(this).addClass('default');
			$(this).val($(this).attr('rel'));
		}
	});
	$('select').each(function(){
		if($(this).val() == $(this).attr("rel")){
			$(this).addClass('default');
		}
		$(this).change(function(){
			if($(this).val() != $(this).attr("rel")){
				$(this).removeClass('default');
			}else{
				$(this).addClass('default');
			}
		});
		$(this).focus(function(){
			$(this).removeClass('default');
		});
		$(this).blur(function(){
			if($(this).val() == $(this).attr("rel")){
				$(this).addClass('default');
			}else{
				$(this).removeClass('default');
			}
		});
	});
	$('input[type=text],input[type=password]').focus(function() {
		if ($(this).hasClass("nodefault"))
			return;
		
		if ($(this).attr('value') == $(this).attr('rel')) {
			$(this).removeClass('default');
			$(this).attr('value','');
		}
		if($(this).hasClass('error')){
			$('[rel='+$(this).attr('id')+']').fadeOut(500,function(){$(this).remove()});
			$(this).removeClass('error');
		}
	});
	$('input[type=text]').blur(function() {
		if ($(this).hasClass("nodefault"))
			return;
		
		if ($(this).attr('value') == '') {
			$(this).addClass('default');
			$(this).attr('value', $(this).attr('rel'));
		}
	});
});

var ajaxloaders = 0;
var cursor = "";
function ajaxStart(){
	ajaxloaders++;
	$("#ajaxLoader").css("display","block");
	//$("body").css("cursor","wait");
}
function ajaxStop(){
	ajaxloaders--;
	if(ajaxloaders == 0){
		$("#ajaxLoader").css("display","none");
		//$("body").css("cursor","default");
	}
}
/*
var pleasewait = 0;
function startPleaseWait(){
	pleasewait++;
	$("#pleaseWait").css("display","block");
}

function endPleaseWait(){
	pleasewait--;
	if(pleasewait == 0){
		$("#pleaseWait").css("display","none");
	}
}*/

function postConfig(action){
		form = $("#configForm");
		$("#action").val(action);
		json_string = collectConfig();
		$("#config").val(json_string);
		form.submit();
}

function updateConfig(src){
	
	json_string = collectConfig();
	ajaxStart();
	$.ajax({
		type: "POST",
		url: baseHref+"/"+module_name+"/tools/updateSummary/",
		data: "srcElement="+src+"&json_config="+json_string+"&page="+$("#page").val()+"&wizardID="+$("#wizard").val()+"&wizardKey="+$("#wizardKey").val(),
		success: function(msg){
			msg = JSON.parse(msg);
			if(msg != false){
				$("#price-preview").html(msg.html);
				//$("#summary_product_total").html(msg.total);
				
				updateToolTip();
				if(msg.states){
					setWizardOptionStates(msg.states);
				}
				if(msg.showNext){
					$(".shownext").removeClass("hidden");
				}else if(msg.showNext === false){
					if(!$(".shownext").hasClass("hidden")){
						$(".shownext").addClass("hidden");
					}
				}
			}
			ajaxStop();
		} 
	});
}
function encodeForAjax(val){
	return val.replace("&","&amp;");
}

function collectConfig(){
	var values = new Array();		
	var parent;
	$(".main,.wizardOptionGroup,.wizardOptionGroup,.wizardOptionHolder,.wizardGroup").each(function(){
		var full_id = $(this).attr("id");
		arr2 = $(this).attr("id").split("_");
		if($(this).css("display") == "none"){
			values[values.length] = new Array(full_id,"HIDDEN");
		}
	});
	$(".wizardOptionGroup,.wizardOptionHolder").each(function(){
		parent = $(this);
		$(this).children().each(function(){
			val = 0;
			
			if($(this).hasClass("option")){
				
				if(parent.hasClass("object")){
					var full_id = parent.attr("id");
					arr2 = parent.attr("id").split("_");
					id = arr2[1];
					if($(this).hasClass("selected")){
						var valArr = $(this).attr("id");
						arr3 = $(this).attr("id").split("_");
						val = arr3[1];
						values[values.length] = new Array(full_id,val);
					}
					
				}else{
					var full_id = $(this).attr("id");
					arr2 = $(this).attr("id").split("_");
					id = arr2[1];
					if($(this).hasClass("selected")){
						val = 1;
					}
					values[values.length] = new Array(full_id,val);
				}
			}
		});
	});
	
	$(".wizardOptionHolder").each(function(){
		$(this).children().each(function(){
			if($(this).hasClass("option") || $(this).hasClass("propertyHolder")){
				$(this).find("input,select,textarea").each(function(){
					var full_id = $(this).attr("id");
					val = $(this).val();
					
					if($(this).attr("rel")){
						var rel = $(this).attr("rel");
						if(val != rel){
							values[values.length] = new Array(full_id,val);
						}else{
							values[values.length] = new Array(full_id,"");
						}
					}else{
						values[values.length] = new Array(full_id,val);
					}
				});
			}
		});
	});
	json_string = JSON.stringify(values);
	return json_string;	
}

var lastStates = null;
function setWizardOptionStates(states){
	json_states = JSON.stringify(states);
	if(json_states != lastStates){
		for(i=0;i<states.length;i++){
			if(states[i].state){
				element = $("#"+states[i].prefix+"_"+states[i].id);
				if(element.length <= 0){
					element = $("#"+states[i].prefix+"_"+states[i].id+"_holder");
				}
				statelist = states[i].state.split(";");
				for(a=0;a<statelist.length;a++){
					state = statelist[a];
					setElementState(element,state,false,states[i]);
				}
			}
		}
		
		lastStates = json_states;
	}
}
