﻿//stats

//dynamic css

// Load dynamic jquery components
var protocol = '';
if( document.location.toString().indexOf( 'https://' ) != -1 ) {
	protocol = 'https://';
} else {
	protocol = 'http://';
}
document.write('<script type="text/javascript" src="' + protocol + 'www.kpn.com/v2/static/kpncom/js/jquery.autocomplete.js"></script>');
// javascript

// stylesheet

//* Declaration of variables **********************************/

// Get Dom specification
var W3CDOM = (document.createElement && document.getElementsByTagName);
var bIEdetected = bIEdetected;

var $j = jQuery.noConflict();

//window.onload = startevents;
$j(document).ready(startevents);
/* pageManager object ***/

// add this method to the document methods
//document.getElementsByClassName=getElementsByClassName;

//define pageManager object
pageManager = function() {
	//* local properties
	this.behavior = [];
	this.eventCache = [];

	//* local methods
	this.bindBehaviors = function(arg){
		for(var a in pM.behavior){
		bh = pM.behavior[a];
			bindUoBehavior(bh.scope,bh.nodeTags,bh.nodeClass,bh.nodeChild,bh.initBind,bh.initElms,bh.click,bh.hover,bh.out,bh.move,bh.mup,bh.kup);
		}
	};

	this.addBehavior  = function(arg){
		o = new Object();
			o.name = arg["name"];
			o.owner = arg["owner"];
			o.scope = null;
			o.nodeTags	= null;
			o.nodeClass = null;
			o.nodeChild = null;
			o.initElms = null;
			o.initBind = null;
			o.click = null;
			o.hover = null;
			o.out = null;
			o.move	= null;
			o.mup = null;
			o.kup = null;
		this.behavior.push(o);
		return o;
	};
};

/* initialize pageManager and subscribe behaviors ***/
var pM = new pageManager();

// create rounded corners on kpn-box
/*bh1 = pM.addBehavior({name:'rounded corners', owner:'KPN'});
    bh1.scope       = 'pa_content';
    bh1.nodeTags    = 'div';
    bh1.nodeClass   = 'kpn-box';
    bh1.initElms    = init_doroundedcorner;
*/    

bh2 = pM.addBehavior({name:'load footer sitemap', owner:'KPN'});
    bh2.scope       = 'pa_footer';
    bh2.nodeTags    = 'div';
    bh2.nodeClass   = 'kpn_bh_footer-sitemap';
    bh2.initElms    = init_loadfootersitemap;

bh3 = pM.addBehavior({name:'rich tooltip', owner:'KPN'});
    bh3.scope       = ['ph_content','site25content'];
    bh3.nodeTags    = 'img';
    bh3.nodeClass   = 'kpn_bh_richtooltip';
	bh3.hover		= mover_doTooltip;
	bh3.out		    = mout_doTooltip;
	
bh4 = pM.addBehavior({name:'rich jquery dialog', owner:'KPN'});
    bh4.scope       = 'pa_content';
    bh4.nodeTags    = 'a';
    bh4.nodeClass   = 'kpn_bh_richdialog';
    bh4.initElms    = open_dialog;
    
bh5 = pM.addBehavior({name:'rich jquery pagecurl', owner:'KPN'});
    bh5.scope       = 'body';
    bh5.nodeTags    = 'div';
    bh5.nodeClass   = 'kpn_bh_richpagecurl';
    bh5.initElms    = trigger_pagecurl;
    
bh6 = pM.addBehavior({name:'input to link', owner:'KPN'});
    bh6.scope       = ['pa_content','site25content'];
    bh6.nodeTags    = 'input';
    bh6.nodeClass   = 'kpn_bh_dynamicbutton';
    bh6.initElms    = doInputToLink;
    
bh7 = pM.addBehavior({name:'init flash overlay', owner:'KPN'});
    bh7.scope       = 'body';
    bh7.nodeTags    = 'div';
    bh7.nodeClass   = 'kpn_bh_flashoverlay';
    bh7.initElms    = initFlashOverlay;

// init binding of swaplist
bh8 = pM.addBehavior({name:'swaplist', owner:'KPN'});
	bh8.scope		= 'pa_content';
	bh8.nodeTags	= 'ul';
	bh8.nodeClass	= 'kpn_bh_swaplist';
	bh8.nodeChild   = 'li';
	bh8.click		= click_doSwaplist;
	
