// JavaScript Document
/* 
Global Avio JS File
 */
try { window.onerror = doErrorLogging;	} catch (ex) {} 
 
var debugRules = true ; 

var selectedCustomerType = "P";
 
var adressTabButtonClass = 'adressTabButtonSelected' ;
var adressTabClass = 'adressTabSelected' ;

var errorMsgRequired = "MISSINGFIELDS"  ;
var errorMsgEmail = "EMAILWRONG";
var errorMsgPassword = "PASSWORDMISMATCH";

var pwRecoveryCleaned = false;

var ajaxUrl = '/lib/ajax/ajaxCall.php' ;


/*quick search */
var timestamp;
var cancelSearchId = -1;
var searchResultPosition = -1 ;
/* / quick search */

jQuery(document).ready(function(){
	
	jQuery.ajaxSetup({
		dataType: "json",	
		url:"/lib/ajax/ajaxCall.php"
	});
	
	// Profile Form 
	jQuery(".customerTypeInput").change(function(){
		if (jQuery(this).val() == "P") {
			selectedCustomerType = "P";
			jQuery("#businessInputFields").css("display","none");
		} else {
			selectedCustomerType = "B" ;
			jQuery("#businessInputFields").css("display","block");
		}
	}) ;
	
	jQuery(".adressTabButton").click(function(ev){
		showAdressTab(jQuery(this));
		ev.preventDefault();
	}) ;
	
	jQuery("#profileForm").submit(function(submitEvent){
		if (!validateProfileForm()) {			
			submitEvent.preventDefault();
			return false ;
		}
		// submitEvent.preventDefault();
		// return false;
	}) ;
	
	
	jQuery('.formValidation, .validateForm').submit(function(submitEvent){
		if (!validateForm()) {			
			submitEvent.preventDefault();
			return false ;
		}
	});
	
	jQuery(".checkoutDeliveryFormNextLink").click(function() {
		jQuery("#checkoutDeliveryForm").submit(); // Sending form.
	});
	
	jQuery(".contentPreLoader").show("fast");
	doGlobalPreloading();
	
	jQuery(".userForm").submit(function(ev){	
		ev.preventDefault();
		postUserForm(jQuery(this)); // Performing auto submission with ajax.		
		return false;
	}) ;
	
	jQuery("#LinkSharingLink, #productShareEmail, .shareLink").click(function(){
		showDialog("LinkSharing");
	});
	
	jQuery(".productListOptionSelect").change(function(){
	
		updateProductListing(jQuery(this));
	}) ;
	
	jQuery(".paymentMethodSelection").change(function(){
		// changePaymentMethod(jQuery(this));
		// alert(window.location.href);
		// window.location.href = window.location.href ;
		updatePaymentForm(jQuery(this));
	}) ;
	
	jQuery(".iframeDialog").click(function(ev){
		injectIframeDialog(jQuery(this));
		ev.preventDefault();
	});
	
	jQuery("#checkout").submit(function(ev){
		 /* jQuery("input:name=payway"); */
		 if (!validateCheckoutForm()) {
		  	ev.preventDefault();
		  	return false;
		 }
	});
	
	// News rotation.
	if (jQuery(".articleTickerItem").length != 0) {
		jQuery(".articleTickerItem").each(function(){
			var id = jQuery(this).attr("id");		
			var ticker = new ArticleTicker(id);
			ticker.start();
		});
	}
	
	
	jQuery('.filterRemoval').click(function(ev){
		applySizeFilterToUrl(jQuery(this).attr("id"));								 
		ev.preventDefault();
	});
	
	
	/* Password recovery  */
	jQuery('.showPasswordDialog, .lostPasswordLink, #doPasswordRecovery').click(function(){
		showLostPasswordDialog();
	}) ;


	jQuery("#lostPasswordform").submit(function(submitEvent) {
		doPasswordRecovery(submitEvent);
	}) ;
	
	
	jQuery('#loginLostPassword').click(function(){
		
		var username = jQuery("#loginUsername").val();
		if (username != "") {
			jQuery('#passwordRecoveryInput').val(username);
		}
		jQuery("#LoginDialog").dialog("close");
		showLostPasswordDialog();
	});
	

	
	jQuery("#passwordRecoveryInput").bind('focus',function(){
		if (!pwRecoveryCleaned) {
			pwRecoveryCleaned=true ;
			jQuery("#passwordRecoveryInput").val("");
		}
	});
	
	
	jQuery("#checkoutRegistrationForm input#profileFormEmail").blur(function(){
		checkIfUserExists(jQuery(this),1);
	});
	
	jQuery('form#checkoutRegistrationForm').submit(function(ev){
		
		doCheckoutRegistration(jQuery(this));
		ev.preventDefault();
		
	});
	
	jQuery('.forgottenPasswordLink').click(function(){
		sendPasswordInEmail(jQuery(this));
	});
	
	jQuery("#authForm").submit(function(submitEvent) {
		doLogin(submitEvent);
	}) ;
	
	jQuery(".checkoutLoginForm").submit(function(submitEvent) {
		/*setCheckoutRouteCookie();
		doFormLogin(jQuery(this).attr("id"),submitEvent);
		*/
	}) ;
	
	jQuery('.loginForm').submit(function(ev){
		doFormLogin(jQuery(this).attr("id"),ev);
	});
	
	jQuery(".loginLink").click(function(){
		showLoginDialog();
	}) ;
	
	jQuery(".checkoutLoginLink").click(function(){
		setCheckoutRouteCookie();	
		showLoginDialog();
	}) ;
	
	jQuery("#checkoutRegisterNewCustomerLink").click(function(ev){
		setCheckoutRouteCookie();
	});
	
	jQuery('input.onFocusClear').each(function(){
		jQuery(this).data('text',jQuery(this).val());
	});
	/*
	jQuery('input.onFocusClear').live("focus",function(){
		var Id = jQuery(this).attr("id");
		var domElement = document.getElementById(id) ;
		domElement.select();
		jQuery(this).select();
	});
	*/
	jQuery('input.onFocusClear').live("click",function(){
												   
		var val = jQuery(this).val();
		var defaultVal = jQuery(this).data('text');
		if (val == defaultVal) {
			jQuery(this).val("");
		}

	});
	
	jQuery('input.onFocusClear').live("blur",function(){
		if (jQuery(this).val() == "") {
			jQuery(this).val(jQuery(this).data('text'));
		}
	});
	
	/* Quick search events */
	jQuery(".quicksearchInput").keypress(function(e){
        var key = e.which;
        if (key == 13 && searchResultPosition >= 0) {
            event.preventDefault();
            jumpToSearchResultItem();           
            return false ;
        }
    });
    
    jQuery(".quicksearchInput").keyup(function(event){
        var key = event.which;
        if (key == 40) moveSearchResultFocus('down');
        if (key == 38) moveSearchResultFocus('up');                 
        if (key>37 && key<41)return;        
        doQuickSearch(jQuery(this));        
    });
	
	
	jQuery('.quickSearchResultItem').mouseover(function(){
		resetSearchResultPosition(jQuery(this));
	});
    
    /* Hiding the searchResults */
    jQuery(document).click(function(){
        jQuery('#searchResultList').fadeOut(500) ;
    });
	
	jQuery("#newsletterForm").submit(function(submitEvent){
		newsletterSubmit(submitEvent);
		return false;
	});
    
	jQuery('#cloneAddresses').click(function(){
		
		jQuery('input[name=adress\\[kundeadresse\\]]').val(jQuery('input[name=adress\\[leveringsadresse\\]]').val());
		jQuery('input[name=postnr\\[kundeadresse\\]]').val(jQuery('input[name=postnr\\[leveringsadresse\\]]').val());
		jQuery('input[name=city\\[kundeadresse\\]]').val(jQuery('input[name=city\\[leveringsadresse\\]]').val());
		jQuery('input[name=state\\[kundeadresse\\]]').val(jQuery('input[name=state\\[leveringsadresse\\]]').val());
		
	});
	
	
	jQuery('#overlay').click(function(){jQuery(this).hide()});
	
});

