function showTab(tab) {
	var view_this = $(tab).parent().attr("id");
	
	//remove all
	$(tab).parent().parent().children().removeClass("active");	
	$(tab).parent().parent().next().children().hide();
	
	//set current
	$(tab).parent().addClass("active");
	$("#tabcontent_"+view_this).show();
	
}

// STEP 0 & STEP 1
function getRelatedAccessories(from){
	var params = getParams(from);
	var path = paramsToPath(params);
	$.ajax({	
		url: "/index.php/Dispatcher/action/GetAccessories/"+path+"/method/showContent",
		beforeSend: function() { 
			if(params.productid) {
				$(".busybee","#"+params.target+params.productid).show();
				var relacc = "relacc"+params.productid;	
			} else {
				$(".busybee","#"+params.target).show();
				var relacc = "relacc";
			}
			
				if(params.target == "relacc"){showTab(from)}; 
			
			},
		success: function(data) {
			//var method = $("method",data).text();
			var target = $("target",data).text();
	        var content = $("content",data).text(); 
			
			if(params.productid) {
			$("#"+target+params.productid).html(content).show();
			} else {
			$("#"+target).html(content).show();	
				}
			//BINDING
			$("a.basketupdatebtn").click(function() { updateBasket(this); });
			$("a.buynowacc").unbind("click");
			$("a.buynowacc").click(function() { updateBasket(this); });
			$("a.checkboxbtn").click(function() { 
				$("input[type=checkbox]",this).click(function(){
					if($(this).attr("checked")){ $(this).parent().addClass("checked");}
					else{ $(this).parent().removeClass("checked"); }	
				}); 
			});
			//TOGGLE-SWITCHING STEP 0 & 1
			if(target == "buyrelacc" || target.substr(0,10) == "baskrelacc"){ 
				initGetOnceToggle(target,from); 
				initGetOnceToggle(target,$(".getsrvbtn"),1);
				}			
			}
	})		
	return false;	
}

function getBigItemBlock(from) {
	var params = getParams(from);
	var bid = params.bid;
	var pid = encodeURI(params.pid);
	var gid = params.gid;
	var target = params.target;
	
	$(".bigitemImport", "."+target).load("/index.php/Portal/section/Products/g/"+gid+"/p/"+pid+"/bid/"+bid+"/method/showContent/inline/1",
		
		//callback
		function() { 
			$("li a",".tabtop").hoverClass(".hover");
			$("li.desctab a,li.spectab a,li.matchtab a,li.substab a",".tabtop").bind("click", function() { showTab(this); } );
			$(from).unbind("click");
			$(from).parent().parent().parent().find(".getbigitemblock").removeClass("getbigitemblock").addClass("toggleBigitem");
			$("li.acctab a",".tabtop").bind("click", function() { getRelatedAccessories(this);});
			
			$("a.toggleBigitem").bind("click", function() {
				if($(this).parent().parent().parent().next().hasClass("hidden")) {
					
					$(this).parent().parent().parent().next().removeClass("hidden");
					$(this).parent().parent().parent().next().show();
					
				} else {
					
					$(this).parent().parent().parent().next().addClass("hidden");
					$(this).parent().parent().parent().next().hide();
					
					}
			});
		}		
	);
	$("."+target).show();
	
}	

