﻿/***************************************************************************************************
 * CITScripts.js
 * ~~~~~~~~~~~~~
 *
 *	Created:	09.04.2008 by Sven E. Wilhelmsen, ColumbusIT.
 *	Purpose:	Implementation of various utility functions.
 *
 */
/*******************/
/* BSE STUFF*/
window.addEvent('domready', function() {
    loadAddClick();
    //$('searchinput').focus();
});	
function loadAddClick() {//controlPrefix,classN) {
    var bElements = $$('input.buybutton');

	bElements.each(function(buttonEl) {
		$(buttonEl).addEvent('click', function(e) {
	    	e = new Event(e).stop();
	    	var itemId = buttonEl.id.split("_")[1];
	    	ajaxitemaction('/Enterprise%20Portal/CIT_WebItemActionsAJAXWeblet.aspx?type=additemtobasket&itemid='+itemId+"&qty=1","E_"+itemId);
	    });
	});
}
function showAccountMenu(e)
{
	if($('isguest').innerHTML == 'true')
		return true;
		
	if(e)
	{
		e = new Event(e);
		e.stop();
	}
	$('accountlist').className = 'accountlistshow'; //style.display = 'block';
	$('accountlistli').style.display = 'block';
}
function search()
{
	window.location = '/Enterprise%20Portal/WebProductCatalogGroup.aspx?q=' +encodeURIComponent($('searchinput').value);
	return true;
}
function searchFieldKeyUp(e){
    var evt = e ? e : window.event;
    //e = new Event(e);
	//e.stop();

    if (evt.keyCode == 13){
        search();
    	return false;
    }
    return true;
}
/* >> Session timout checking */
//To avoid in ajax state redirect in axapta because of session timeout
var timeinactive;//Clearing from AX
var timeinactiveallowed;//Setting from AX
function sessioncheck(){
	if(logonurl && timeinactiveallowed){
		timeinactive = timeinactive+(1000*60*5);
		if(timeinactive>timeinactiveallowed)
			window.location = logonurl;
	}
	setTimeout('sessioncheck()',1000*60*5);//Check every 5 min.
}
//sessioncheck();
function sessionrestart(setlogonurl,settimeinactiveallowed){
	if(setlogonurl)
		logonurl = setlogonurl;
	if(settimeinactiveallowed)
		timeinactiveallowed = settimeinactiveallowed;
	timeinactive = 0;
}
/* << Session timout checking */

/* BSE END */
/*******************/

function doAdvancedSearch() {
	var url 	= new String("BSAdvancedSearchResult.aspx?");
	
	url	= searchString(url);
	$('advancedSearchResult').innerHTML = "Søker...";
	
	url = encodeURL4AX(url.toLowerCase());
	
	new AjaxAx(url, {
		method: 'get',
		update: $('advancedSearchResult')
	}).request(); 
	
}


function BSAdvancedSearchInit() {
	var s = new String();
	
	s = searchString(s);
	if(s.length > 0) {
		doAdvancedSearch();
	}
	
	montre();		
}


function searchString(url) {
	var first	= new Boolean();
	var s		= new String();
	
	first		= true;	

	for(var i = 0; i < searchFields.length; i++) {
		var s = new String(searchFields[i]);
			
		if(s.substr(5, 1) == "t") {	//	Text fields
			var ctrl = document.getElementById(s);
			if(ctrl.value != "") {
				if(!first)
					url = url + "&";	
				url = url + s + "=" + ctrl.value;
				first = false;
			}
		}
		else
		if(s.substr(5, 1) == "s") {	//	Select fields
			var ctrl = document.getElementById(s);
			if(ctrl.options.length > 0 && ctrl.options[ctrl.selectedIndex].value != "") {
				if(!first)
					url = url + "&";	
				url = url + s + "=" + ctrl.options[ctrl.selectedIndex].value;
				first = false;
			}
		}
	}	
	
	return url;
}


/***************************************************************************************************
 *	encodeURL4AX
 *	~~~~~~~~~~~~
 *
 *	Encode special (nordic) characters into the specified string, so that it can be passed to
 *	DAX and decoded back.
 *	
 *	Params:
 *		s	- string to encode
 *
 */