function newsletterSubmit(ev) {
	ev.preventDefault();
	jQuery('.pageFormResponse').hide();
	toggleLoaderForDiv('newsletterLoader','newsletterSignupSubmit') ;		
	var action = jQuery("input[@name='signon']:checked").val();
	var input = jQuery("#newsletterEmailAddr").val();
	var mod = "newsletter" ;
	
	var cmd = {mod:mod,action:action,email:input} ;
	
	jQuery.ajax({
		data:cmd,
		success: function(data, textStatus, XMLHttpRequest)  {			
			
			toggleLoaderForDiv('newsletterLoader','newsletterSignupSubmit') ;
			handleNewsletterResponse(action,data);	
			
		},
		error:function(XMLHttpRequest, textStatus, errorThrown){		
		
			toggleLoaderForDiv('newsletterLoader','newsletterSignupSubmit') ;
			var data = {error:1} ;
			handleNewsletterResponse(action,data);
		}
	});
}

function handleNewsletterResponse(action, data) {
		if (data == null || data.error == 1) {
			jQuery('#newsletterResponseFail').show();	
		} else {
			if (action == 0) {
				jQuery('#newsletterResponseSignoffSuccess').show();
			} else {
				jQuery('#newsletterResponseSignupSuccess').show();		
			}
		}
}

/* quick search */
function resetSearchResultPosition(jq){
	jQuery('.quickSearchResultItem').removeClass('searchItemFocused');
	jq.addClass("searchItemFocused");
}


function putFocusOnFirstSearchResult(){
    jQuery('.quickSearchResultItem:first').addClass('searchItemFocused').focus();
}

function moveSearchResultFocus(dir) {   
    if (dir == "up") {
        if (searchResultPosition > 0) {
            searchResultPosition-- ;
        } else {
            return;
        }
    } else if (dir == "down") {
        if (searchResultPosition < jQuery('.quickSearchResultItem').length -1) {
            searchResultPosition++ ;
        } else {
            return ;
        }
    }   
    setSearchItemSelected(searchResultPosition);
}

function setSearchItemSelected(index) {     
    jQuery(".quickSearchResultItem").removeClass('searchItemFocused');
    jQuery(".quickSearchResultItem").eq(index).addClass('searchItemFocused');   
}

function jumpToSearchResultItem(){
    if (searchResultPosition >=0) {
        var url = jQuery('.searchItemFocused').attr("href");
        document.location.href= url ;
    }
}

function doQuickSearch(jq){ 
    if (cancelSearchId != -1)clearTimeout(cancelSearchId);
    var searchKey = jq.val();
    if (searchKey.length == 0) return;  
    searchResultPosition = -1 ;
    cancelSearchId = setTimeout(function(){     
        getSearchResults(searchKey);        
    },400) ;    
}


function getSearchResults(term) {
   /* jQuery('.searchResultItemWrap').remove();*/
   jQuery('#searchResultList').children().remove();
    var cmd = {mod:"search",action:"quickSearch",searchKey:term};
    var results ;
    jQuery.ajax({
        data:cmd,
        success:function(data){
            results = data;
        },
        error:function(){
            doErrorLogging("quickSearch Failed",'function() getSearchResults',-1) ;
        },
        complete:function(){
            showSearchResults(results);
        }
    }); 
}

function showSearchResults(results){

    if (results == null) {      
        /* possible error*/
        
    } else if (results.length == 0) {   
        /* no results */
    
    } else if (results.error == 1) {
        /* php error. */
        
    } else {                
        // loop results and append to search Window. Also show it.
        for (var i in results) {            
            var ProductId = results[i]["ProductId"];
            var Name = results[i]["Name"];
            var ImgName = results[i]["IMAGENAME"];            
			var html = '<div class="search_list_element searchResultItemWrap"><a class="quickSearchResultItem" href="/?mod=product&id='+ProductId+'"><img src="/images/prodimages/thumb/'+ImgName+'" width="25" height="25" alt="" title=""/><p>'+Name+'</p></a></div>';
			
            jQuery('#searchResultList').append(html);            
        }        
        jQuery('#searchResultList').show();        
    }
}


function setCheckoutRouteCookie(){
	if (jQuery.cookie == undefined)  {
		doErrorLogging("jq cookie not included!! - checkout failed",window.location.href,205) ;
	} else {
		var targetLink = "/?mod=checkout&action=kundedata" ;
		jQuery.cookie("destinationLink",targetLink);
	}
}

function showLoginDialog() {
	
	showOverlay();
	
	jQuery("#LoginDialog").dialog({
		close:hideOverlay
	});
	
}

function doLogin(submitEvent) {
		submitEvent.preventDefault();
		authenticate();		
		return false ;		
}

function doFormLogin(formId, submitEvent){
		submitEvent.preventDefault();
		authenticateForm(formId);		
		return false ;		
}