//updateStats
function updateStats() {
		//SELLERS
	var prod = "";
	$("#prod option:selected").each(function (i) {
		prod += $(this).val() + ",";												 
	});
	var prodquery = prod.substr(0,prod.length-1);
		$("input[@name=prodselected]").val(prodquery);
	
	//SBS
	var sbs = "";
	$("#subs option:selected").each(function (i) {
		sbs += $(this).val() + ",";												 
	});
	var sbsquery = sbs.substr(0,sbs.length-1);
		$("input[@name=subsselected]").val(sbsquery);

	//SELLERS
	var sellers = "";
	$("#sellers option:selected").each(function (i) {
		sellers += $(this).val() + ",";												 
	});
	var sellersquery = sellers.substr(0,sellers.length-1);
		$("input[@name=sellersselected]").val(sellersquery);
	
	//VG
	var vg = "";
	$("#vg option:selected").each(function (i) {
		vg += $(this).val() + ",";												 
	});
	var vgquery = sellers.substr(0,vg.length-1);
		$("input[@name=vgselected]").val(vgquery);
	
	$("#statsform").ajaxSubmit({
			url: "/index.php/Dispatcher/Section/User/action/GetSales",
			type: "POST",
	        success: function(data) { 
			
			var content = $("content",data).text();
				$("#ifx").html(content);
				$("#ifx").show(); 
			}
		});
}
/*
function getBigItemBlock(from) {
	var params = getParams(from);
	var path = paramsToPath(params);
	$.ajax({	
		url: "/index.php/Portal/section/Products/g/Mobiltelefoner/p/Nokia/"+path+"/method/showContent/inline/1",
		beforeSend: function() { 
				$(".busybee","."+params.target).show();
			},
		success: function(data) {
			alert("ddhdh");
	        var target = $("target",data).text();
	        var content = $("content",data).text(); 
			$("."+target).html(content).show();
		}
	})		
	return false;	
}
*/
function getRelatedServices(from){
	var params = getParams(from);
	var path = paramsToPath(params);
	$.ajax({	
		url: "/index.php/Dispatcher/action/GetServices/"+path+"/method/showContent",
		beforeSend: function() { 
			$(".busybee","#"+params.target).show();
			if(params.target == "relacc"){showTab(from)}; 
			},
		success: function(data) {
			//var method = $("method",data).text();
	        var target = $("target",data).text();
	        var content = $("content",data).text(); 
			$("#"+target).html(content).show();
			//BINDING
			$("a.basketupdatebtn").click(function() { updateBasket(this); });
			$("input[type=checkbox]",$("#"+target)).click( function(){ updateBasket(this); });
			//TOGGLE-SWITCHING STEP 0 & 1
			if(target == "buyrelacc" || target.substr(0,10) == "baskrelacc"){ 
				initGetOnceToggle(target,from); 
				initGetOnceToggle(target,$(".getaccbtn"),1);
				}			
			}
	})		
	return false;	
}
function initGetOnceToggle(target,button,reset) {
	var buttonparent = $(button).parent();
	if (reset==1) {
		$(button).show();
		$("a.hidebtn",buttonparent).hide();
		$("a.showbtn",buttonparent).hide();
	} else {		
		$(button).hide();
		$("a.hidebtn",buttonparent).show();
		//BINDING
		$("a.hidebtn",buttonparent).click(function(){ 
			$("#"+target).hide();
			$("a.hidebtn",buttonparent).hide(); 
			$("a.showbtn",buttonparent).show();
		});
		$("a.showbtn",buttonparent).click(function(){ 
			$("#"+target).show();
			$("a.hidebtn",buttonparent).show(); 
			$("a.showbtn",buttonparent).hide();
		});	
	}
}


// DROP IN BASKET (SMALLITEMBLOCK, BIGITEMBLOCK, MINIBASKET, STEP 1)
function updateBasket(from) {	
	var params = getParams(from);
	if(params.qty==null){
		var nuparams = { qty: $(from).parent().find("input[name=qty]").val() };
		$.extend(params,nuparams);
		}		
	var path = paramsToPath(params);	
	$.ajax({	
		url: "/index.php/Dispatcher/action/UpdateBasket/"+path+"/method/showContent",
		success: function(data) {
			//var method = $("method",data).text();
	        var target = $("target",data).text();
	        var content = $("content",data).text();
	        
			if($(content).find("tr.basketrow").length > 0){	         
				$("#"+target).html(content);
				$("#"+target).show();
				//BINDING
				$("a.basketupdatebtn").click(function() { updateBasket(this); });
				$("a.getaccbtn").click(function() { getRelatedAccessories(this); });
	        }
	        else {
	        	window.location="/";
	        }	
		}
	});
}