// binding of accordion
bh9 = pM.addBehavior({name:'accordion', owner:'KPN'});
    bh9.scope       = 'ph_content';
    bh9.nodeTags    = 'dl';
    bh9.nodeClass   = 'kpn_bh_accordion';
    bh9.nodeChild   = 'dt';
    bh9.initElms    = init_accordion;
	
// binding tabs
bh10 = pM.addBehavior({name:'tabs', owner:'KPN'});
    bh10.scope      = 'ph_content';
    bh10.nodeTags   = 'div';
    bh10.nodeClass  = 'kpn_bh_tabsbox';
    bh10.initElms   = init_tabsbox;

    
// init login mykpn
     bh19 = pM.addBehavior({name:'Login mijnkpn',owner:'KPN'});
     bh19.scope = 'pa_mainnav';
     bh19.nodeTags = 'a';
     bh19.nodeClass = 'kpn_bh_login';
     bh19.initElms = init_loggedin;
     
     bh22 = pM.addBehavior({name:'Autocomplete search', owner:'KPN'});
     bh22.scope = ['pa_content','site25content','ph_searchbox'];
     bh22.nodeTags = 'input';
     bh22.nodeClass = 'kpn_bh_autocompletesearch';
     bh22.initElms = doAutocompleteSearch;


/* start events ***/
function startevents(){
	styleActive = (document.styleSheets[0])?!document.styleSheets[0].disabled:false;
	// all the javascript that depend on the stylesheet

	if (styleActive){
		// bind all subscribed behaviors
		pM.bindBehaviors();
	}
};

/***************************** Helper functions **************************************/

//*** function for binding unobtrusive behavior on elements ***/
//    bindUoBehavior(scope,HTMLelement,class,<target>,<init_function>,<init_element>,onclick_function,<mouseover_function>,<mouseout_function>,<mousemove_function>,<mouseup_function>,<keyup_function>)
//    scope			: single string value or multiple parms as array [x,y,z]
//    HTMLelement	: single string value or multiple parms as array [x,y,z]
//	  target		: "null" binds events on class element, otherwise binds on defined HTMLelement's child target element.
//
//	  scope -> tag -> class -> <target (direct child)>
//    fninit -> called once when DOM search returns objects
//    elminit -> called on every element in collection returned from DOM search

function bindUoBehavior(scope,tag,cls,target,fninit,elminit,fnmcl,fnmov,fnmou,fnmmv,fnmup,fnkup){
	if (!W3CDOM) return true;
	if (scope) {
		if(!isArray(scope)){scope = scope.split()}
		// call init function
		if(fninit)fninit();
		for(t=0;t<scope.length;t++){
		    var container = document.getElementById(scope[t]);
			if(container != null){
				if(!isArray(tag)){tag = tag.split()}
				for(q=0;q<tag.length;q++){
					var elms = container.getElementsByTagName(tag[q]);
							  if(elms.length != 0){
									  for (var i = (elms.length-1); i >= 0; i--){
											if(cssjs('check',elms[i],cls)){
												if(target != null){
													var telms = elms[i].getElementsByTagName(target);
													if(telms.length != 0){
														for (var j = 0; j < telms.length; j++) {
															if(telms[j].parentNode == elms[i]){
																// target defined
																if(elminit){elminit(telms[j]);}
																if(fnmcl){telms[j].onclick     = fnmcl;EventCache.add(telms[j], "onclick",     fnmcl, true);}
																if(fnmov){telms[j].onmouseover = fnmov;EventCache.add(telms[j], "onmouseover", fnmov, true);}
																if(fnmou){telms[j].onmouseout  = fnmou;EventCache.add(telms[j], "onmouseout",  fnmou, true);}
																if(fnmmv){telms[j].onmousemove = fnmmv;EventCache.add(telms[j], "onmousemove", fnmmv, true);}
																if(fnmup){telms[j].onmouseup   = fnmup;EventCache.add(telms[j], "onmouseup",   fnmup, true);}
																if(fnkup){telms[j].onkeyup     = fnkup;EventCache.add(telms[j], "onkeyup",     fnkup, true);}
															}
														}
												    }
												}
												else{
														// no target defined
														if(elminit){elminit(elms[i]);}
														if(fnmcl){elms[i].onclick     = fnmcl;EventCache.add(elms[i], "onclick",     fnmcl, true);}
														if(fnmov){elms[i].onmouseover = fnmov;EventCache.add(elms[i], "onmouseover", fnmov, true);}
														if(fnmou){elms[i].onmouseout  = fnmou;EventCache.add(elms[i], "onmouseout",  fnmou, true);}
														if(fnmmv){elms[i].onmousemove = fnmmv;EventCache.add(elms[i], "onmousemove", fnmmv, true);}
														if(fnmup){elms[i].onmouseup   = fnmup;EventCache.add(elms[i], "onmouseup",   fnmup, true);}
														if(fnkup){elms[i].onkeyup     = fnkup;EventCache.add(elms[i], "onkeyup",     fnkup, true);}
												}
											}
									  }
							  }
					    }
				}
	        }
		return true;
	}
};