/* Login functions */
function authenticateForm(formId) {
	
	jQuery("#"+formId+" .loginError").css("display","none");
	
	showLoginFormLoader(formId);
	// toggleLoaderForDiv('#loginLoader','#loginButton') ;
	
	var userName = jQuery("#"+formId+" input[name=user]").attr("value");
	var passWord = jQuery("#"+formId+" input[name=passwd]").attr("value");
	
	var mod = "profile" ;
	var action = "login";
	
	var resp ;
	
	var cmd = {mod:mod,action:action,usr:userName,pw:passWord} ;
	
	jQuery.ajax({
		data:cmd,
		success: function(data, textStatus, XMLHttpRequest)  {			
			resp = data;	
		},
		error:function(XMLHttpRequest, textStatus, errorThrown){		
			resp = {error:1,errorMsg:"Kommunikasjonsfeil."};
		},
		complete:function(){
			hideLoginFormLoader(formId);			
			if (resp == null) resp = {error:1,errorMsg:"Klarte ikke kommunisere med server."} ;		
			handleAuthenticationFormResponse(formId,resp);
			
		}
	});	
}
function handleAuthenticationFormResponse(formId, data) {
		
	
	if (data.error != 0 ){		
		authenticateFormFailed(formId, 'Login error',data.errorMsg);
		return;
	} else {		
		authenticateFormSuccess(formId, data);
	}
	
}

function authenticateFormSuccess(formId, data) {
	if (data.auth != true) {		
		authenticateFormFailed(formId,'Login error',data.errorMsg);
		return;
	}	
	try {
		jQuery.cookie("login",1);
	} catch(ex) {
		doErrorLogging(ex,window.location.href,281);
	}

	if (jQuery('#'+formId+" input[name=reloadOnLogin]").length>0) {
		var reloadOnLogin = jQuery("#"+formId+" input[name=reloadOnLogin]").attr("value");
		if (reloadOnLogin == 1) {
			window.location.reload();
		}
	}		
	// window.location.reload();
}

function authenticateFormFailed(formId, title, msg) {
	jQuery("#"+formId+" .loginError").css("display","block");
	jQuery("#"+formId+" .loginError").html(msg);
}

function showLoginFormLoader(formId) {
	jQuery("#"+formId+" input[type=submit]").css("display","none");
	jQuery("#"+formId+" .loginLoader").css("display","block");
}

function hideLoginFormLoader(formId) {
	jQuery("#"+formId+" input[type=submit]").css("display","inline");
	jQuery("#"+formId+" .loginLoader").css("display","none");
}






















function authenticate() {

	jQuery("#loginError").css("display","none");
	
	showLoginLoader();
	// toggleLoaderForDiv('#loginLoader','#loginButton') ;
	
	var userName = jQuery("#loginUsername").attr("value");
	var passWord = jQuery("#loginPassword").attr("value");
	var sessId = jQuery("#loginSessId").attr("value") ;
	var mod = "profile" ;
	var action = "login";
	
	var resp ;
	
	var cmd = {mod:mod,action:action,usr:userName,pw:passWord,sess_id:sessId} ;
	
	jQuery.ajax({
		data:cmd,
		success: function(data, textStatus, XMLHttpRequest)  {			
			resp = data;
			// hideLoginLoader();						
			// authenticateSuccess(data);			
		},
		error:function(XMLHttpRequest, textStatus, errorThrown){		
			resp = {error:1,errorMsg:"Kommunikasjonsfeil."};
			// hideLoginLoader();					
			// authenticateFailed('Could not log in','Service error. Contact support.');
		},
		complete:function(){
			hideLoginLoader();
			if (resp == null) resp = {error:1,errorMsg:"Klarte ikke kommunisere med server."} ;
			handleAuthenticationResponse(resp);
		}
	});
	
}


function handleAuthenticationResponse(data) {
	
	if (data.error != 0 ){
		authenticateFailed('Login error',data.errorMsg);
		return;
	} else {
		authenticateSuccess(data);
	}
	
}

function authenticateSuccess(data) {
	if (data.auth != true) {
		// alert(data);		
		authenticateFailed('Login error',data.errorMsg);
		return;
	}
	try {
		jQuery.cookie("login",1);
	} catch(ex) {
		doErrorLogging(ex,window.location.href,267);
	}
	
	jQuery("#LoginDialog" ).dialog( "destroy" ) ;	
	jQuery("#LoginDialog").hide("fast");
	jQuery("#overlay").css('display','none') ;
	window.location.reload();
}

function authenticateFailed(title,msg) {
	jQuery("#loginError").css("display","block");
	jQuery("#loginError").html(msg);
}

function showLoginLoader() {
	jQuery("#loginButton").css("display","none");
	jQuery("#loginLoader").css("display","block");
}

function hideLoginLoader() {
	jQuery("#loginButton").css("display","inline");
	jQuery("#loginLoader").css("display","none");
}




function sendPasswordInEmail(jq){
	
	try {
		
		var cmd = {mod:"userForm",action:"passwordRecovery",userId:jQuery.data(document.body,'passwdSearchKey'),noEmail:0};
		
		jQuery.post(ajaxUrl,cmd,function(data){
			if (data.error == 0) {
				jQuery('userFormResponse').hide();
				jQuery('#allreadyRegistered .success').show() ;
			} else if (data.error == 1) {
				jQuery('userFormResponse').hide();
				jQuery('#allreadyRegistered .failure').show() ;
			} else {
				jQuery('userFormResponse').hide();
				jQuery('#allreadyRegistered .appfailure').show() ;
			}
		});
				
	} catch (ex) {
		
	}
	
	
}


function checkIfUserExists(jq,noMail){
	
	var value = jQuery.trim(jq.val());
	
	if (value == "")return;
	
	try {
		
		var cmd = {mod:"userForm",action:"passwordRecovery",userId:value,noEmail:noMail};
		
		jQuery.post(ajaxUrl,cmd,function(data){
			handleUserCheckResponse(data,value);
		});
				
	} catch (ex) {}
	
}

function handleUserCheckResponse(data,value) {
	if (data != null && data.error == 0) {
		//  User exists. provid link for emailing lost password.
		// console.log("received userId: "+data.userId);
		jQuery.data(document.body, 'passwdSearchKey',value);
		jQuery.data(document.body, 'userId',data.userId);
		
		jQuery("#allreadyRegistered").dialog({});
	}
}


