function formatdateMMMMDDYYYY(prefix, datum, suffix) {
var arnr = datum.substring(0,4);
var manadnr = parseInt(datum.substring(5,7));
var dagnr = parseInt(datum.substring(8,10));
if(new Date(arnr,manadnr,dagnr) <= new Date(1970,01,01))
return '';
var monthnames = new Array(" ", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var todays_Date = new Array(" ", "1st","2nd","3rd","4th","5th", "6th","7th","8th","9th","10th", "11th","12th","13th","14th","15th", "16th","17th","18th","19th","20th", "21st","22nd","23rd","24th","25th", "26th","27th","28th","29th","30th","31st");
return( prefix + monthnames[manadnr] + " " + todays_Date[dagnr] + ", " + arnr + suffix);
}
function GetFeed(timeObj) {
var timeStr;
if(timeObj.time.toString().indexOf('T') > 0)
timeStr = toUTCDate(timeObj.time);
else
timeStr = timeObj.time.toGMTString().replace(/UTC/, 'GMT');
$.ajax({
dataType: 'xml',
url: '/rss/RssService.asmx/GetFeedListIfNewer',
timeout: 60000,
data: {time: timeStr},
type: 'POST',
success: function(xml) {
if(xml.documentElement.childNodes.length == 0)
return;
//Add sticky items
$('#FeedSticky').empty();
$('FeedItem:has(Sticky:contains(true))', xml).each(function() {
var item = GetFeedLayoutItem(this);
try{
$('#FeedSticky').append(item);
}catch(err){}
});
$('#FeedSticky').trigger('altered');
//Add internal items
$('#FeedInternal').empty();
$('FeedChannel:has(Type:contains(Internal)) FeedItem:has(Sticky:contains(false))', xml).each(function() {
var item = GetFeedLayoutItem(this);
item = item.replace(/lb=710/, 'lb=550');
try{
$('#FeedInternal').append(item);
}catch(err){
//alert(err);
}
});
$('#FeedInternal').trigger('altered');
//Add external items
$('#FeedExternal').empty();
$('FeedChannel:has(Type:contains(External)) FeedItem:has(Sticky:contains(false))', xml).each(function() {
var item = GetFeedLayoutItem2(this);
item = item.replace(/lb=710/, 'lb=155').replace(/height%3D16/,'height%3D12');
try{
$('#FeedExternal').append(item);
}catch(err){
//alert(err);
}
});
$('#FeedExternal').trigger('altered');
timeObj.time = $("FeedContainer", xml).attr("ItemsAltered");
},
error: function(xml) {
//alert(xml.responseXml);
alert(xml.responseText);
}
});
}
function GetFeedLayoutItem(item) {
var klass = 'feedItem';
klass += ($(item).children('Hidden').text() == 'true') ? ' hidden' : ' visible';
klass += ($(item).children('Persistent').text() == 'true') ? ' persistent' : ' removable';
var target = '';
var fheight, fweight, ffont;
var maxTokens = 500;
if ($(item).parent().parent().find('Type').text() == 'External') {
klass += ' external';
target = ' target="extWin"';
fheight = '12';
fweight = '200';
ffont = 'Arial';
maxTokens = 200;
} else {
klass += ' internal';
fheight = '16';
fweight = '200';
ffont = 'Impact';
//fheight = 18;
//fweight = 800;
//ffont = 'Trebuchet+ms';
}
var retur = '
';
//var retur = '';
var descriptionTxt = $('Description', item).text().replace(/<[^>]+>/gi, '').replace(/&[^;]+;/gi,'');
if(descriptionTxt.length > maxTokens)
descriptionTxt = descriptionTxt.substr(0,maxTokens) + "...";
var pic = "";
if($('Copyright', item).text().length > 10) {
pic = '
';
}
retur = retur.replace(/\[id\]/gi, encryptId($('Id', item).text())).
replace(/\[icon\]/gi, $(item).parent().parent().find('Icon').text()).
replace(/\[url\]/gi, $('Url', item).text()).
replace(/\[date\]/gi, formatdateMMMMDDYYYY(' | ',$('LastUpdate', item).text().substring(0,16).replace(/T/, ' '), '')).
replace(/\[title\]/gi, $('Title', item).text()).
replace(/\[titleEscaped\]/gi, escape($('Title', item).text())).
replace(/\[description\]/gi, descriptionTxt).
replace(/\[picture\]/gi, pic).
replace(/\[class\]/gi, klass);
/**
retur = retur.replace(/\[id\]/gi, encryptId($('Id', item).text())).
replace(/\[icon\]/gi, $(item).parent().parent().find('Icon').text()).
replace(/\[url\]/gi, $('Url', item).text()).
replace(/\[date\]/gi, $('LastUpdate', item).text().substring(0,16).replace(/T/, ' ')).
replace(/\[title\]/gi, $('Title', item).text()).
replace(/\[titleEscaped\]/gi, escape($('Title', item).text())).
replace(/\[description\]/gi, $('Description', item).text().replace(/<[^>]+>/gi, '').replace(/&[^;]+;/gi,'')).
replace(/\[class\]/gi, klass);
**/
return retur;
}
function GetFeedLayoutItem2(item) {
var klass = 'feedItem';
klass += ($(item).children('Hidden').text() == 'true') ? ' hidden' : ' visible';
klass += ($(item).children('Persistent').text() == 'true') ? ' persistent' : ' removable';
var target = '';
var fheight, fweight, ffont;
var maxTokens = 500;
if ($(item).parent().parent().find('Type').text() == 'External') {
klass += ' external';
target = ' target="extWin"';
fheight = '12';
fweight = '200';
ffont = 'Arial';
maxTokens = 200;
} else {
klass += ' internal';
fheight = '16';
fweight = '200';
ffont = 'Impact';
//fheight = 18;
//fweight = 800;
//ffont = 'Trebuchet+ms';
}
var retur = '';
//var retur = '';
var descriptionTxt = $('Description', item).text().replace(/<[^>]+>/gi, '').replace(/&[^;]+;/gi,'');
if(descriptionTxt.length > maxTokens)
descriptionTxt = descriptionTxt.substr(0,maxTokens) + "...";
retur = retur.replace(/\[id\]/gi, encryptId($('Id', item).text())).
replace(/\[icon\]/gi, $(item).parent().parent().find('Icon').text()).
replace(/\[url\]/gi, $('Url', item).text()).
replace(/\[date\]/gi, formatdateMMMMDDYYYY(' | ',$('LastUpdate', item).text().substring(0,16).replace(/T/, ' '), '')).
replace(/\[title\]/gi, $('Title', item).text()).
replace(/\[titleEscaped\]/gi, escape($('Title', item).text())).
replace(/\[description\]/gi, descriptionTxt).
replace(/\[class\]/gi, klass);
/**
retur = retur.replace(/\[id\]/gi, encryptId($('Id', item).text())).
replace(/\[icon\]/gi, $(item).parent().parent().find('Icon').text()).
replace(/\[url\]/gi, $('Url', item).text()).
replace(/\[date\]/gi, $('LastUpdate', item).text().substring(0,16).replace(/T/, ' ')).
replace(/\[title\]/gi, $('Title', item).text()).
replace(/\[titleEscaped\]/gi, escape($('Title', item).text())).
replace(/\[description\]/gi, $('Description', item).text().replace(/<[^>]+>/gi, '').replace(/&[^;]+;/gi,'')).
replace(/\[class\]/gi, klass);
**/
return retur;
}
function MarkSticky(id, sticky) {
var realId = $('#' + id + ' a').attr('href');
$.ajax({
dataType: 'xml',
data: { id: realId, sticky: sticky },
url: '/rss/RssService.asmx/MarkSticky',
timeout: 60000,
type: 'POST',
success: function(xml) {
if (sticky)
AddToContainer('#FeedSticky', '#' + id);
else if ($('#' + id).hasClass('internal'))
AddToContainer('#FeedInternal', '#' + id);
else
AddToContainer('#FeedExternal', '#' + id);
},
error: function(response) {
}
});
}
function MarkPersistent(id, persistent) {
var realId = $('#' + id + ' a').attr('href');
$.ajax({
dataType: 'xml',
data: { id: realId, persistent: persistent },
url: '/rss/RssService.asmx/MarkPersistent',
timeout: 60000,
type: 'POST',
success: function(xml) {
if (persistent)
$('#' + id).removeClass('removable').addClass('persistent');
else
$('#' + id).removeClass('persistent').addClass('removable');
},
error: function(response) {
}
});
}
function MarkHidden(id, hidden) {
var realId = $('#' + id + ' a').attr('href');
$.ajax({
dataType: 'xml',
data: { id: realId, hidden: hidden },
url: '/rss/RssService.asmx/MarkHidden',
timeout: 60000,
type: 'POST',
success: function(xml) {
$('#' + id).css('display', 'inherit');
if (hidden)
$('#' + id).removeClass('visible').addClass('hidden');
else
$('#' + id).removeClass('hidden').addClass('visible');
$('.almostHidden').removeClass('almostHidden');
$('#' + id).parent().trigger('altered');
},
error: function(response) {
}
});
}
function AddToContainer(container, item) {
$(item).removeClass('FeedBorderOver');
$(container).append($(item)).trigger('altered');
}
function ItemSort($container) {
var arr = $container.children().get();
$container.empty();
arr.sort(function(a, b) {
var keyA = $(a).children('p[class=date]').text().toUpperCase();
var keyB = $(b).children('p[class=date]').text().toUpperCase();
if (keyA < keyB)
return 1;
if (keyA > keyB)
return -1;
return 0;
});
$.each(arr, function(index, item) {
$container.append(item);
});
}
function feedListAltered(container) {
ItemSort($(container));
$('div.feedItem',container).uncorner();
if($(container).attr('id') == 'FeedSticky')
$('div.feedItem',container).corner();
//else
// $('div',container).uncorner();
if ($('div:visible', container).size() == 0)
$(container).hide();
else{
if($(container).attr('id') == 'FeedInternal'){
if(InternalIntervalId)
clearInterval(InternalIntervalId);
InternalIntervalId = feedListRotateItems(container, 10);
}else if($(container).attr('id') == 'FeedExternal'){
if(ExternalIntervalId)
clearInterval(ExternalIntervalId);
ExternalIntervalId = feedListRotateItems(container, 5);
}
$(container).show();
}
$(container).trigger('updated');
}
function feedListRotateItems(container, numItems){
if($('div.feedItem.visible', container).size() > numItems){
$('div.feedItem.visible:gt('+ (numItems-1) +')', container).hide();
return setInterval(function(){
//Hide top-item and move down
$('div.feedItem.visible:first', container).hide(1000, function(){
$(this).appendTo(container);
//Display first hidden item
$('div.feedItem.visible:hidden:first', container).show(1000);
});
}, 10000);
}
}
function toUTCDate(dateTime){
// Gör en formattering här...
// Thu, 01 Jan 1970 00:00:00 GMT
// Ie6
// Wed Dec 31 16:00:00 PST 1969
// FF
// Thu Jan 01 1970 01:00:00 GMT+0100
if (dateTime.toString().indexOf('T') < 11 ) {
return dateTime;
} else {
var wekdaysnames = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var monthnames = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var minutes = dateTime.getUTCMinutes()
if (minutes < 10){
minutes = "0" + minutes
}
var Seconds = dateTime.getUTCSeconds()
if (Seconds < 10){
Seconds = "0" + Seconds
}
return (wekdaysnames[parseInt(dateTime.getUTCDay())] + ", " + dateTime.getUTCDate() + " " + monthnames[dateTime.getUTCMonth()] + " " + dateTime.getUTCFullYear() + " " + dateTime.getUTCHours() + ":" + minutes + ":" + Seconds + " GMT" );
}
}
function encryptId(str) {
var output = '';
var validChars = "abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ";
var charVal;
var pos;
for (var i = 0; i < str.length; i++) {
charVal = str.charCodeAt(i);
pos = (charVal % validChars.length);
output += validChars.substr(pos, 1);
}
return output;
}