function findCartsMatching(from) {
	$(".choosecartbox").remove();
	var params = getParams(from);
	var path = paramsToPath(params);
	$.ajax({	
		url: "/index.php/Dispatcher/action/FindCartsMatchingAccessory/"+path+"/method/showContent",
		success: function(data) { 
			//var method = $("method",data).text();
	        var target = $("target",data).text();
	        var content = $("content",data).text();
			if($(content).find("option","select[name=cartid]").length > 1){
				$("#"+target).after(content);		
				$("a.buyaccbtn").click(function() { dropInBasket($("#dropinmatchform")); });
			}
			else {
				updateBasket($(content).find("#dropinmatchform"));
			}
		}
	});		
}
function editDelivery(){
	var f = ["#dname","#daddr","#dzip","#dcity"];
	for (var i=0;i<f[0].length;i++){
		$( f[i] ).removeAttr("disabled");
	}
	$("#dname").unbind('keyup');
	$("#dname").blur(function(){updateField(this)});
}
function resetDelivery(){
	var f = ["#daddr","#dzip","#dcity"];
	for (var i=0;i<f[0].length;i++){
		$( f[i] ).val('');
		$( f[i] ).attr("disabled","disabled");
	}
	$("#editdelivery").parent().css({'display':'none'});
	$("#dname").removeAttr("disabled");
	$("#dname").val('');
	$("#dname").keyup(function(){deliveryLook($(this))})
	$("#dname").focus();
}
function updateCustomDelivery($deliveryid,newdelivery){
	$deliveryid=$deliveryid?$deliveryid:'0';
	$.ajax({
		url: "/index.php/Dispatcher/action/UpdateCustomDelivery/value/"+$deliveryid+"/target/deliveryaddress",
		dataType: "xml",
		success: function(data) { 
			var target = $("target",data).text();
			var content = $("content",data).text();
			$("#"+target).html(content);
			initCompanyData();
			if($deliveryid!=0)updateField($('#dzip'),true);
			else {
				resetDelivery();
				if(newdelivery) editDelivery();
			}
			
		}
	});
}
//STEP2: COMPANY DATA
function updateField(field,special){
	if(!special&&($(field).attr("readonly")==true || $(field).attr("disabled")==true || $(field).hasClass("invalid"))){ return false }
	else {
		//fielddata
		var fieldname = $(field).attr("name");
		var fieldvalue = encodeURIComponent($(field).fieldValue());
		if(special)fieldvalue = encodeURIComponent($(field).val());
		//if additional parameters
		var params = getParams(field);
		var path = paramsToPath(params);
		
		if(path){
				$.ajax({
					url: "/index.php/Dispatcher/action/UpdateField/"+path,
					dataType: "xml",
					data:  "field="+fieldname+"&value="+fieldvalue,
					success: function(data) { 
						//var method = $("method",data).text();
						var target = $("target",data).text();
						var content = $("content",data).text();
						$("#"+target).html(content);
						if(target=="deliverymethod"){
							$("input[type=radio]",$("#"+target)).click(function(){ updateField(this); });
						}
					}
				});
	}
		else {
			var fieldval = encodeURIComponent(fieldvalue);			
			if (fieldval.length == 0) { $.ajax({ url: "/index.php/Dispatcher/action/UpdateField/field/"+fieldname+"/value/0/method/dummyContent" });
				} else {
			$.ajax({ url: "/index.php/Dispatcher/action/UpdateField/method/dummyContent",
			         data: "field="+fieldname+"&value="+encodeURIComponent(fieldvalue)
			}); }
		}
	}
}
function initCompanyData() {
	//ignore fields in hidden containers
	initIgnoreFields($("#companydataform"));
	var validator_step2 = $("#companydataform").validate({	
		rules: {
			//COMPANY DETAILS
			orgnr: { required: true, digits: true, minlength: 9, maxlength: 9 },
			kname: { required: true },
			ktlf: { digits: true, minlength: 8, maxlength: 8 },
			kref: { required: true, maxlength: 10 },
			//INVOICE ADDRESS
			iname: { required: true },
			iaddr: { required: true },
			izip: { required: true, digits: true, minlength: 4, maxlength: 4 },
			icity: { required: true },
			//DELIVERY ADDRESS
			dname: { required: true },
			daddr: { required: true },
			dzip: { required: true, digits: true, minlength: 4, maxlength: 4 },
			dcity: { required: true },
			datt: { required: true },
			//ORDERIST
			pname: { required: true },
			pgsmn: { required: true, digits: true, minlength: 8, maxlength: 8, gsmnorway: true },
			pmail: { required: true, email: true },
			//TERMS
			rules: { required: true }
		},
		messages: {
			//COMPANY DETAILS
			orgnr: "Fyll ut med gyldig organisasjonsnummer (9 siffre).",
			kname: "Skriv firmanavn",
			ktlf: {
				required: "Skriv inn gyldig telefonummer.",
				digits: "Telefonnummer kan ikke inneholder bokstaver.",
				minlength: "Telefonnummer må inneholder 8 siffre.",
				maxlength: "Telefonnummer må inneholder 8 siffre."
			},
			kref: "Skriv inn en refaranse for denne ordren.",
			//INVOICE ADDRESS
			iname: "Skriv inn navn til person eller firma.",
			iaddr: "Skriv inn fakturaadressen.",
			izip: {
				required: "Skriv inn gyldig postnummer.",
				digits: "Postnummer kan ikke inneholder bokstaver.",
				minlength: "Postnummer må inneholder 4 siffre.",
				maxlength: "Postnummer må inneholder 4 siffre."
			},
			icity: { required: "Obligatorisk felt!" },
			//DELIVERY ADDRESS
			dname: "Skriv inn navn til person eller firma.",
			daddr: { required: "Obligatorisk felt!" },
			datt: { required: "Obligatorisk felt!" },
			dzip: {
				required: "Skriv inn gyldig postnummer.",
				digits: "Postnummer kan ikke inneholder bokstaver.",
				minlength: "Postnummer må inneholder 4 siffre.",
				maxlength: "Postnummer må inneholder 4 siffre."
			},
			//ORDERIST
			pname: "Skriv inn navn til kjøpsansvarlig person.",
			pgsm: {
				required: "Skriv inn mobilnummer til kjøpsansvarlig person.",
				digits: "Mobilnummer kan ikke inneholder bokstaver.",
				minlength: "Mobilnummer må inneholder 8 siffre.",
				maxlength: "Mobilnummer må inneholder 8 siffre."
			},
			pmail: "Skriv inn gyldig e-post-adresse. Ordrebekreftelsen sendes til denne adressen.",
			//TERMS
			rules: "Moobi sine kjøp- og leveringsbetingelser må aksepteres før du kan gå videre i bestillingen."
		},
		submitHandler: function() { window.location="/index.php/Portal/section/CheckOut/step/3"; }
	});
	$("input[readonly]").addClass("readonly");	
	//VALIDATION TRIGGERS
	$("input[type=text].validate","#companydataform").blur(function(){ updateField(this) });
	$("input[type=checkbox]","#companydataform").click(function(){ updateField(this) });
	$("input[type=radio]","#companydataform").click(function(){ updateField(this) });
	//BINDING
	$("select[class=addnewchooser]","#companydataform").change( function(){ toggleAddNewChooser($(this)); });
	$("#checkstep2btn").click(function(){ $("#companydataform").submit(); });
	$("#resetdelivery").click(function(){ updateCustomDelivery(0); return false; });
	$("#editdelivery").click (function(){ editDelivery(); return false; });
	$("#newdelivery").click (function(){ updateCustomDelivery(0,true); return false; });
	$(".customdelivery").keyup(function(){deliveryLook($(this))}).unbind("blur");
}