function doCheckoutRegistration(jq) {		
	if (!validateProfileForm()) {
		return false ;
	} else {
		
		var postStr = jQuery('#checkoutRegistrationForm').serialize();
		
		// showLoader("#profileFormSubmitButton");
		
		try {
			jQuery.post(ajaxUrl, postStr ,function(data){ handleCheckoutRegistrationResponse(data) ;});			
		} catch(ex) {
			checkoutRegistrationFailure("Systemet klarte ikke kontakte server");
		}
	}			
}

function handleCheckoutRegistrationResponse(data){
	if (data == null) {
		checkoutRegistrationFailure("Server returnerte ingen data. Prøv på nytt");
	} else if(data.error == 1) {
		checkoutRegistrationFailure(data.errorMsg);
	} else if (data.error == 0) {
		checkoutRegistrationSuccess(data);
	}
}

function checkoutRegistrationSuccess() {
	/*header("location:/?mod=checkout&action=bekreftelse");*/
	window.location = "/?mod=checkout&action=bekreftelse"; 
}

function checkoutRegistrationFailure(msg){
	
	jQuery('.pageFormErrorMessage').hide();
	jQuery("#SERVERERROR").html(msg).show();
	
}


function showLostPasswordDialog(){
	jQuery("#overlay").css('display','block') ;
	jQuery("#lostPasswordDialog").dialog({
		close: function(event, ui) {hideOverlay();} 					  
	});
}

function doPasswordRecovery(submitEvent){
	submitEvent.preventDefault();
	queryForPassword();		
	return false ;	
}


						

function queryForPassword() {
	
	toggleLoaderForDiv('pwRecoveryLoader','passwordRecoverySubmit') ;		
	var input = jQuery("#passwordRecoveryInput").val();
	var mod = "profile" ;
	var action = "passwordrecovery";
	
	var cmd = {mod:mod,action:action,userId:input} ;
	
	jQuery.ajax({
		data:cmd,
		success: function(data, textStatus, XMLHttpRequest)  {			
		
			toggleLoaderForDiv('checkoutFormSubmitLoader','profileFormSubmitButton') ;
			handleRecoveryResponse(data);	
			
		},
		error:function(XMLHttpRequest, textStatus, errorThrown){		
		
			toggleLoaderForDiv('pwRecoveryLoader','passwordRecoverySubmit') ;
			var data = {error:2} ;
			handleRecoveryResponse(data);
		}
	});
}

function toggleLoaderForDiv(hide,show) {

	jQuery("#"+hide).hide();
	jQuery("#"+show).show();
}


function handleRecoveryResponse(data){
	jQuery(".pageFormResponse").css("display", "none") ;
	jQuery(".lostPasswordDescr").css("display","none");
	if (data.error == 0) {		
		jQuery("#lostPasswordResponseSuccess").css("display","block");
	} else if (data.error == 1) {
		jQuery("#lostPasswordResponseFailure").css("display","block");
	} else if (data.error == 2) {
		jQuery("#lostPasswordResponseFailureApp").css("display","block");
	}
}


function doErrorLogging(msg,url,ln) {
	
	// console.log("Error in script: "+msg+" | url: "+url+" ln: "+ln);
	
	var ua = navigator.userAgent.toLowerCase();
    if (!window.ActiveXObject)
	 errorAjax = new XMLHttpRequest();
    else if (ua.indexOf('msie 5') == -1)
	 errorAjax = new ActiveXObject("Msxml2.XMLHTTP");
    else
	 errorAjax = new ActiveXObject("Microsoft.XMLHTTP");
	 
	msg += " | BrowserVersion: "+ua ;
	msg += " | url : "+url+" | line: "+ln;
	
	
	errorAjax.open("GET", "/lib/ajax/ajaxCall.php?mod=jserror&errorMsg=" + escape(msg), false); 
	errorAjax.send("");
}


function applySizeFilterToUrl(id) {
	
	// sizeFilter-{TYPEID}-{FILTERID}
	var idx = id.split("-") ;

	var className = idx[0] ;
	var typeId = idx[1] ;
	var filterId = idx[2] ;
	var urlItem = className + "-" + typeId ;
		
	if (filterId == 0) {
		filterId = -1 ;
	}
	var inu = false ;
	var urlvars = getUrlVars() ;
	
	var urlString = "/?" ; 
	for (i in urlvars) {
		if (i == urlItem) {
			urlString += i + "=" + filterId;
			inu = true ;
		} else {
			urlString += i + "=" + urlvars[i];
		}
		urlString += "&" ;
	}
	if (inu == false) {
		urlString += urlItem + "=" + filterId;
	}

	window.location = urlString;
	
}


/* deprecated */
function removeProductListSizeFilter(jq){
	var id = jq.attr("id");
	urlvars = getUrlVars() ;
	var str = id.split("-") ;
	urlvars[str[0]] = "-1" ;
	var urlString = "/?" ; 
	for (i in urlvars) {
		
		urlString += i + "=" + urlvars[i];
		urlString += "&" ;
	}
	
	window.location = urlString;
}

function updateProductPage(selObject) {
	var oid = selObject.options[selObject.selectedIndex].value;
	document.location.href="/?mod=object&oid="+oid;
}



function validateCheckoutForm() {
	 /* jQuery("input:name=payway"); */
	 /* Check PBB form fields */
	 //alert("payway: "+jQuery('.paymentMethodSelection').val());
	 var payway = jQuery('input[name=payway]:checked', '#checkout').val() ;	 
	 
	 if (payway == "DibsPayByBill") {
		
		var valid = true;
		var ssn = jQuery("#pbb-ssnumberInput").val();
		var zip = jQuery("#pbb-zipcodeInput").val(); 			
		
		if (ssn == "") {			
			valid = false;	
		}
		
		if (zip == "") {
			valid = false ;
		}
		
		if (valid == false) {
			// alert("Du må fylle ut alle begge feltene for personnummer og postnummer");
			jQuery("#pbbFailResponse").focus();
			jQuery("#pbbFailResponse").show('fast');
			return false ;
		}
	 }
	 return true ;
	 /*return true ;*/
}


function addProductIdToCart(pid,q){
	var cmd = {mod:"cart",action:"add",productId:pid,quantity:q} ;
	var returnData = null;
	jQuery.ajax({
		data:cmd,
		success:function(data) {
			returnData = data ;
		},
		error: function() {
			returnData = {error:1,errorMsg:"Applikasjonen klarte ikke kommunisere med tjener. Prøv pånytt."};
		},
		complete: function(){
			updateCart(returnData);
		}
	});		
}