//* define event object for active browser
function event_handler(e){
	e = e || window.event;
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
};
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
};
function isFunction(a) {
    return typeof a == 'function';
};

/****************** event cache *********************/
/*
 	EventCache Version 1.0
	Copyright 2005 Mark Wubben

	Provides a way for automagically removing events from nodes and thus preventing memory leakage.
	See <http://novemberborn.net/javascript/event-cache> for more information.

	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

/*	Implement array.push for browsers which don't support it natively.
	Please remove this if it's already in other code */

if(Array.prototype.push == null){
	Array.prototype.push = function(){
		for(var i = 0; i < arguments.length; i++){
			this[this.length] = arguments[i];
		};
		return this.length;
	};
};

/*	Event Cache uses an anonymous function to create a hidden scope chain.
	This is to prevent scoping issues. */
var EventCache = function(){
	var listEvents = [];

	return {
		listEvents : listEvents,

		add : function(node, sEventName, fHandler, bCapture){
			listEvents.push(arguments);
		},


		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];

				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};

				/* From this point on we need the event names to be prefixed with 'on" */
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};

				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};

				item[0][item[1]] = null;
			};
		}
	};
}();

/****************** classname function *********************/
/* example:	cssjs('swap',document.getElementById('foo'),'bar','baz'); */
function cssjs(a,o,c1,c2) {
	switch (a){
		case 'swap':
			// if c2 is empty string check existence of c1 and remove style, if not exist add style c1
			// else just swap styles
			o.className =(!c2)?cssjs('check',o,c1)? cssjs('remove',o,c1):cssjs('add',o,c1) : (cssjs('check',o,c1))?o.className.replace(c1,c2):(cssjs('check',o,c2))?o.className.replace(c2,c1):cssjs('add',o,c1);
			return o.className;
		break;

		case 'add':
			if(!cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
			return o.className;
		break;

		case 'change':
			cssjs('remove',o,c1);
			cssjs('add',o,c2);
			return o.className;
		break;

		case 'remove':
			var rep=o.className.match(' '+c1)?' '+c1:c1;
			o.className=o.className.replace(rep,'');
			return o.className;
		break;

		case 'check':
			return new RegExp('\\b'+c1+'\\b').test(o.className);
		break;
	}
};

//function getElementsByClassName(classname, node){
//    var a = [];
//	if(!node) node = document;
//    var re = new RegExp('(^| )'+classname+'( |$jj)');
//    var els = node.getElementsByTagName("*");
//	// support for browser not supporting wildcard
//	if(els.length < 1){
//		var els = document.all;
//	}
//    for(var i=0,j=els.length; i<j; i++)
//        if(re.test(els[i].className))a.push(els[i]);
//    if(a.length>0)return a;
//	else return null;
//};

/* rounded corners kpn-box */
function init_doroundedcorner(oLink) {

    if (cssjs('check', oLink, 'noborder')) {
        return false;
    };

    oLink.content = oLink.innerHTML;

    oLink.topcorners = '<div class="kpn-box-tl"></div><div class="kpn-box-tr"></div>';
    oLink.bottomcorners = '<div class="kpn-box-bl"></div><div class="kpn-box-br"></div>';

    oLink.innerHTML = oLink.topcorners + oLink.content + oLink.bottomcorners;

};

function init_loadfootersitemap(oLink) {
//    //console.log('Test');
//
//    //oLink.innerHTML = '    Test   ';
////    document.write('<script type="text/javascript" src="/v2/static/kpncom/js/footersitemap.js"></script>');

//    var writefootersitemap = '<ul>';
//    var writefootersitemap .= '<li class="header"><a href="" xml:lang="nl" lang="nl" title="Mobiel">Mobiel</a></li>';
//    var writefootersitemap .= '<li><a href="" xml:lang="nl" lang="nl" title="Abonnementen">Abonnementen</a></li>';
//    var writefootersitemap .= '<li><a href="" xml:lang="nl" lang="nl" title="PrePaid">PrePaid</a></li>';
//    var writefootersitemap .= '<li><a href="" xml:lang="nl" lang="nl" title="SimOnly">SimOnly</a></li>';
//    var writefootersitemap .= '<li><a href="" xml:lang="nl" lang="nl" title="Mobiel Data">Mobiel Data</a></li>';
//    var writefootersitemap .= '<li><a href="" xml:lang="nl" lang="nl" title="Telefoons">Telefoons</a></li>';
//    var writefootersitemap .= '<li><a href="" xml:lang="nl" lang="nl" title="Verlengen">Verlengen</a></li>';
//    var writefootersitemap .= '</ul>';
//
//    oLink.innerHTML = writefootersitemap;
//
};

function mover_doTooltip(e){
	var posx = 0;
	var posy = 0;
	var offset = 5;
	var curtitle = this.title;
    this.title = '';

	//var brich = getElementsByClassName("infotext",this.parentNode);
	var brich = $jj('.infotext');
	if(brich != null){curtitle=brich[0].innerHTML};

   	var ttnode = document.createElement("div");
    document.body.appendChild(ttnode);

	// ielistbox shield
	if(bIEdetected){
		var tsnode = document.createElement("iframe");
		var txnode = document.createElement("div");
		ttnode.appendChild(tsnode);
		ttnode.appendChild(txnode);
		txnode.className = "tooltiptext";
		txnode.innerHTML = curtitle;
		tsnode.className = "tooltipshield";
		tsnode.src = "about:blank";
     	txnode.id = "tooltext";
		hg = curtitle.length/24;
		tsnode.height=200+(hg*20);
		ttnode.className = "tooltip_ie";
	}
	else{
		var corners = '<span class="tooltiptl"></span><span class="tooltiptr"></span><span class="tooltipbr"></span><span class="tooltipbl"></span>';

		ttnode.innerHTML = curtitle + corners;
		//ttnode.innerHTML = curtitle;
		ttnode.className = "tooltip";
	}

	ttnode.id = "tooltip";

 if (!e) var e = window.event;
	if (e.pageX || e.pageY)
	{
		posx = e.pageX + offset;
		posy = e.pageY + offset;
	}
	else if (e.clientX || e.clientY)
	{
		posx = e.clientX + document.documentElement.scrollLeft + offset;
		posy = e.clientY + document.documentElement.scrollTop + offset;
	}

	if(posx+ttnode.clientWidth > document.documentElement.clientWidth)posx=posx-ttnode.clientWidth-(2*offset);
	if(e.clientY+ttnode.clientHeight > document.documentElement.clientHeight)posy=posy-ttnode.clientHeight-(2*offset);
	ttnode.style.left = posx+"px";
	ttnode.style.top = posy+"px";

};

function mout_doTooltip(){
	ttnode = document.getElementById("tooltip");
	if(ttnode){
//		var brich = getElementsByClassName("infotext",this.parentNode);
		var brich = $j('.infotext');
		if(brich != null){this.title=""};
		if(bIEdetected){
			var titleobj = document.getElementById("tooltext");
			}
			else{
				var titleobj = ttnode;
			}
		this.title = titleobj.innerHTML;
		document.body.removeChild(ttnode);
	};
};

function open_dialog(oDialogLink) {
//    $j(oDialogLink).attr('onclick','return false;');

    var dialogElement = document.getElementById('dialog');
    var url = '';

    if (!dialogElement) {
        oDialog = document.createElement('div');
        oDialog.id = 'dialog';
        
        oDialogTl = document.createElement('div');
        oDialogTl.className = 'dialog-tl';
        
        oDialogTr = document.createElement('div');
        oDialogTr.className = 'dialog-tr';
        
        $j(oDialog).appendTo('body');
//        $j('<div id="dialog"></div>').appendTo('body');
    };

    if(!(oDialogLink == "javascript:void(0);")) {
    	var oUrl = $j(oDialogLink).attr('href');
        $j(oDialogLink).attr('href','javascript:void(0);');
        $j(oDialogLink).attr('url',oUrl);
    }
    
    $j('#dialog').dialog({
        autoOpen: false,
        width: 881,
        minHeight: 500,
        open: function() {
    		$j("select").hide();
    		$j("#ui-dialog-title-dialog").html('&nbsp;');
    		$j("#dialog").html('&nbsp;');
    		
    		if ($j(this).attr("compare") == "true") {
    			$j("#ui-dialog-title-dialog").parent().addClass('comparebanner');
    			$j("#dialog").load(""+ $j(this).attr("url"));
    			$j("#dialog").parent().css({ 'width' : "815px"});
    			$j("#dialog").parent().css({ 'overflow' : "hidden"});
    			$j("#dialog").css({ 'overflow' : "hidden"});
    		}else if ($j(this).attr("accessoires") == "true") {
    			$j("#ui-dialog-title-dialog").parent().addClass('comparebanner');
    			$j("#dialog").load(""+ $j(this).attr("url"));
    			$j("#dialog").parent().css({ 'width' : "815px"});
    			$j("#dialog").parent().css({ 'overflow' : "hidden"});
    			$j("#dialog").css({ 'overflow' : "hidden"});
    		}else if ($j(this).attr("reviews") == "true") {
    			$j("#ui-dialog-title-dialog").parent().removeClass('comparebanner');
    			$j("#ui-dialog-title-dialog").html('<div id="reviewbanner" class="dkkBackground"></div>');
	            $j("#dialog").append("<iframe id='review' width='100%' height='450px' frameborder='0'></iframe>");
	            $j("#review").attr('src', $j(this).attr("url"));
	            $j("#dialog").parent().css({ 'width' : "881px"});
    		}else{
    			$j("#ui-dialog-title-dialog").parent().removeClass('comparebanner');
	            $j(".ui-widget-overlay").bind("click", closeDialogWindowOnOverlayClick);
	            $j("#ui-dialog-title-dialog").load(""+ $j(this).attr("url") +" h1");
	            $j("#dialog").load(""+ $j(this).attr("url") + " #ph_content");
	            $j("#dialog").parent().css({ 'width' : "881px"});
    		}
            $j(".ui-widget-overlay").bind("click", closeDialogWindowOnOverlayClick);
        },
	      modal: true
    });
    
    if ($j('a').hasClass('autoOpen')){
	    $j('#dialog').dialog('open');
		};		
    $j('.kpn_bh_richdialog').click(function() {
    	url = this.getAttribute('url');
    		$j('#dialog').attr('url', url);
    		$j('#dialog').attr('reviews', this.getAttribute('reviews'));
    		$j('#dialog').attr('compare', this.getAttribute('compare'));
    		$j('#dialog').attr('accessoires', this.getAttribute('accessoires'));
			$j('#dialog').dialog('open');
    });
    
    var closeDialogWindowOnOverlayClick = function(event){
        var closeButton = $j(".ui-dialog:visible").find(".ui-dialog-titlebar-close");
        closeButton.trigger("click");
        $j(".ui-widget-overlay").unbind("click", closeDialogWindowOnOverlayClick);
    } 
};

function initFlashOverlay(){
    $j('#flashOverlay').dialog({
        autoOpen: true,
        width: 748,
        height: 500,
        dialogClass: 'flashOverlay'
    }); 
}

function trigger_pagecurl() {
    $j("#pagecurl").hover(function() {
		$j("#pagecurl img , .msg_block").stop()
			.animate({
				width: '307px', 
				height: '319px'
			}, 500); 
		} , function() {
		$j("#pagecurl img").stop() 
			.animate({
				width: '50px', 
				height: '52px'
			}, 220);
		$j(".msg_block").stop() 
			.animate({
				width: '50px', 
				height: '50px'
			}, 200);
	});
};

function doInputToLink(oButton) {
    oLink = document.createElement('a');
    oLink.onclick = oButton.onclick;
    if (oButton.parentNode.className == 'floatLeft') {
        oLink.className = 'dynamicbutton_grey';
    }
    else if (oButton.parentNode.className == 'floatRight') {
        oLink.className = 'dynamicbutton_blue';
    }
    else {
        oLink.className = 'dynamicbutton_grey';
    }
    oLink.innerHTML = '<span>'+ oButton.value +'</span>';
    
    oButton.parentNode.replaceChild(oLink,oButton);
};

//* swaplist
function click_doSwaplist(e){
    if (!e){
        var e = window.event
    };	
	var bnoLink = false;
	trg = (e.srcElement)?e.srcElement:e.target;
    
    if(trg != null && trg.href != null){ 
        bnoLink = cssjs("check",trg.parentNode.parentNode,"kpn_bh_swaplist"); 
        if(bnoLink) {
            e.cancelBubble = true;
            e.returnValue = false;
            if (e.stopPropagation){
                e.stopPropagation();
                e.preventDefault();
			}	
        }
    } 
	if(trg.parentNode.className!="swaplistbullet" && bnoLink){
//        openedNodes = getElementsByClassName("swaplistopen", document);
        openedNodes = $j('.swaplistopen');
		if(openedNodes != null){
		    for(t=0;t<openedNodes.length;t++){
			    if(this!=openedNodes[t]){
				    openedNodes[t].className = "swaplistclosed";
				}
			};
		}
		this.className = (this.className=='swaplistopen')? "swaplistclosed" : "swaplistopen";
		return false;
	}
};

// accordion
function init_accordion(e) {
    $j('.kpn_bh_accordion').accordion();
}

// tabsbox
function init_tabsbox() {
    $j('.kpn_bh_tabsbox').tabs();
    $j('.kpn_bh_tabsbox .kpn-box-tl').addClass('hidden');
}


function init_loggedin(obj) {
	if($j.readCookie('ObSSOCookie') && $j.readCookie('ObSSOCookie') != 'loggedout' && $j.readCookie('userinfo')) {
		$j(obj.parentNode).addClass("loggedin"); 
		var ca = $j.readCookie('userinfo').split('#');
		for(var i=0;i < ca.length; i++) {
			var c = ca[i];
			if(c.substring(0,9) == 'user_name') {
				var username = c.split('=');
				$j(obj).html(username[1]);
			}
		}
	}
};

function doAutocompleteSearch(oInput) {
 var url="/web/wcbservlet/kpnproxy?service=suggest";
 if($j(oInput).hasClass('search_site_prive')){
  url+="&site=Prive";
 }else if ($j(oInput).hasClass('search_site_zakelijk')){
  url+="&site=Zakelijk";
 }else if ($j(oInput).hasClass('search_site_overkpn')){
  url+="&site=Over_KPN";
 }else if ($j(oInput).hasClass('search_site_glas')){
  url+="&site=Glas";
 }else{
  url+="&site=Prive";
 }
 
 $j(oInput).autocomplete(url, {
        width: 320,
        minChars: 2,
        delay: 600,
        dataType: 'json',
        highlight: false,
        scroll: true,
        scrollHeight: 300,
        cacheLength: 0,
        submitOnReturn: true,
        selectFirst: false,
        parse: function(data) {
                var array = new Array();
                if(data.results){
                 for(var i=0;i<data.results.length;i++)
                 {
                  var waarde=$j.trim(data.results[i].name);
                  //To avoid duplicates
                  var notInArray=true;
                  $j.each(array,function( intIndex, objValue ){
                      if(objValue.value==waarde){
                       notInArray = false;
                       return;
                      }
                     }
                  );
                  if(notInArray) array[array.length] = { data: data.results[i], value: waarde, result: waarde };
                 }
                }
                return array;
        },
        formatItem: function(row) {                     
                return row.name;
        }
    });
 
};