function initMsg2Moobi() {
	$("textarea","#Msg2Moobi").blur(function(){ updateField(this) });
}


function toggleAddNewChooser(chooser){ 
	if($("option:selected",chooser).val() == -1){
		$(chooser).parent().parent().parent().find(".newfield").show().find("input").removeAttr("disabled");
	} else {
		$(chooser).parent().parent().parent().find(".newfield").hide().find("input").attr("disabled",true);
		updateField(chooser);
	}
	initIgnoreFields($("#companydataform"));	
}

function initIgnoreFields(from){
	$("input",from).removeClass("ignore");
	$("input","#"+$(from).attr("id")+" :hidden").addClass("ignore");	
}

//showOrder
function showOrder(id,buffer,tid,ocn,type) {
	
	var row1 = "tr1"+id;
	var row = "if"+id;
	
	$.ajax({	
		url: "/index.php/Dispatcher/Section/User/action/ViewOrder/id/" + id + "/type/" + type,
		type: "GET",
		success: function(data) {
	        var content = $("content",data).text();	                			
			
			$("tr#" + row1).toggle();
			$("td#" + row).html(content);
		}
		
	})		
	return false;	
}

function deliveryLook(from){
    //variabler
    var params = getParams(from);
    var id = params.id;
    var target = params.target;
    
    var sotableid = $("select[name=sotableid]").val();
    var str = $(from).val();
    str = $.trim(str);
    str = escape(str);
    
    if (str=="") { $("#"+target).empty().hide(); clearTimeout(this.timer); return false; } else {
    //if not an empty string
    
    var ajaxurl = "/index.php/Dispatcher/Section/User/action/SearchDelivery/search/"+str;
    
    clearTimeout(this.timer);

    this.timer = setTimeout(function() {   
        $.ajax({   
            url: ajaxurl,
            beforeSend: function() {
                        $(from).addClass("loadingfield");
                    },
            success: function(data) {
                     var content = $("content",data).text(); 
                        $("#"+target).html(content);
                        $("#"+target).show();
                        $(from).removeClass("loadingfield");
                }
            });
       
        }, 500);
        return false;
    }
}