function addItemToCart(oid, quantity) {
	
	jQuery('.cartActionResponse').hide(1);
	
	var cmd = {mod:"cart",action:"add",oid:oid,quantity:quantity} ;
	var returnData = null;
	jQuery.ajax({
		data:cmd,
		success:function(data) {
			returnData = data ;
		},
		error: function() {
			returnData = {error:1,errorMsg:"Applikasjonen klarte ikke kommunisere med tjener. Prøv pånytt."};
		},
		complete: function(){
			updateCart(returnData);
		}
	});
	
}

function updateCart(data) {
	if (data == null) {
		jQuery(".cartActionFailureResponse").show(1);
	} else if (data.error == 1) {		
		jQuery(".cartActionFailureResponseMessage").html(data.errorMsg);
		jQuery(".cartActionFailureResponse").show(1);
	} else {
		jQuery(".cartActionFailureResponseMessage").html("") ;
		jQuery(".cartItemCount").html(data.cartItemCount);
		jQuery(".cartTotal").html(data.cartTotal) ;
		/* update cart items */
	
		jQuery(".cartActionSuccessResponse").show(1);
	}	
}


function updatePaymentForm(jq) {
	
	var urlstring = "/?mod=checkout&action=bekreftelse&payway="+jq.val();
	
	document.location.href=urlstring;
}

function injectIframeDialog(jq) {

	showOverlay();
	jQuery("#overlay").prepend('<div title="'+jq.attr("title")+'" id="jqIframeDialog"><iframe src="'+jq.attr("href")+'" width="100%" height="250"></iframe></div>');
	jQuery("#jqIframeDialog").dialog({
		width: "500px",
		close:function(){
			hideOverlay();
			jQuery("#jqIframeDialog").remove();
		}
	});

	
}

function changePaymentMethod(jq) {
	
	jQuery(".paymentSubDialog").hide(0);
	
	id = jq.attr("id");
	var d = id.split("-");
	var payway = d[1];
	// alert("Dialog Name:"+payway+"-SubDialogForm");	
	jQuery("#"+payway+'-SubDialogForm').show("fast");
}


function updateProductListing(jq) {
	// var url = document.location.href ;
	var urlvars = getUrlVars();	
	urlvars[jq.attr("name")] = jq.val();
	
	jQuery('.productListOptionSelect').each(function(){		
		var varName = jQuery(this).attr("name");
		if (jq.attr("name") != varName) {
			var varValue = jQuery(this).val();		
			urlvars[varName] = varValue ; // setting / overwriting.
		}
		
	}) ;	
	
	var urlstring = "/?";
	var i = 0 ;
	for ( var key in urlvars ) {

			var value = urlvars[key] ;
			var last = value.substr(value.length -1,1);
			if (last == "#") value = value.substr(0,value.length-1);		
			if (i > 0) urlstring += "&";
			urlstring += key+"="+value ;
			i++ ;			

	}
	
	document.location.href=urlstring;
	
}

function getUrlVarsFromString(str) {
	
	var vars = [], hash;
	var keyval ;
    var hashes = str.slice(str.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');		
        // vars.push(hash[0]); // if you want the index to be int..		
        vars[hash[0]] = hash[1];
    }	
   return vars;	
}


function getUrlVars()
{	
	return getUrlVarsFromString(window.location.href);
    /*
	var vars = [], hash;
	var keyval ;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');		
        // vars.push(hash[0]); // if you want the index to be int..		
        vars[hash[0]] = hash[1];
    }	
   return vars;
   */
}


function showErrorDialog(title, msg) {
	// Should prepend a dialog and show error message
}

function postUserForm(jq) {
						
		var formData = {} ;
		var mod = "userForm" ;
		var action = jq.attr("id");
		
		jQuery.data(formData,"action",action);
		jQuery.data(formData,"mod",mod);
		
		jQuery('.userFormSubmitButton').hide() ;
		jQuery('.userFormSubmitLoader').show() ;
		
		try {
			
			jQuery.data(formData,'browserVersion',navigator.userAgent);														
																	
			jQuery('input',jq).each(function(){
				
				var name = jQuery(this).attr("name");
				var value = jQuery(this).attr("value");
				
				if (jQuery(this).hasClass('pageFormNumber') && isNaN(value)){
					jQuery(this).focus().addClass('pageFormErrorInput');
					throw "Feltet må være et tall";
				}
				
				// $(this).is(':checked')
				if (jQuery(this).attr("type") == "radio" && jQuery(this).is(':checked')){
					
					jQuery.data(formData,name,value);
					
				} else if (jQuery(this).attr("type") != "radio") {
										
					if (name != undefined && value != undefined) {			
						jQuery.data(formData,name,value);
					}
				
				}
				
			});		
			
			jQuery('textarea',jq).each(function(){
				var name = jQuery(this).attr("name");
				var value = jQuery(this).val();			
				if (name != undefined && value != undefined) {			
					jQuery.data(formData,name,value);
				} 
			});
			
			/*														
			jQuery('.'+action+'FormInput').each(function(){ 																
				
				var name = jQuery(this).attr("name");
				var value = jQuery(this).attr("value");
				if (name != undefined && value != undefined) {			
					jQuery.data(formData,name,value);
				}
			
			}) ;
			*/
			
			var responseData ;
			
			jQuery.ajax({
				dataType:"json",
				url:"/lib/ajax/ajaxCall.php",
				data: jQuery.data(formData),
				success:function(data, textStatus, XMLHttpRequest){				
					responseData = data ;
				},
				error:function(XMLHttp,txt,error){		
					responseData = {'error':1,'errorMsg':error} ;									
				},
				complete:function(){
					jQuery(".userFormSubmitLoader").hide();
					jQuery(".userFormSubmitButton").show();
					showUserFormResponse(action,responseData) ;
				}
		
			});
		} catch(ex) {
			jQuery(".userFormSubmitLoader").hide();
			jQuery(".userFormSubmitButton").show();
			responseData = {'error':1,'errorMsg':ex} ;	
			showUserFormResponse(action,responseData) ;
		}

}

function showUserFormResponse(formid, respData) {
	
	jQuery('.userFormResponse').css("display","none");
	
	if (respData == null || respData == undefined || respData.error == 1) {
		
		// jQuery("#"+formid+"FormResponseFail").show('fast');
		jQuery("#"+formid+" .userFormResponseFail").show('fast');
		
	} else {
		
		jQuery("#"+formid+" .userFormResponseSuccess").show('fast');		
		
		if (respData.clearform == 1) {
			jQuery('#'+formid+' input[type=text]').each(function(){ 
				jQuery(this).val("");
			});
			
			jQuery('#'+formid+' textarea').each(function(){ 
				jQuery(this).val("");
			});
		}
		
		if (respData.doParse == 1) {
			
			var html = jQuery("#"+formid+" .userFormResponseSuccess").html(parseNameValueArray(respData.parseValues,jQuery("#"+formid+" .userFormResponseSuccess").html()));						
			
		}
		
	}
	
}

