Ext.BLANK_IMAGE_URL = 'ext-2.1/resources/images/default/s.gif';
try { console.log(''); } catch(e) { console = { log: function(s) {} }; }
var searchForm; 

var embedContent;

Ext.onReady(function() {
		
		//create blank form
		searchForm = new Ext.Mapper.SearchForm({ id : 'searchForm'});
		
		//fill form from querystring params
		
		var hide = []; //keep track of fields to hide after render
		var cd = []; //currently displaying
		var cdKeywords = [];
		var cdYears = [];
		var cdMonths = [];
		var qs = location.search;
		if (qs.length > 1) {
			qs = decodeURI(qs.substring(1)).replace(/&/g, '%26').replace(/%26val=/g, "&val=").replace(/%26q=/g, "&q=").replace(/%26phr=/g, "&phr=").replace(/%26size=/g, "&size=").replace(/%26Facet=/g, "&Facet=").replace(/%26coll=/g, "&coll=").replace(/%26P=/g, "&P=").replace(/%26sort=/g, "&sort=").replace(/%26oa=/g, "&oa=");
			qs = qs.replace(/%26start-year=/g, "&start-year=").replace(/%26start-month=/g, "&start-month=").replace(/%26start-day=/g, "&start-day=").replace(/%26start-day=/g, "&start-day=").replace(/%26end-year=/g, "&end-year=").replace(/%26end-month=/g, "&end-month=").replace(/%26end-day=/g, "&end-day=");
			Ext.get('search-clear-container').show();
		}
		
		var params = Ext.urlDecode(qs.replace(/\+/g, " ") || '');
		
		//open access checkbox
		var openAccess = Ext.getCmp('form-openaccess');
		if (params.oa && params.oa === '1') {
			openAccess.setValue(true);
			cd.push('Open Access');
		}
		else {
			hide.push(openAccess);
		}
		
		
		//search
		if (params.q) {
			//params.q = unescape(params.q);
			Ext.getCmp('form-search').setValue(params.q);
			cd.push('"' + params.q + '"');
		}
		
		var fsSubjects = Ext.getCmp('form-fs-subjects');
		var fsAuthors = Ext.getCmp('form-fs-authors');
		var fsOrgs = Ext.getCmp('form-fs-orgs');
		var fsPublications = Ext.getCmp('form-fs-publications');
		var fsCountries = Ext.getCmp('form-fs-countries');
		/* Added by Rajat*/
		var fsPublishers = Ext.getCmp('form-fs-publishers');
		
		//exact value search
		switch(typeof params.val) {
			case "string" :
			    var result= params.val.replace(params.val.substring(params.val.indexOf(":")+1), params.val.substring(params.val.indexOf(":")+1).replace(":", "%26"));
				addVal(result.split(':'));
			    break;
			case "object" :
				for (var i=0; i<params.val.length; i++) {
					addVal(params.val[i].split(':'));
				}
		}
		
		//collection search
		switch(typeof params.coll) {
			case "string" :
			    var result= params.coll.replace(params.coll.substring(params.coll.indexOf(":")+1), params.coll.substring(params.coll.indexOf(":")+1).replace(":", "%26"));
				addVal(result.split(':'));
				break;
			case "object" :
				for (var j=0; j<params.coll.length; j++) {
					addVal(params.coll[j].split(':'));
				}
		}
		
		//phrase search
		switch(typeof params.phr) {
			case "string" :
			    var result= params.phr.replace(params.phr.substring(params.phr.indexOf(":")+1), params.phr.substring(params.phr.indexOf(":")+1).replace(":", "%26"));
				addVal(result.split(':'));
				break;
			case "object" :
				for (var k=0; k<params.phr.length; k++) {
					addVal(params.phr[k].split(':'));
				}
		}

		
		function addVal(a) {
			if (a.length == 2) {
				var value = a[1].replace("%26", ":");
				switch(a[0]) {
					case "subject" : 
						fsSubjects.addComboBox(false, value);
						break;
					case "name" : 
						fsAuthors.addComboBox(false, value);
						break;
					case "orgname" : 
						fsOrgs.addComboBox(false, value);
						break;
					case "publication" : 
						fsPublications.addComboBox(false, value);
						break;
					case "country" : 
						fsCountries.addComboBox(false, value);
						break;	
					case "pubname" : 
						fsPublishers.addComboBox(false, value);
						break;
					case "keyword" :
						cdKeywords.push(value);
						break;
					case "year" :
					  cdYears.push(value);
					  break;
					 case "year-month" :
						cdMonths.push(value);
						break;
				}
			}
		}
		
		//expand or add blank fields
		if (fsSubjects.itemCounter == 0) { fsSubjects.addComboBox(); hide.push(fsSubjects); }
		if (fsAuthors.itemCounter == 0) { fsAuthors.addComboBox(); hide.push(fsAuthors); }
		if (fsOrgs.itemCounter == 0) { fsOrgs.addComboBox(); hide.push(fsOrgs); }
		if (fsPublications.itemCounter == 0) { fsPublications.addComboBox(); hide.push(fsPublications); }
		if (fsCountries.itemCounter == 0) { fsCountries.addComboBox(); hide.push(fsCountries); }
		if (fsPublishers.itemCounter == 0) { fsPublishers.addComboBox(); hide.push(fsPublishers); }
		
		//dates
		var showDates = false;
		
		if (params['start-year']) {
			try {
				var dt = new Date(String.format('{0}/{1}/{2}', params['start-year'], (params['start-month'] || '01'), (params['start-day'] || '01')));
				Ext.getCmp('form-from').setValue(dt);
				showDates = true;
				cd.push('From: ' + dt.format('m/d/Y'));
			}
			catch(e){}
		}
		if (params['end-year']) {
			try {
				var dt2 = new Date(String.format('{0}/{1}/{2}', params['end-year'], (params['end-month'] || '01'), (params['end-day'] || '01')));
				Ext.getCmp('form-to').setValue(dt2);
				showDates = true;
				cd.push('To: ' + dt2.format('m/d/Y'));
			}
			catch(ex){}
		}
		if (!showDates) { 
			hide.push(Ext.getCmp("form-fs-dates"));
		}
		
		//render form first, then hide blank fields
		searchForm.render('search-form');
		Ext.each(hide, function(o) { o.hide(); });
		
		Ext.get('form-search').addKeyListener(Ext.EventObject.ENTER, function(key, e) {
			e.preventDefault();
			Ext.getCmp('btnSearch').handler();
		});

		//build currently displaying...
		var tmp = fsSubjects.getDescription();
		if (tmp) { cd.push(tmp); }
		tmp = fsAuthors.getDescription();
		if (tmp) { cd.push(tmp); }
		tmp = fsOrgs.getDescription();
		if (tmp) { cd.push(tmp); }
		tmp = fsPublications.getDescription();
		if (tmp) { cd.push(tmp); }
		tmp = fsCountries.getDescription();
		if (tmp) { cd.push(tmp); }
		tmp = fsPublishers.getDescription();
		if (tmp) {cd.push(tmp); }
		
		if (cdKeywords.length > 0) {
			cd.push('Keywords: ' + cdKeywords.join(', '));
		}
		if (cdYears.length > 0) {
			cd.push('Years: ' + cdYears.join(', '));
		}
		if (cdMonths.length > 0) {
			cd.push('Month: ' + cdMonths.join(', '));
		}
		
		var cdtext = cd.join(' + ');
		if (cdtext.length == 0) { cdtext = 'All articles'; }
		
		Ext.fly('currently-displaying').update(cdtext);

		var center;
		var resizeMap = new Ext.Resizable("map-resize", {
			wrap: false,
			handles: 's',
			width : 678,
			maxWidth: 678,
			minHeight: 6,
			maxHeight: 500,
			pinned: true
		});
		
		//save center of map before resize
		resizeMap.on('beforeresize', function() {
			if (map) { center = map.getCenter(); }
		});
		
		//redraw map on resize
		resizeMap.on('resize', function(o, w, h, e) {
			if (map) {
				map.checkResize();
				map.setCenter(center);
				Clusterer.Display(clusterer);
			}
			document.cookie = "mapheight="+h;
		});
		
		
		//resize map to cookie value
		if (document.cookie.indexOf("mapheight") != -1) {
			var mapheight = /mapheight=([0-9]+)/.exec(document.cookie)[1];
			if (mapheight) {
				resizeMap.resizeTo(resizeMap.width, mapheight);
			}
		}
		
				
	//highlight correct tab
		var tabs = document.getElementById("result-tabs").getElementsByTagName("li");
		switch (params.Facet) {
			case "name" :
			 tabs[1].className = 'active';
			 break;
			case "orgname" :
			 tabs[2].className = 'active';
			 break;
			case "publication" :
			case "journal" :
			case "book" :
			 tabs[3].className = 'active';
			 break;
			default :
			 tabs[0].className = 'active';
			 break;	
		}
		
		//highlight correct Subtabs
		if(document.getElementById("facet-items") != null)
		{
			var subtabs = document.getElementById("facet-items").getElementsByTagName("li");
			switch (params.Facet) {
				case "publication" :
				 subtabs[0].className = 'active';
				 break;
				case "journal" :
				 subtabs[1].className = 'active';
				 break;
				case "book" :
				 subtabs[2].className = 'active';
				 break;
				default :
				 subtabs[0].className = 'active';
				 break;	
			}
		}
				
		
		//load map
		GMapEventHandler.load(location.search);
		
		
		//embed popup
		embedContent = '<p>Paste the HTML below to embed this map on your own web site</p><p><input type="text" onclick="this.select()" value="';
		embedContent += '<div style=\'width:400px\'><p>' + Ext.fly('currently-displaying').dom.innerHTML.replace(/"/g, '&quot;') + '</p>';
		embedContent += '<iframe width=\'100%\' height=\'350\' frameborder=\'0\' scrolling=\'no\' marginheight=\'0\' marginwidth=\'0\' src=\'http://www.authormapper.com/embed.html' + location.search + '\'></iframe><p>Powered by <a href=\'http://www.authormapper.com\'>AuthorMapper.com</a></p></div>';
		embedContent += '"></p>';
		
	
		//scroll timeline to end for no good reason
		var timeline = Ext.get("year-facet-container");
		if (timeline) { timeline.scroll("l", 9999, false); }
		
		var key = Ext.get("map-key");
		key.on({
			'mouseover' : {	fn : function() { Ext.get('map-keyinfo').show(); } },
			'mouseout' : {	fn : function() { Ext.get('map-keyinfo').hide(); } }
		});
		
});


function toggleResultSummary(position, link) {
	var div1 = Ext.get('result-summary' + position);
	if (!div1.hasClass('result-summary-height')) {
		div1.addClass('result-summary-height');
		link.innerHTML = 'more &#x2026;';
	}
	else {
		div1.removeClass('result-summary-height');
		link.innerHTML = 'less &#x2026;';
	}
	link.blur();
	return false;
}

function clearSearch(a) {
  Ext.fly('search-form').update('');
	searchForm = new Ext.Mapper.SearchForm({ id : 'searchForm' });
	
	var hide = [];
	var fsSubjects = Ext.getCmp('form-fs-subjects');
	var fsAuthors = Ext.getCmp('form-fs-authors');
	var fsOrgs = Ext.getCmp('form-fs-orgs');
	var fsPublications = Ext.getCmp('form-fs-publications');
	var fsCountries = Ext.getCmp('form-fs-countries');
	var fsPublishers = Ext.getCmp('form-fs-publishers');
		
	fsSubjects.addComboBox(); hide.push(fsSubjects); 
	fsAuthors.addComboBox(); hide.push(fsAuthors); 
	fsOrgs.addComboBox(); hide.push(fsOrgs); 
	fsPublications.addComboBox(); hide.push(fsPublications); 
	fsCountries.addComboBox(); hide.push(fsCountries); 
	fsPublishers.addComboBox(); hide.push(fsPublishers);
	hide.push(Ext.getCmp("form-fs-dates"));
	
	searchForm.render('search-form');
	
	Ext.each(hide, function(o) { o.hide(); });
	Ext.fly(a).hide();
	
	var enterSearch = new Ext.KeyMap("form-search", {
			key: 13,
			fn: function() {
				Ext.getCmp('btnSearch').handler();
			}
	});
	return false;
}

function trackLink(action, args) {
	try {
		var s = (arguments.length === 2 && args.toString() !== 'undefined')? action + '/' + args : action;
		_gat._anonymizeIp();
		pageTracker._trackPageview(s);
	}
	catch(e){}
	return true;
}

function showEmbed(obj) {
	if (!Ext.getCmp('embed-win')) {
		var win = new Ext.Window({
			id: 'embed-win',
			maximizable : false,
			draggable: false,
			resizable: false,
			title : 'Embed this map',	
			width : 250,
			height : 90,
			autoScroll : false,
			closable : true,
			closeAction : 'close',
			modal : false,
			plain : true,
			constrain : true,
			html : embedContent
		});
		win.render(document.body);
		win.alignTo(obj, 'br', [-250,0]);
		win.show(obj);
	}
	return false;
}

function showImages(pos, link) {
	Ext.get('springerimages-' + pos).removeClass('springerimages');
	link.style.display = 'none';
	return false;
}