// FUNCTIONS EXECUTED ON RELOAD ONLY
$(document).ready(function() {

	//AJAX SETUP
	$.ajaxSetup({
  		dataType: "xml",
		type: "POST",
		timeout: 60000,
		error: function() { console.log("Error loading XML document"); }
	});

	//VALIDATOR DEFAULTS
	jQuery.validator.setDefaults({ 
		ignore: ".ignore",
    	highlight: function(element, errorClass) { 
    		$(element).addClass("invalid");
    		$(element).parent().parent().addClass(errorClass); 
    	},
		unhighlight: function(element, errorClass) { 
			$(element).removeClass("invalid");
			$(element).parent().parent().removeClass(errorClass); 			
		},
		errorPlacement: function(error, element) {
			if ( element.is(":radio") )
				error.insertAfter( element.parent().next() );
			else if ( element.is(":checkbox") )
				error.insertAfter ( element.parent().next() );
			else
				error.insertAfter( element.parent().next() );
		},
		focusCleanup: false
	});
	
	// VALIDATOR COMMON CUSTOM RULES
	jQuery.validator.addMethod("gsmnorway", function(value, element) { 
 	return this.optional(element) || value.substr(0,1) == 4 || value.substr(0,1) == 9; 
	}, "Mobilnummer begynner med 4 eller 9.");
	
	//REGISTER NEW USER
	$("#newUserForm").validate({	
		rules: {
			//COMPANY DETAILS
			newmail: { required: true, email: true},
			newpassword: { required: true },
			newfirstname: { required: true },
			newlastname: { required: true },
			newgsmnumber: { required: true, digits: true, minlength: 8, maxlength: 8, gsmnorway: true },
			//INVOICE ADDRESS
			newInvOrg: { required: true, digits: true, minlength: 9, maxlength: 9 },
			newInvCompany: { required: true },
			newInvAdr1: { required: true },
			newInvZip: { required: true, digits: true, minlength: 4, maxlength: 4 },
			newInvCity: { required: true },
			newInvPhone: { required: true, digits: true },
			//DELIVERY ADDRESS
			newDelCompany: { required: true },
			newDelAdr1: { required: true },
			newDelZip: { required: true, digits: true, minlength: 4, maxlength: 4 },
			newDelCity: { required: true },
			//TERMS
			newRules: { required: true }
		},
		messages: {
			//COMPANY DETAILS
			newmail: "<strong>Registrering av ny firmakunde:</strong> Skriv inn gyldig e-post-adresse.",
			newpassword: "<strong>Registrering av ny firmakunde:</strong> Skriv inn ett passord.",
			newfirstname: "<strong>Registrering av ny firmakunde:</strong> Skriv inn fornavn til person.",
			newlastname: "<strong>Registrering av ny firmakunde:</strong> Skriv inn etternavn til person.",
			newgsmnumber: {
				required: "<strong>Registrering av ny firmakunde:</strong> Skriv inn gyldig telefonummer.",
				digits: "<strong>Registrering av ny firmakunde:</strong> Telefonnummer kan ikke inneholder bokstaver.",
				minlength: "<strong>Registrering av ny firmakunde:</strong> Telefonnummer må inneholder 8 siffre.",
				maxlength: "<strong>Registrering av ny firmakunde:</strong> Telefonnummer må inneholder 8 siffre."
			},
			
			//INVOICE ADDRESS
			newInvOrg: "<strong>Faktura adresse:</strong> Fyll ut med gyldig organisasjonsnummer (9 siffre).",
			newInvCompany: "<strong>Faktura adresse:</strong> Skriv in firmanavn",
			newInvAdr1: "<strong>Faktura adresse:</strong> Skriv inn fakturaadressen.",
			newInvZip: {
				required: "<strong>Faktura adresse:</strong> Skriv inn gyldig postnummer.",
				digits: "<strong>Faktura adresse:</strong> Postnummer kan ikke inneholder bokstaver.",
				minlength: "<strong>Faktura adresse:</strong> Postnummer må inneholder 4 siffre.",
				maxlength: "<strong>Faktura adresse:</strong> Postnummer må inneholder 4 siffre."
			},
			newInvCity: { required: "<strong>Faktura adresse:</strong> Poststed er et obligatorisk felt!" },
			newInvPhone: {
				required: "<strong>Faktura adresse:</strong> Skriv inn gyldigt telefonnummer.",
				digits: "<strong>Faktura adresse:</strong> Telefonnummer kan ikke inneholder bokstaver."
				},
				
			//DELIVERY ADDRESS
			newDelCompany: "<strong>Leverings adresse:</strong> Skriv in firmanavn",
			newDelAdr1: "<strong>Leverings adresse:</strong> Skriv inn fakturaadressen.",
			newDelZip: {
				required: "<strong>Leverings adresse:</strong> Skriv inn gyldig postnummer.",
				digits: "<strong>Leverings adresse:</strong> Postnummer kan ikke inneholder bokstaver.",
				minlength: "<strong>Leverings adresse:</strong> Postnummer må inneholder 4 siffre.",
				maxlength: "<strong>Leverings adresse:</strong> Postnummer må inneholder 4 siffre."
			},
			newDelCity: { required: "<strong>Leverings adresse:</strong> Poststed er et obligatorisk felt!" },
			//TERMS
			newRules: "<strong>Salgsbetingelser:</strong> Moobi sine kjøp- og leveringsbetingelser må aksepteres før du kan gå videre i bestillingen."
		},
		
		//SETTINGS
		onsubmit: true,
		onfocusout: false,
		onkeyup: false,
		onclick: false,
		errorLabelContainer: "#messageBox",
  		wrapper: "li"
	});


	// DETAIL TABS
	$("li a",".tabtop").hoverClass(".hover");
	$("li.desctab a,li.spectab a,li.matchtab a,li.substab a",".tabtop").click(function() { showTab(this); });
	$("li.acctab a",".tabtop").click(function() { getRelatedAccessories(this);});
	
	
	//BUY PHONE BUTTON
	$("a.buynowbtn").click(function() { updateBasket(this); });
	
	//SMALLITEMBLOCK
	$("a.matchaccbtn").click(function() { findCartsMatching(this); });
	
	//SMALLITEMS LIST
	$("a.getbigitemblock",".itemList_items").click(function() { getBigItemBlock(this); });
	
	// STEP 1
	$("a.basketupdatebtn").click(function() { updateBasket(this); });
	$("a.getaccbtn").click(function() { getRelatedAccessories(this);});
	$("a.getsrvbtn").click(function() { getRelatedServices(this); });
	
	//Update statetics
	$("a.updatestats").click(function() { updateStats(); });				
	
	//Toggle boxes
	$(".toggleEdit").click(function() {
				$(".toggleEdit").toggle();
				$(".editbox").toggle();
									});
	
	//STEP 2
	if(parsePath("step") == 2) { initCompanyData() };
	
	//STEP 3
	if(parsePath("step") == 3) { initMsg2Moobi() };

	//GENERAL
	$(".showlogin").click(function() { $("#login").toggle(); });
	
				// make field available with checkbox
				$("#newUseInv").click(function () {
											
				if ( $(this).attr("checked") ) {
						$(this).parent().parent().parent().children().find(".disabled").attr("disabled","disabled");
						$(this).parent().parent().parent().addClass("disabled");
					} else {
						$(this).parent().parent().parent().removeClass("disabled");
						$(this).parent().parent().parent().children().find(".disabled").removeAttr("disabled");
					};									
											});


});	