function parseNameValueArray(nameValues, html){	
	for (i in nameValues) {
		pattern = "\\["+i+"\\]" ;
		var regExp = new RegExp(pattern,"gi");		
		html = html.replace(regExp,nameValues[i]);
	}		
	return html ;
}


function doGlobalPreloading() {
	jQuery(".contentPreLoader").each(function() {
		//alert("PRELOADING: "+jQuery(this).attr("title"));		
		parseCommand(jQuery(this)),jQuery(this);
	})
}



function replaceContent(jq,data) {
	//alert("Replacing "+jq.html()+" with "+data);
	jq.replaceWith(data);
}

function preLoadData(cmd,jq) {
	
	var loadedData  ;
	
	jQuery.ajax({
		data:cmd,
		dataType:"html",
		success: function(data, textStatus, XMLHttpRequest)  {			
			loadedData = data ;		
		},
		error:function(XMLHttpRequest, textStatus, errorThrown){		
			return false ; /* MÅ LAGE ERROR HANDLING HER!!! */
		},
		complete:function() {
			//alert(loadedData);
			replaceContent(jq,loadedData) ;	
		}
	});
		
}

function parseCommand(jq) {
	
	var id = jq.attr("title");
	var s = id.split("|");
	var el = s.length;
	
	var cmd = {};
	
	for (i = 0 ; i <el ; i++) {
		var req = s[i].split("=");
		var name = req[0] 
		var value = req[1];
		jQuery.data(cmd,name,value);
	}
	
	preLoadData(jQuery.data(cmd),jq) ;
	
}



function validateForm(){
	
	var validated = true ;
	var errors ;
	
	jQuery(".pageFormErrorMessage").each(function(){
		jQuery(this).css("display","none");
	});
	
	jQuery('.pageFormRequired').each(function() {
		//console.log(jQuery(this).attr("name")+": "+jQuery(this).val().trim());		
		var altval = jQuery(this).attr("alt");
		
		if (altval != "") {
			
			if (altval == jQuery.trim(jQuery(this).val())) {
				jQuery(this).addClass("profileFormRequiredIncomplete");	
				validated = false ;			
			} else {
				jQuery(this).removeClass("profileFormRequiredIncomplete");	
			}
			
		} else {				
			if (jQuery.trim(jQuery(this).val()) == "") {
										
					jQuery(this).addClass("profileFormRequiredIncomplete");	
					validated = false ;						
				
			} else {
				jQuery(this).removeClass("profileFormRequiredIncomplete");	
			}
		}
	});
	
	jQuery('.pageFormInteger').each(function(){				
		var fieldVal = jQuery(this).val();					
		var intVal = parseInt(fieldVal);		
		if (isNaN(intVal)) {			
			jQuery(this).addClass('pageFormNotANumber');
			validated = false;			
		} else {
			
			if (jQuery(this).hasClass('pageFormIntegerGreaterThanZero')) {
				if (intVal <= 0) {
					jQuery(this).addClass("pageFormErrorIntegerNotZero");
					validated = false;
				}
			} else {			
				jQuery(this).removeClass('pageFormErrorNotANumber');
			}
		}						
	});
	
	
	if (!validated) {
		jQuery("#MISSINGFIELDS").css("display","block");
	}
	
	return validated;
	

}


function validateProfileForm(){
	
	// console.log("validating form");	
	var validated = true ;
	
	try {
		var action = jQuery("#profileFormAction").val();
		var customerType = jQuery("input[@name='customerType']:checked").val();
	} catch (ex) {}
	
	var errors ;
	
	jQuery(".pageFormErrorMessage").each(function(){
		jQuery(this).css("display","none");
	});

	jQuery('.pageFormRequired').each(function() {
		//console.log(jQuery(this).attr("name")+": "+jQuery(this).val().trim());
		if (jQuery.trim(jQuery(this).val()) == "") {
			jQuery(this).addClass("profileFormRequiredIncomplete");	
			validated = false ;
			
		} else {
			jQuery(this).removeClass("profileFormRequiredIncomplete");	
		}
	});
	
	if (customerType == "B") {
		jQuery(".pageFormRequiredBusiness").each(function(){
			/* -- */
			var businessvalue = jQuery(this).val()
			if (jQuery.trim(businessvalue) == "") {
				jQuery(this).addClass("profileFormRequiredIncomplete");	
				validated = false ;
			} else {
				jQuery(this).removeClass("profileFormRequiredIncomplete");	
			}
			
		});
	}
	if (!validated) {
		jQuery("#MISSINGFIELDS").css("display","block");
	}
	
	var password1 = jQuery("#profileFormPassword1") ;
	var password2 = jQuery("#profileFormPassword2") ;	
	
	if (password1.length > 0 && password2.length > 0) {
		
		var passwordValue1 = jQuery.trim(password1.val());
		var passwordValue2 = jQuery.trim(password2.val());
		
		if (validated && action == "insert") {
			
			// console.log(password1+" - "+password2);			
			if (passwordValue1 != passwordValue2) {
				validated = false ;
				password1.addClass("profileFormRequiredIncomplete");
				password2.addClass("profileFormRequiredIncomplete");
				jQuery("#PASSWORDMISMATCH").css("display","block");
			}
			
		} else {
			
			if (passwordValue1 != "" || passwordValue2 != "") {
				if (passwordValue1 != passwordValue2) {
					validated = false ;
					password1.addClass("profileFormRequiredIncomplete");
					password2.addClass("profileFormRequiredIncomplete");
					jQuery("#PASSWORDMISMATCH").css("display","block");
				}
			}	
			
		}
	}
	// console.log("Validated: "+validated) ;
	return validated;
	
}

function showAdressTab(jqItem) {
	var id = jqItem.attr("id").split("-")[1];
	jQuery(".adressTabButton").each(function(){
		jQuery(this).removeClass(adressTabButtonClass) ;
	});	
	
	jqItem.addClass(adressTabButtonClass);
	
	/* Now for the content */
	jQuery(".adressTabSelected").each(function(){
		jQuery(this).removeClass(adressTabClass) ;
	});
	
	jQuery("#profileFormAdress-"+id).addClass(adressTabClass);
	
}