function encodeURL4AX(s) {
	s = cit_replace(s, "æ", "_230_");
	s = cit_replace(s, "ø", "_248_");
	s = cit_replace(s, "å", "_229_");
		
	return s;		
}

/***************************************************************************************************
 *
 * JCD - CITP - Added rest of CITP script bellow
 */

/* >> Global Variables and help methods */
function cit_replace(_string,_from,_to) {
	var x = _string;
	var y = _from;
	var z = _to;
	while (x.indexOf(y) > -1){  
		x = x.replace(y,z); 
	}
	return x;
}
 	
function redirectTo(newUrl) {
	window.location = newUrl;
}
function IsNumeric(sText) {
    var ValidChars = "0123456789.,";
    var IsNumber=true;
    var Char;
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}
function replaceHtml(el, html) {
        var oldEl = (typeof el === "string" ? document.getElementById(el) : el);
        var newEl = document.createElement(oldEl.nodeName);
        // Preserve the element's id and class (other properties are lost)
        newEl.id = oldEl.id;
        newEl.className = oldEl.className;
        //newEl.style	= oldEl.style;
        // Replace the old with the new
        newEl.innerHTML = html;
        oldEl.parentNode.replaceChild(newEl, oldEl);
        /* Since we just removed the old element from the DOM, return a reference
        to the new element, which can be used to restore variable references. */
        return newEl;
};
/* << Global Variables and help methods */

/* >> AJAX functions */

function ajaxitemaction(url,update,data,skipbasket){//BSE MODIFIED!!
	var postget = data ? 'post' : 'get';
	document.body.style.cursor = 'wait';
	$("minibasket").innerHTML  = '<img alt="" style="text-align:center;padding-top:20px" src="/images/ajax-anim.gif" />';
	$(update).innerHTML  = '<img alt="" style="text-align:center;padding-top:20px;height:14px;width:12px;" src="/images/ajax-anim.gif" />';
	
	new AjaxAx(url, {
		method: postget,
		update: $(update),
		onComplete: function() {
							if(!skipbasket)
								ajaxupdateminibasket();
							document.body.style.cursor = 'default';
						}
	}).request(data);
}
function ajaxupdateminibasket(){ //BSE MODIFIED!!
	if($('minibasket')){
		new AjaxAx('/Enterprise%20Portal/CIT_MiniBasketAJAX.aspx', {
			method: 'get',
			update: $('minibasket'),
			onComplete: function() {}
		}).request();
	}
}
/* << AJAX functions */

/* >> Mootools extensions */
var AjaxAx = Ajax.extend({
	
	onComplete: function(){		
		var returnText = this.response.text
						 	? cit_replace(this.response.text,'<link rel="stylesheet" type="text/css" href="/_layouts/ep/stylesheets/AXEP.css">','') 
						 	: '';
		if (this.options.update) $(this.options.update).empty().setHTML(returnText );
		if (this.options.evalScripts || this.options.evalResponse) this.evalScripts();
		this.fireEvent('onComplete', [returnText , this.response.xml], 20);
	}
});
/*var clearCache = false;
var AjaxAxCached = AjaxAx.extend({
	initialize: function(url, options){
		this.parent(url, options);
		this.addEvent('onSuccess', this.saveCache);
	},
	get: function(data){
		if(clearCache)
			AjaxAxCached.hash = new Hash({});
	
		if(AjaxAxCached.hash.hasKey(this.url)){
			this.response = AjaxAxCached.hash.get(this.url);
			this.onComplete();
		}
		else{
			return this.request(data);
		}
	},
	saveCache: function(responseText, responseXml){
		AjaxAxCached.hash.set(this.url, {text: responseText, xml: responseXml});
	}
});
AjaxAxCached.hash = new Hash({});

JsonAx= Json.Remote.extend({
	onComplete: function(){
		var jsonResponse = this.response.text;
		var jsonstrlenght = parseInt(jsonResponse.substring(0,10));
		jsonResponse = jsonResponse.substring(10,jsonstrlenght+10);
		this.fireEvent('onComplete', [Json.evaluate(jsonResponse , this.options.secure)]);
	}
});*/
/* << Mootools extensions */
