/********************************************
 *	INFO:
 *		File: suggestjs
 *		Version: 1.0.0.0
 *******************************************
 *	TODO:
 *******************************************
 *	CHANGES:
 *		-
 *******************************************
 *	COPYRIGHTS:
 *		Vladimir Prudnikov (Email:  developer aatt prudnikov ddoott com ) 
 *******************************************/ 
var ws=window.ws||{};

ws.browser=window.ws.browser||{};
ws.browser={
	is_opera:(typeof window.opera!='undefined'),
	is_ie:window.ActiveXObject?true:false,	// preventing opera to be identified as ie
	is_mozilla:(typeof document.implementation!='undefined')&&(typeof document.implementation.createDocument!='undefined')&&(typeof HTMLDocument!='undefined'),
	is_safari:(navigator.userAgent.toLowerCase().indexOf("Browser.isSafari")!=-1),
	browser_name:function(){switch(true){case this.is_opera:return "opera";case this.is_ie:return "ie";case this.is_mozilla:return "mozilla";case this.is_safari:return "safari";}}
};

ws.suggest=window.ws.suggest||{};
ws.suggest={

	_target_element_id:'suggestion_target',
	
	
	_targetElement:{},  
	
	
	
	_maxDropDownItems:20,
	
	_apiRoot:"",
	_abort_last_request: false, 
	_connectionObj:{}, 
	_suggestionItems:[],
	_sgdd_id:'suggest_dropdown',
	
	
	append_target_element:function(el) {
		if (el==null) {
			el = this._target_element_id;
		}

		if (document.getElementById(el)) {
			this._targetElement=document.getElementById(el);
		}
	},
	
	getTarget:function(){
		return document.getElementById(this._target_element_id);
	},

	init:function(){                                                              
		ws.suggest.append_target_element();

		ws.suggest._targetElement.onblur=function() {
			var timerID=setTimeout("ws.suggest.clearSuggestion();", 600);
		}

		ws.suggest._targetElement.onfocus=function() {
			if(ws.suggest._targetElement.value!=''){
				ws.suggest.updateWordList();
			}
		}

		ws.suggest._targetElement.onkeyup=function(e) {
			e=((ws.browser.is_ie)?window.event:e);
			t=((ws.browser.is_ie)?window.event.srcElement:e.target);

			if (e) {
				var k=e.keyCode?e.keyCode:e.which;                  
				switch (k) {
					case 27://esc
						ws.suggest.clearSuggestion();
						break;
					case 38://up
						break;
					case 40://down
						break;
					case 13://enter
						break;
					default:        
						if (ws.suggest._targetElement.value!='') {
							ws.suggest.updateWordList();	
						} else {
							ws.suggest.clearSuggestion();
						}
						break;
				}
			}
		}
	},

	updateWordList:function() {

		var cb={
			success : function(o){    

				window.eval(o.responseText);

				for(i=0; i<ws.suggest._suggestionItems.length; i++) {
					ws.suggest._suggestionItems[i].active=1;
				}

				ws.suggest._suggestionItems=suggest_items;

				if(ws.suggest._suggestionItems.length>0) {
					ws.suggest.buildSuggestion();
				} else {
					ws.suggest.clearSuggestion();
				}
			},
			failure : function(o) {
				alert(o.statusText);
			}
		}

		this._maxDropDownItems = parseInt((window.document.body.clientHeight - 169 + window.document.body.scrollTop) / 115);

		url = this._apiRoot+"&keyword="+this._targetElement.value+"&limit="+this._maxDropDownItems+"&sectionsId="+ws.suggest.getSectionsId()+"&brandsId="+ws.suggest.getBrandsId()+"&kindsId="+ws.suggest.getKindsId()+"&mode="+ws.suggest.getMode();

		this.connectionObj=ws.connect.asyncRequest('GET', url, cb);
	},

	buildSuggestion:function() {
		t=ws.suggest._targetElement;

		var divObj = document.createElement('div');

		divObj.id=ws.suggest._sgdd_id;

		var result='';

		for(i=0; i<ws.suggest._suggestionItems.length; i++) {

			if (ws.suggest._suggestionItems[i].alias == 'shop') {
				if (ws.suggest._suggestionItems[i].actualPrice > 0 &&
					ws.suggest._suggestionItems[i].actualPrice != '0.00') {
						price = '<div class="action">Aktionspreis:<br />' + ws.suggest._suggestionItems[i].actualPriceFormat + '</div>';
				} else {
					price = '<br>' + ws.suggest._suggestionItems[i].priceFormat;
				}
				price += '<div class="description">(zzgl. MwSt + Versand)</div>';
			} else {
				if (ws.suggest._suggestionItems[i].price > 0) {
					price = ws.suggest._suggestionItems[i].priceFormat + '/' + ws.suggest._suggestionItems[i].termsTitle
				} else {
					price = 'Preis auf Anfrage';
				}
			}

			image = (ws.suggest._suggestionItems[i].thumbnail != '')
				? '<a href="/' + ws.suggest._suggestionItems[i].languageCode + '/' + ws.suggest._suggestionItems[i].alias + '/' + ws.suggest._suggestionItems[i].sectionsId + '/' + ws.suggest._suggestionItems[i].code + '.html"><img src="/files/Products/' + ws.suggest._suggestionItems[i].thumbnail + '" alt="' + ws.suggest._suggestionItems[i].title + '" class="productThumbnail"></a>'
				: '';

			result = result +
'<table width="230" cellpadding="0" cellspacing="0">' +
'<tr>'+
	'<td class="title">' + ws.suggest._suggestionItems[i].brandsTitle + ' ' + ws.suggest._suggestionItems[i].title + '</td>' +
'</tr>' + 
'<tr>' + 
	'<td class="product">' + 
		image + 
		'<div style="padding-top: 5px;">' + ws.suggest._suggestionItems[i].topText + '</div>' + 
		'<table align="right">' + 
		'<tr>' + 
			'<td class="price">' + price +	'</td>' + 
		'</tr>' + 
		'</table>' + 
	'</td>' + 
'</tr>' + 
'<tr>' + 
	'<td class="link"><a href="/' + ws.suggest._suggestionItems[i].languageCode + '/' + ws.suggest._suggestionItems[i].alias + '/' + ws.suggest._suggestionItems[i].sectionsId + '/' + ws.suggest._suggestionItems[i].code + '.html">mehr</a></td>' +
'</tr>' +
'<tr>' +
	'<td height="2" bgcolor="#FFFFFF"><img src="/images/pixel.gif" width="1" height="1"></td>'
'</tr>'
'</table>';
		}

		divObj.innerHTML = '<div id="suggest">' + result + '</div>';

		divObj.style.display = 'block';

		with (divObj.style) {
			zIndex = '50';
			position = 'absolute';
			backgroundColor = '#EFEFEF';
			border = '1px solid #000000';
			left = (this.findPosX(t))+'px';
			top = ((this.findPosY(t))+20)+'px';
		}

		if(document.getElementById(ws.suggest._sgdd_id)) {
			document.body.removeChild(document.getElementById(ws.suggest._sgdd_id));
		}

		document.body.appendChild(divObj); 
	},


	clearSuggestion:function() {
		if(document.getElementById(ws.suggest._sgdd_id)) {
			document.body.removeChild(document.getElementById(ws.suggest._sgdd_id));
		}
		ws.suggest._suggestionItems=[];
	},

	getSectionsId:function() {
		return parseInt(document.getElementById('sectionsId').value);
       },

    getBrandsId:function() {
		return parseInt(document.getElementById('brandsId').value);
    },

    getKindsId:function() {
		return (document.getElementById('kindsId').checked) ? document.getElementById('kindsId').value : 0;
    },

    getMode:function() {
		return (document.getElementById('mode').checked) ? 1 : 0;
    },

	sugg_over:function(td){
		td.className='suggest_active';
	},

	sugg_out:function(td){
		td.className='suggest';
	},

	findPosX:function(obj){
		var curleft=0;
		if (obj.offsetParent) {
			while(obj.offsetParent){
				curleft+=obj.offsetLeft;
				obj=obj.offsetParent;
			}
		} else if (obj.x) {
			curleft+=obj.x;
		}
		return curleft;
	},
		
	findPosY:function(obj){
		var curtop=0;
		if (obj.offsetParent) {
			while(obj.offsetParent) {
				curtop+=obj.offsetTop;
				obj=obj.offsetParent;
			}
		} else if(obj.y) {
			curtop+=obj.y;
		}
		return curtop;
	}
};