function showDialog(name) {
	/*jQuery("#overlay").css("display","block");	*/
	showOverlay();
	jQuery("#"+name+"Dialog").dialog({close:function(){
				jQuery("#"+name+"Dialog").css("display","none");
				hideOverlay();
			}
	});
}


function setOverlayLoaderText(txt) {
	jQuery("#overlayLoaderText").html(txt);
}

function showOverlayLoader() {	
	if (jQuery("#overlayLoader").length == 0) {
		jQuery("#overlay").prepend("<div id=\"overlayLoader\"><div id=\"overlayLoaderInner\"><div id=\"overlayLoaderImage\"></div><div id=\"overlayLoaderText\"></div></div></div>");
	}		
	jQuery("#overlayLoader").css("display","block");
}

function hideOverlayLoader() {
	jQuery("#overlayLoader").css("display","none");
}

function showLoader(appendDivName) {
// 	jQuery("#loaderBox")
	if (jQuery("#loaderBox").length == 0) jQuery("#"+appendDivName).append('<div id="loaderBox"></div>') ;
	jQuery("#loaderBox").css("display","block") ;
}

function hideLoader() {
	jQuery("#loaderBox").css("display","none") ;
}

function hideOverlay() {
	/*jQuery("#overlay").css("display","none");*/
	jQuery("#overlay").hide("fast");
}

function showOverlay() {
	if (!overlayExists()) {
		injectOverlay();
	} 
	jQuery("#overlay").css("height",jQuery(document).height()+"px");
	jQuery("#overlay").show(0);		
}

function overlayExists() {
	if (jQuery("#overlay").length != 0) {
		return true ;
	} else {
		return false;
	}
}

function insertOverlay() {
	jQuery('body').prepend('<div id="overlay"></div>');
	jQuery("#overlay").click(hideOverlay());
}

function injectOverlay() {
	insertOverlay();
}

function showSubmitLoader(loaderId) {
	jQuery("#"+loaderId).css("display","none");
		if (jQuery("#submitLoader").length == 0) {
			jQuery("#"+loaderId).after('<div id="submitLoader"></div>') ;	
		}
}

function hideSubmitLoader(submitId) {
	jQuery("#submitLoader").remove();
	jQuery("#"+submitId).css("display","block");
}

function getId(jq) {
		var idx = jq.attr("id");
		var ids = idx.split("-");
		return ids[1];
}

function mysqlTimeStampToDate(timestamp) {
    //function parses mysql datetime string and returns javascript Date object
    //input has to be in this format: 2007-06-05 15:26:02
    var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
    var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
    return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}


function dateToMySqlTimestamp(date){

	var mysqldate = date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
	return mysqldate ;

}

function regiserFormHelpDialog(formId) {
	
	jQuery('#'+formId+' input[type=checkbox]').hover(function(){		
				var altText = jQuery(this).attr('alt');				
				if (altText != "") {					
					var position = jQuery(this).offset();
					var pos = jQuery(this).position();
					
					if (jQuery('.formFieldInfoDialog').length != 1) {
						injectInfoDialog();													
					}
					jQuery('#formFieldDialogContents').html(jQuery(this).attr('alt'));	
					jQuery('.formFieldInfoDialog').css('top',position.top - (jQuery(this).height() / 2 )-10) ;
					jQuery('.formFieldInfoDialog').css('left',position.left + jQuery(this).width() + 7);
					jQuery('.formFieldInfoDialog').show();
				}
	}, function(){
		jQuery('.formFieldInfoDialog').hide();
	});
	
}


function injectInfoDialog(){
	
	var html = '<div class="formFieldInfoDialog"><div class="formFieldInfoTop"><div class="formFieldInfoTopLeft formFieldInfoLeft"></div><div class="formFieldInfoTopCenter formFieldInfoCenter"></div><div class="formFieldInfoTopRight formFieldInfoRight"></div></div><div class="formFieldInfoCenterRow formFieldCenterCols"><div class="formFieldInfoCenterLeft formFieldInfoLeft formFieldCenterCols"><div class="formFieldInfoArrow"></div></div><div class="formFieldInfoCenterCenter formFieldInfoCenter formFieldCenterCols"><div class="formFieldInfoContent" id="formFieldDialogContents"></div></div><div class="formFieldInfoCenterRight formFieldInfoRight formFieldCenterCols"></div></div><div class="formFieldInfoBottom"><div class="formFieldInfoBottomLeft formFieldInfoLeft"></div><div class="formFieldInfoBottomCenter formFieldInfoCenter"></div><div class="formFieldInfoBottomRight formFieldInfoRight"></div></div></div>';
	
	jQuery('body').append(html);
	
}

	
function IntegerObject() {
		
		this.value = -1;
		this.formattedValue = -1 ;
		this.delimiter = " " ;
		this.decimalDelimiter = ',' ;
	
		this.getFormattedValue = function(value){
			
			if (value == undefined) return "0,00";
			// alert(value);
			//if (value.length == 0)return "" ;
			var amount = value+""; // Force into string.
			var delimiter = this.delimiter; // replace comma if desired	
			var a = amount.split(this.decimalDelimiter,2)
			var d = a[1];
			var decimals = true ;
			if (d == undefined) {
				decimals = false ;	
			}
			
			var i = parseInt(a[0]);
			if(isNaN(i)) { return ''; }
			var minus = '';
			if(i < 0) { minus = '-'; }
			i = Math.abs(i);
			var n = new String(i);
			var a = [];
			while(n.length > 3)
			{
				var nn = n.substr(n.length-3);
				a.unshift(nn);
				n = n.substr(0,n.length-3);
			}
			if(n.length > 0) { a.unshift(n); }
			n = a.join(delimiter);
			
			// if(d.length < 1) { amount = n; }
			// alert(" alengths: "+a.length+" a1: "+a[1]);
			if(!decimals) { amount = n; }
			else { amount = n + this.decimalDelimiter + d; }
			
			amount = minus + amount;
			return amount;
		}
		
		this.getValue = function(formattedValue) {
						
				amount = formattedValue+"" ;
				var delimiter = this.delimiter;
				var d = amount.split(this.decimalDelimiter,2);
				var digit = d[0] ; // Før komma
				var dec = d[1] ; // etter komma
				i = 0;
				var out = "" ;

				while (i < digit.length) {
					var x = digit.substr(i,1);
					i++ ;
					if (x == delimiter)continue;
					out += x ;
				}
				
				if (d.length == 1) {
					var number = out + this.decimalDelimiter + "00" ;
				} else {
					var number = out + this.decimalDelimiter + dec ;
				}
					
				//if (isNaN(number)) alert("Calculated value is not a number! Contact support") ;
				this.value = number;
				//return number ;			
			
			return this.value ;
			
		}
		
	}

/* The Equals extension 
Object.prototype.equals = function(x) {
	
	for(p in this)
	{
		if(typeof(x[p])== 'undefined' ) {return false;}
	}
	
	for(p in this)
	{
		if (this[p])
		{
			switch(typeof(this[p]))
			{
					case 'object':
							if (!this[p].equals(x[p])) { return false }; break;
					case 'function':
							if (typeof(x[p])=='undefined' || (p != 'equals' && this[p].toString() != x[p].toString())) { return false; }; break;
					default:
							if (this[p] != x[p]) { return false; }
			}
		}
		else
		{
			if (x[p])
			{
				return false;
			}
		}
	}
	
	for(p in x)
	{
		if(typeof(this[p])=='undefined') {return false;}
	}
	
	return true;
}
*/


var CountDownTimer = function CountDownTimer(dateObj,targetId) {
	
	this.dateObj = dateObj;
	this.targetId = targetId ;
	
	this.daysLeft;
	this.hoursLeft;
	this.minutesLeft ;
	this.secondsLeft ;		
	
	var self = this;
	
	this.setTimeLeft = function(){
		
		var today = new Date();

		var difference = dateObj.getTime() - today.getTime();
		var xs = difference / 1000 ;
		
		var seconds =(xs % 60) ;
		seconds = Math.round(seconds);
		xs /= 60 ;
		
		var minutes = xs % 60 ;
		minutes = Math.floor(minutes);
		xs /= 60 ;
		
		var hours = xs % 24 ;
		hours = Math.floor(hours);
		xs /= 24 ;
		
		var days = xs ;
		days = Math.floor(days);
		
		// console.log("Seconds: "+seconds+" | Minutes: "+minutes+" | Hours: "+hours+" | days: "+days+" | Time now: "+today.getHours()+" : "+today.getMinutes());
			
		if (seconds > 59){
			var leftSecs = seconds-59;		
			seconds = leftSecs ;
		}
		
		if (minutes > 59) {
			var leftminutes = minutes-59;
			minutes = leftminutes ;
		}
		
		if (hours > 23) {		
			var leftHours = hours-23 ;		
			hours = leftHours ;			
		}
		
		this.secondsLeft = seconds ;
		this.minutesLeft = minutes ;
		this.hoursLeft = hours ;
		this.daysLeft = days ;
	}
	
	this.getTimeLeftString = function(){
		
		this.setTimeLeft();
		var html = "";
		html += '<span class="counterTimeItem counterDays" id="counterDaysLeft">'+this.getDaysLeft()+'</span>' ;
		html += '<span class="counterTimeItem counterHours" id="counterHoursLeft">'+this.getHoursLeft()+'</span>' ;
		html += '<span class="counterTimeItem counterMinutes" id="counterMinutesLeft">'+this.getMinutesLeft()+'</span>' ;
		html += '<span class="counterTimeItem counterSeconds" id="counterSecondsLeft">'+this.getSecondsLeft()+'</span>' ;
		
		return html ;
		
	}
	
	this.startTimer = function() {
		
		setInterval(function(){
			
			var leDateString = self.getTimeLeftString();
			$("#"+self.getTargetId()).html(leDateString);		
		},1000);	
	}
			
	this.getDaysLeft = function(){
		return this.daysLeft; 
	}
	
	this.getHoursLeft = function(){
		return this.hoursLeft; 
	}
	
	this.getMinutesLeft = function(){
		return this.minutesLeft; 
	}
	
	this.getSecondsLeft = function(){
		return this.secondsLeft; 
	}
	
	this.getDateObj = function(){
		return this.dateObj;
	}
	
	this.getTargetId = function(){
		return this.targetId ;
	}
	
}


var ArticleTicker = function ArticleTicker(jqId){
			
	var container;
	var num_articles ;
	var articles = null;
	var tickerWidth;
	var interval = 10000 ;
	var self = this ;
	
	var currentIndex = 0 ;
	var animationId = -1 ;
	
	var pause = false ;
	
	this.start = function(){
		
		this.container = jQuery("#"+jqId);
		jQuery("#"+jqId).hover(function(){
			setPause(true);
		},function(){
			setPause(false);
		});
		
		var width = this.container.parent().css("width");
		var width = width.substr(0,width.length-2);
		//console.log("Width: "+width);
		setTickerWidth(parseInt(width));
		var length = getInterval();
		//console.log("Interval: "+length) ;
		this.animationId = setInterval(function(){
			self.animate();					 
		},length);
	}
	
	function getPause(){
		return pause; 
	}
	
	function setPause(p) {
		pause = p ;
	}
	
	function getInterval(){
		return interval ;
	}
	
	function getCurrentIndex(){		
		return currentIndex ;
	}
	
	function setCurrentIndex(i) {
		currentIndex = i ;
	}
	
	function getTickerWidth(){
		return tickerWidth; 
	}
	
	function setTickerWidth(i){
		tickerWidth = i ;
	}
	
	this.stopTicker = function(){
		clearInterval(this.animationId);
	}
	
	
	this.animate = function(){		
		if (getPause() === true) return;
		var nextIndex = getCurrentIndex() ;
		var articles = this.getArticles();
		/*var scrollToIndex = false ; */
		//console.log("Num articles: " + this.num_articles + " | Current Index: "+getCurrentIndex());
		if (nextIndex == this.num_articles -1) {
			nextIndex = 0 ;
		}
		
		var currentId = articles[currentIndex];		
		var nextid = articles[nextIndex];
		
		var width = getTickerWidth();
		// console.log("W: "+width+" | NextIndex: "+nextIndex);
		
		var moveWidth = nextIndex * width  ;
		moveWidth = moveWidth * -1 ;
		
		this.container.animate({"margin-left": moveWidth},1000 ,'linear', function(){setCurrentIndex(nextIndex+1) ;});										
		
	}
	
	this.getArticles = function(){
		if (this.articles == null) {
			var art = new Array();
			var i = 0 ;
			this.container.children().each(function(){
				art[i] = jQuery(this).attr("id");
				i++ ;
			});
			this.num_articles = i + 1 ;
			this.articles = art;
		}
		return this.articles;
	}

}
