/*Tucker http://56.en.cx/UserDetails.aspx?uid=19577*/
$('<link href="http://cdn.endata.cx/images/personal/153570/calendar.css" type="text/css" rel="stylesheet" />').appendTo('head');
var oscars_data = [];
var tmedals_data = [];
var medals_data = [];
var seasons = [];
seasons[seasons.length] = "";
var g_sid;
var desc = [];
var hiderank = [];
/*
Формат: [День, "Стиль CSS", "Комментарий"]
ВАЖНО нули в начале дат НЕ ПИСАТЬ
*/
var holidays = [];
holidays[holidays.length] = [     101,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     102,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     103,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     104,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     105,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     106,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     107,"holiday","Рождество Христово"];
holidays[holidays.length] = [     108,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     109,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     110,"holiday","Новогодние каникулы"];
holidays[holidays.length] = [     223,"holiday","День защитника Отечества"];
holidays[holidays.length] = [     308,"holiday","Международный женский день"];
holidays[holidays.length] = [     501,"holiday","Праздник Весны и Труда"];
holidays[holidays.length] = [     509,"holiday","День Победы"];
holidays[holidays.length] = [     612,"holiday","День России"];
holidays[holidays.length] = [    1005,"holiday","День Учителя"];
holidays[holidays.length] = [    1104,"holiday","День народного единства"];
holidays[holidays.length] = [    1212,"holiday","День Конституции Российской Федерации"];
holidays[holidays.length] = [    1231,"holiday","Новый год"];

var games_data = [];
/* Архив игр */
games_data[games_data.length] = [20100827,19951,7,"","emagomed или я ничего не понял!",[]];
games_data[games_data.length] = [20100904,20161,7,"","В городе сENсация",[]];
games_data[games_data.length] = [20100911,20335,7,"","Ахмед: записки мертвого террориста",[]];
games_data[games_data.length] = [20100916,19990,1,"","Спорим, угадаю? Блин, мимо...",[]];
games_data[games_data.length] = [20100917,20446,0,"","Корова задние лошадь передние",[]];
games_data[games_data.length] = [20100924,20611,7,"","Никто не знает про секс",[]];
games_data[games_data.length] = [20101002,20412,7,"","Куда идти? засада...",[]];
games_data[games_data.length] = [20101008,20344,7,"","Анекдоточки",[]];
games_data[games_data.length] = [20101013,20272,1,"","Дубль-Гугль-ГИС",[]];
games_data[games_data.length] = [20101016,20980,7,"","21-ый встречный",[]];
games_data[games_data.length] = [20101023,21238,7,"","Давно это было...",[]];
games_data[games_data.length] = [20101028,21309,1,"","Back to scool Урок №1 - Математика",[]];
games_data[games_data.length] = [20101030,21073,0,"","Хроника необъяснимого",[]];
games_data[games_data.length] = [20101104,21680,1,"","Катастрофы 2",[]];
games_data[games_data.length] = [20101106,21510,7,"","Занимательная топонимика: городские легенды",[]];
games_data[games_data.length] = [20101111,21665,1,"","Back to school Урок №2 - География",[]];
games_data[games_data.length] = [20101113,21907,4,"","Игра как стиль жизни. Или жить, что бы играть",[]];
games_data[games_data.length] = [20101118,21973,5,"","Мужчина моей мечты",[]];
games_data[games_data.length] = [20101119,21858,7,"","СпринТочки",[]];
games_data[games_data.length] = [20101122,22091,1,"","Тупомания - старт",[]];
games_data[games_data.length] = [20101125,22011,1,"","Back to school Урок №3 - Литература",[]];
games_data[games_data.length] = [20101127,22235,0,"","Неизвестное дело Шерлока Холмса",[]];
games_data[games_data.length] = [20101129,22323,1,"","Тупомания - брут",[]];
games_data[games_data.length] = [20101201,22504,1,"","bruteforce: advanced",[]];
games_data[games_data.length] = [20101204,22065,0,"","Autumn 2010 final - no limits",[]];
games_data[games_data.length] = [20101206,22480,1,"","Тупомания - вырви глаз",[]];
games_data[games_data.length] = [20101209,22012,1,"","Back to school Урок №4 - История",[]];
games_data[games_data.length] = [20101210,22124,7,"","NE изданное",[]];
games_data[games_data.length] = [20101216,22372,1,"","ПесENник",[]];
games_data[games_data.length] = [20101218,22526,4,"","4x4: ENергия ночи",[]];
games_data[games_data.length] = [20101223,22381,1,"","Back to school Урок №5 - Русский язык",[]];
games_data[games_data.length] = [20101224,22883,7,"","1-13 (Камскуби)",[]];
games_data[games_data.length] = [20101229,22997,5,"","Первое января - что это такое? Или Операция СНГ",[]];
games_data[games_data.length] = [20110108,23057,0,"","Остаться в живых! (LosT)",[]];
games_data[games_data.length] = [20110115,25993,7,"","Nature",[]];
games_data[games_data.length] = [20110118,23128,5,"","Расскажи о своей катастрофе",[]];
games_data[games_data.length] = [20110122,26037,7,"","Японский городовой",[]];
games_data[games_data.length] = [20110129,26271,7,"","I... Ди... NA ...!",[]];
games_data[games_data.length] = [20110205,22354,7,"","Тупомания - ездим",[]];
games_data[games_data.length] = [20110212,26652,0,"","NE формат",[]];
games_data[games_data.length] = [20110219,26743,4,"","Пятнадцать человек на сундук мертвеца...",[]];
games_data[games_data.length] = [20110223,26880,1,"","О футболе",[]];
games_data[games_data.length] = [20110226,26690,7,"","Эта Энкаунтер, йопт...",[]];
games_data[games_data.length] = [20110305,26564,7,"","Ох уж эти женщины...",[]];
games_data.push([20110312, 27227, 7, "", "Шпионские игры: Тайна палаты №130",[]]);
games_data.push([20110316, 27176, 1, "", "иГорный мИкС", []]);
games_data.push([20110319, 27473, 7, "", "Стою я значит...", []]);
games_data.push([20110326, 26422, 0, "", "Мятый элеMENT", []]);
games_data.push([20110331, 27495, 5, "", "от KisaSin", []]);
games_data.push([20110401, 26913, 7, "", "Наркоточки", []]);
games_data.push([20110404, 27173, 1, "", "ФаСоль", []]);
games_data.push([20110408, 27342, 7, "", "Ты помнишь, как всё начиналось?", []]);
games_data.push([20110416, 28300, 0, "", "STAR WARS", []]);
games_data.push([20110506, 28849, 7, "", "Японский городовой 2: возвращение Адмирала", []]);
games_data.push([20110514, 28942, 4, "", "Алиска в Расчудесье", []]);
games_data.push([20110521, 28511, 0, "", "Конец Майя", []]);
games_data.push([20110526, 28631, 1, "", "Джва", []]);
games_data.push([20110603, 29422, 7, "", "ЛогиТочки", []]);
games_data.push([20110610, 29697, 7, "", "MuZТочКи", []]);
games_data.push([20110624, 29349, 7, "", "Енщики думают, что эта игра - ошибка", []]);
games_data.push([20110701, 30131, 7, "", "Странные сказки", []]);
games_data.push([20110709, 30330, 0, "", "В гостях у сказки. Путешествие в Сказочный Лес", []]);
games_data.push([20110722, 30338, 7, "", "Свежее решение", []]);
games_data.push([20110729, 30665, 7, "", "NE изданное - 2", []]);
games_data.push([20110805, 30863, 7, "", "Бармалей говорит", []]);
games_data.push([20110826, 31374, 7, "", "Стройматериалы", []]);
games_data.push([20110909, 31626, 7, "", "Звуки Му", []]);
games_data.push([20110923, 31782, 7, "", "Приключения Ширлока Холлса и дохтора Вротсона", []]);
games_data.push([20111001, 31998, 0, "", "Алкосхватка: В поисках пропавшего sENatra", []]);
games_data.push([20111007, 32321, 7, "", "Ир лайэхэ", []]);
games_data.push([20111014, 32507, 7, "", "Крысиные бега", []]);
games_data.push([20111021, 32591, 7, "", "МuzТочкИ 2", []]);
games_data.push([20111026, 27174, 1, "", "Логические цепочки", []]);
games_data.push([20111104, 33011, 7, "", "Игра №160", []]);
games_data.push([20111105, 33029, 7, "", "Щас спою", []]);
games_data.push([20111109, 32846, 1, "", "Пословицы и поговорки в картинках", []]);

function init_popup(){
	$(".ul-tr ul").hide(); // Opera Fix
	$(".ul-tr li").hover(
		function(){$(this).find('ul:first').show("fast").attr("style","z-index:10000");},
		function(){$(this).find('ul:first').hide("fast").attr("style","z-index:auto");});
}

function en_addon(){
	var games = [];
	this.pv_sid = -1;
	var gc_game_unknown = 99;
	var gc_game_planning = 100;
	function do_calendar_proc(p_small,p_cnt,p_col,p_color,p_yy,p_mm){
		var clndr_data = [];
		var lv_result = "";
		var gc_length_with_type = 6;
		var holidays_data = [];
		var today = new Date();
		var this_day = today.getDate();
		var this_month = today.getMonth()+1;
		var this_year = today.getYear();
		if (this_year < 2000) {
			this_year = this_year + 1900;
		}
		var game_titles = [];
		game_titles[0] = ["Cхватка","/Addons.aspx?aid=336","СХ"];
		game_titles[1] = ["Мозговой штурм","/Addons.aspx?aid=342","МШ"];
		game_titles[2] = ["Фотоэкстрим", "/Addons.aspx?aid=340","ФЭ"];
		game_titles[3] = ["Мокрые войны","/Addons.aspx?aid=338","МВ"];
		game_titles[4] = ["Кешинг","/Addons.aspx?aid=341","КШ"];
		game_titles[5] = ["Фотоохота","/Addons.aspx?aid=337","ФО"];
		game_titles[6] = ["Тайники","/HowTo.aspx?about=TreasureHuntDescription","ТНК"];
		game_titles[7] = ["Точки","/HowTo.aspx?about=PointsDescription","ТЧК"];
		game_titles[8] = ["Видеоохота","/HowTo.aspx?about=VideoHuntDescription","ВО"];
		game_titles[gc_game_unknown] = ["Неизвестно","","ХЗ"];
		var lt_dnm = ["","Пн","Вт","Ср","Чт","Пт","Сб","Вс"];
		var lt_dnmf = ["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"];
		var lt_mnm = ["","Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"];
		var lt_mnmr = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
		var lt_ml = [0,31,28,31,30,31,30,31,31,30,31,30,31];
		if (p_yy < 1500) {p_yy = p_yy + 1900;}
		lt_ml[2] = (((p_yy % 4 == 0) && (p_yy % 100 != 0)) || (p_yy % 400 == 0)) ? 29 : 28;

		function clndr_init(){
		var i, j, lv_pos;
		var lv_date_from = 0, lv_date_to=0;
		var lv_dom = "", lv_dom2 = "", lv_reg = "";
		var lv_yy1 = 0;
		var lv_holiday = 0;
		var lv_result = '';

			if (p_small == 1){
				lv_date_from = p_yy*10000+p_mm*100+1;
				if (p_mm+p_cnt-1>12) {
					lv_date_to = (p_yy+1)*10000+(p_mm+p_cnt-1-12)*100+31;
				} else {
					lv_date_to = p_yy*10000+(p_mm+p_cnt-1)*100+31;
				}
			} else {
				lv_date_from = p_yy*10000+1*100+1;
				lv_date_to = p_yy*10000+12*100+31;
			}

			for (i=0;i<games_data.length;i++){
				if ((games_data[i][0]>=lv_date_from) && (games_data[i][0]<=lv_date_to)) {
					lv_pos = clndr_data.length;
					clndr_data[lv_pos]=[0,0,""];
					// дата
					clndr_data[lv_pos][0]=games_data[i][0];
					// тип
					if (games_data[i].length==gc_length_with_type) {
						clndr_data[lv_pos][1]=games_data[i][2];
						j=1;
					} else {
						clndr_data[lv_pos][1]=gc_game_unknown;
						j=0;
					}
					// домен
					lv_dom = (games_data[i][j+2]!="")?"http://"+games_data[i][j+2]+".en.cx/":"/";
					lv_dom2_url = (games_data[i][j+2]!="")?" [<a class='lm' href='http://"+games_data[i][j+2]+".en.cx'>"+games_data[i][j+2]+".en.cx</a>]":"";
					lv_dom2 = (games_data[i][j+2]!="")?" ["+games_data[i][j+2]+".en.cx]":"";
					// игра зарегистрирована
					lv_reg = (games_data[i][1]>0)?"GameDetails.aspx?gid=" + games_data[i][1]:"";
					// url
					clndr_data[lv_pos][2]='['+game_titles[clndr_data[lv_pos][1]][2]+"] <a class='lm' href='"+lv_dom+lv_reg+"'>"+games_data[i][j+3]+"</a>"+lv_dom2_url;
					// текст
					clndr_data[lv_pos][3]='['+game_titles[clndr_data[lv_pos][1]][2]+"] "+games_data[i][j+3]+""+lv_dom2;
					// url
					clndr_data[lv_pos][4]=lv_dom+lv_reg;

					// не зарегистрированные игры
					if (games_data[i][1] == 0){clndr_data[lv_pos][1]+=gc_game_planning;};
				} // только в периоде
			} // по всем играм

			lv_yy1 = lv_date_from - (lv_date_from % 10000);
			for (i=0;i<holidays.length;i++){
				if (holidays[i][0]<10000) {
					lv_holiday = holidays[i][0]+lv_yy1;
					while (lv_holiday <= lv_date_to){
						if ((lv_holiday>=lv_date_from) && (lv_holiday<=lv_date_to)) {
							holidays_data[holidays_data.length]=[lv_holiday,holidays[i][1],holidays[i][2]];
						}
						lv_holiday+=10000;
					}
				} else if ((holidays[i][0]>=lv_date_from) && (holidays[i][0]<=lv_date_to)) {
					holidays_data[holidays_data.length]=holidays[i];
				}
			}
		}
		//clndr_data[date,type,text]
		function fill_day(p_date, p_day, today){
			var st_url = "";
			var found_day = 0;
			var out_text="";
			// игры
			for (i=0;i<clndr_data.length;i++){
				if (clndr_data[i][0] == p_date) {
					if (found_day) {
						url = 'utype.10';
						wa_menu = '';
						for (ii=0;ii<clndr_data.length;ii++){
							if (clndr_data[ii][0] == p_date) {
								if (clndr_data[ii][1] < gc_game_planning) {url = ((today) ? 't' : '' )+'type.10';}
								wa_menu += "<li>" + clndr_data[ii][2] + "</li>";
							}
						}
						url = "http://cdn.endata.cx/data/games/7338/"+url+".gif";
						cell_content = "<ul class='ul-tr'><li><a href='' class='box-tr' onClick='return false;'><img border='0' width='28' height='28' src='"+url+"' title='Несколько игр' alt='&infin;'></a><ul align='left'>" + wa_menu + "</ul></li></ul>";
						cell_class = "game";
						break;
					} else {
						if (clndr_data[i][1] < gc_game_planning) {
							url = ((today) ? 't' : '' )+'type.' + (clndr_data[i][1]);
							lv_gtype = game_titles[clndr_data[i][1]][2];
						} else {
							url = ((today) ? 't' : '' )+'type.' + (clndr_data[i][1] - gc_game_planning);
							lv_gtype = game_titles[clndr_data[i][1] - gc_game_planning][2];
						}
						url = "http://cdn.endata.cx/data/games/7338/"+url+".gif";
						wa_menu = "<li>" + clndr_data[i][2] + "</li>";
// с меню
//						cell_content = "<ul class='ul-tr'><li><a href='"+clndr_data[i][4]+"' class='box-tr'><img border='0' width='28' height='28' src='"+url+"' title='"+clndr_data[i][3]+"' alt='"+lv_gtype+"'></a><ul align='left'>" + wa_menu + "</ul></li></ul>";
// без меню
						cell_content = "<a href='"+clndr_data[i][4]+"'><img border='0' width='28' height='28' src='"+url+"' title='"+clndr_data[i][3]+"' alt='"+lv_gtype+"'></a>";
						cell_class = "game";
						found_day = 1;
					}
				}
			}

			// праздники
			lv_day = p_date%100;
			if (found_day == 0) {
				for (i=0;i<holidays_data.length;i++){
					if (holidays_data[i][0] == p_date) {
						if (holidays_data[i][2] != "") {
		    					cell_content = "<a href='#' title='"+holidays_data[i][2]+"'>"+lv_day+"</a>";
   							cell_class = holidays_data[i][1];
						} else {
		    					cell_content = lv_day;
   							cell_class = holidays_data[i][1];
						}
						found_day = 1;
					}
				}
			}

			if (found_day == 0) {
                		if (today) {
		                       cell_content = lv_day;
		                       cell_class = "currentday";
				} else if (p_day < 6) {
    					cell_content = lv_day;
    					cell_class = "wd";
				} else {
    					cell_content = lv_day;
    					cell_class = "def_holiday";
    				}
			}
			out_text = "<td class='"+cell_class+"'>"+cell_content+"</td>";
			return out_text;
		} //end of fill_day()

		function fill_table(p_mname,p_mlength,p_year,p_month) {
			var lv_today=0;
			var lv_cell=0;
			var lv_day_pos=0;
			var lv_res='';
			lv_res += "<table align='center' class='reiting border_rad5' cellpadding='0' cellspacing='1' border='0' style='background-color: #1b7c00;'>";

			var tt_date = new Date(p_year, p_month-1, 1,0,0,0,0);
			// определение дня недели 1 числа месяца
			var start_day = tt_date.getDay();
				if (start_day == 0) {
				start_day = 7;
			}
			var m_length = p_mlength + start_day - 1;
			var col = Math.ceil(m_length / 7);
			var max_col = col * 7;
			lv_res += "<tr><td class='month' colspan='"+(col+1)+"' align='center' nowrap><center><nobr>"+p_mname+"</nobr></center></td></tr>";
			// по дням недели
			for (var y=1;y<=7;y++) {
				// по столбцам
				for (var x=1;x<=col;x++) {
					// первая колонка - названия дней недели
					if (x == 1) { lv_res += "<tr><td class='dw"+y+"'>"+lt_dnm[y]+"</td>"; }
					lv_cell = y + ((x-1) * 7);
					if (lv_cell >= start_day) {
						lv_day_pos = lv_cell - start_day + 1;
					} else {
						lv_day_pos = 0;
					}
					if (lv_cell > m_length) {
						lv_day_pos = 0;
					}
					//today == true - сегодняшний день
					lv_today = ((p_year == this_year) && (p_month == this_month) && (lv_day_pos == this_day));
					if (lv_day_pos != 0) {
						lv_res += fill_day(p_year*10000+p_month*100+lv_day_pos, y, lv_today);
					} else {
						// пустые дни - до 1 и после последнего
						lv_res += "<td style='background-color: #003300;' width='28' height='28'>&nbsp;</td>";
					}
				} // конец строки
				lv_res += "</tr>";
			} // конец таблицы

			lv_res += "</table>";
			return lv_res;
		} // end of fill_table()


		// инициализация данных
		clndr_init();
		if (p_small != 1) {
			lv_result += '<span class="PageTitle" SK><nobr>Сегодня, '+today.getDate()+' '+lt_mnmr[today.getMonth()]+', '+lt_dnmf[today.getDay()]+'</nobr></span><br><br>';
		}
		lv_result += "<table bgcolor='"+p_color+"' cellspacing='0' cellpadding='0' border='0'>";
		if (p_small == 1){
			var m, k = parseInt (p_mm,10);
			lv_result += '<tr>';
			for (m=0; m<p_cnt; m++){
				if (k==13) {
					k = 1;
					p_yy+=1;
					lt_ml[2] = (((p_yy % 4 == 0) && (p_yy % 100 != 0)) || (p_yy % 400 == 0)) ? 29 : 28; // февраль
				}
				lv_result += '<td><br>'+fill_table(lt_mnm[k], lt_ml[k], p_yy, k)+'</td><td>&nbsp;</td>';
				if (((m+1)%p_col==0) && (m!=p_cnt)){
					lv_result += '</tr><tr>';
				}
				k++;
			}
			lv_result += '</tr>';
		} else {
			var jj = 1;
			for (var m = 1;m<=12;m++){
				if (jj == 1) {
					if (m>1){
						lv_result += "<tr><td><br></td><td><br></td><td><br></td></tr>";
					}
					lv_result += "<tr>";
				}
				lv_result += '<td><br>'+fill_table(lt_mnm[m], lt_ml[m], p_yy, m)+'</td><td>&nbsp;</td>';
				if (jj == 3) {
					lv_result += "</tr>";
					jj = 0;
				}
				jj++;
			}
		}

		lv_result += "</table>";
		if (p_small!=1){
			lv_result += "<table cellspacing='2' cellpadding='0' border='0'>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_green.gif' class='cdr_1'></td><td> - Текущая дата</td></tr>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_yellow.gif' class='cdr_1'></td><td> - Укороченный день</td></tr>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_blue.gif' class='cdr_1'></td><td> - Праздник</td></tr>";
			lv_result += "<tr><td><img src='http://cdn.endata.cx/data/games/7338/lines_red.gif' class='cdr_1'></td><td> - Выходной день</td></tr>";
			for (var g = 0;g<game_titles.length;g++){
				if (game_titles[g] == undefined) {continue;}
				lv_result += "<tr><td><img src='http://cdn.endata.cx/images/personal/153570/type." + g + ".gif' title='"+game_titles[g][0]+"' width='28' height='28' style='border: 1px solid #1B7C00'></td><td>&nbsp;-&nbsp;"+game_titles[g][0]+" <sup>(<a href='"+game_titles[g][1]+"'>?</a>)</sup></td></tr>";
			}
			lv_result += "</table>";
		}
		return lv_result;
	} // end of do_calendar_proc()

	this.do_calendar = function(p_small,p_cnt,p_col,p_color,p_yy,p_mm,p_class){
		var lv_clndr_html = do_calendar_proc(p_small,p_cnt,p_col,p_color,p_yy,p_mm);
		if (p_class!=null){
			$(function(){
				$(p_class).html(lv_clndr_html);
				init_popup();
			});
		} else {
			document.write(lv_clndr_html);
			init_popup();
		}
	}
}

//@utf-8
//cvs2table mod
(function($) {

	$.csv2table={
		name     : 'csv2table',
		version  : '0.03-b-cut',
		date     : '2010.10.19',
		update   : 'http://jsgt.org/lib/jquery/plugin/csv2table/v002/update.txt',
		ver      : '<span class="csv2tableVersion" style="color:#aaa"></span><script>jQuery(function($){ $(".csv2tableVersion").html("version:csv2table-"+$.csv2table.version) })</script>',
		charset  : 'utf-8',
		doc      : 'http://jsgt.org/mt/01/',
		demo     : 'http://jsgt.org/lib/jquery/plugin/csv2table/v002/test.htm',
		author   : 'Toshiro Takahashi, Mon Lu',
		lisence  : 'Public Domain',
		loadImg  : (new Image()).src='http://d1.endata.cx/images/personal/153570/icon-loadinfo.gif',  //Dafault loading IMG
		sortNImg : (new Image()).src='http://d1.endata.cx/images/personal/153570/icon-n.gif',         //Dafault sort IMG N
		sortDImg : (new Image()).src='http://d1.endata.cx/images/personal/153570/icon-d-green.gif',   //Dafault sort IMG D
		sortAImg : (new Image()).src='http://d1.endata.cx/images/personal/153570/icon-a-green.gif',   //Dafault sort IMG A
		setting  : [],
		data     : [],
		_rowsAry : [],
		_doc     : document,
		err      : [],
		f        : {
			classifyByCol:function(id,colIndex,myCompAry,nolegend){
				var toj=$('table',$('#'+id)),oj=$('tr > td:nth-child('+(colIndex+1)+')',toj)
				if(!nolegend){
					var legend=($('#csv2table-legend-'+id).length==0)?
						$('<div class="csv2table-legends" id="csv2table-legend-'+id+'"></div>'):$('#csv2table-legend-'+id);
					toj.after(
						legend.append(
							$('<div class="csv2table-legends" id="csv2table-legend-'+id+'-'+colIndex+'"></div>')
							.append($.csv2table._rowsAry[id][0][colIndex]+' ')
						)
					)
				}
				//Eg. myCompAry is [['>10','#eee'],['>30','#ddd'],['>50','#bbb']]
				$.each(myCompAry,function(){
					oj
					.filter(':_csv2table_myComp('+this[0]+')')
					.css('background',this[1])
					if(!nolegend){
						var hanrei='<span style="background-color:'+this[1]+'">'
						          +'&nbsp;&nbsp;&nbsp;&nbsp;</span> '
						$('#csv2table-legend-'+id+'-'+colIndex)
							.append(hanrei+this[0].split('<').join('&lt;')+'&nbsp;&nbsp;&nbsp;' )
					}
				})

			}
		}
	}



	$.fn.csv2table= function (url,setting){
		if(!setting)var setting={};
		var contents=$.fn.csv2table.el=this,id=this[0].id,
		op = $.csv2table.setting[id] = $.extend({
			url                : url,
			nowloadingImg      : $.csv2table.loadImg,              //Image of now loading...
			nowloadingMsg      : 'Загрузка данных...',			   //Message of now loading...
			errorMsg		   : 'Произошла ошибка!',			   //Error message
			sortNImg           : $.csv2table.sortNImg,             //Sort IMG N
			sortDImg           : $.csv2table.sortDImg,             //Sort IMG D
			sortAImg           : $.csv2table.sortAImg,             //Sort IMG A
			removeDoubleQuote  : true,                             // remove " of "hogehoge"
			appendThead        : null,                             //Array. Append a Row of Thead.(e.g. ["Name","Address"])
			col_midasi         : 0,                                //
			row_sep            : '\n',                             //Separator of rows. default '\n'
			col_sep            : ',',                              //Separator(,|\t|;) of cols. default ','
			sortable           : false,                             //col sort
			select             : '*',                              //select col lists. default '*' is all cols.
			orderBy            : null,                             //array of sort col. orderBy:[[colNo|'colName','sortType']]
			where              : null,                             //array of where : [{'ColName':'condition'}] etc.
			limit              : null,                             //array of limit : [offset,len]
			col0color          : true,                             //col[0] color sync jQchart line_strokeStyle
			numArignRight      : false,                             //Set the Number TD to "textAlign : 'right'"
			onload             : null,                             //collback function (id,op,data,ary) {}
			use                : null,                             // 'jqchart:line#canvasID'
			className_div      : 'csv2table-div',                  //className
			className_table    : 'csv2table-table',                //className
			className_table_th : 'csv2table-table-th',             //className
			className_table_td : 'csv2table-table-td',             //className
			className_hoboNum  : 'csv2table-hoboNum',              //className
			className_sortMark : 'csv2table-sortMark',             //className
			className_legends  : 'csv2table-legends'               //className
		},setting);

		if(op.row_sep=='\n')op.row_sep_reg='\r\n'
		if(op.use){
			op.use_api      = op.use.split(':')[0]
			op.use_api_type = op.use.split('#')[0]
			op.use_api_box  = op.use.split(':')[1].split('#')[1]
		}

		//Custom Selectors
		$.extend($.expr[":"], {
			//_csv2table_hoboNum is match to number or Number-like (3 digit + comma)
			//for Set the Number TD to "textAlign : 'right'"
			_csv2table_hoboNum  : function(a,i,m){
				var b = a.textContent||a.innerText||$(a).text()||"",
					c = Number(
						chkThreeComma(b).split(",").join("")
					);
				return !isNaN(b) || !isNaN(c);
			},
			//
			_csv2table_myComp  : function(a,i,m){
				var b = Number(
					(a.textContent||a.innerText||$(a).text()||"")
						.replace(" ","")
						.replace(/,/g,'')
				);
				return typeof b=='number'? eval(b+m[3]):false;
			}
		});

		//Default loading message if not set in settings
		if(op.nowloadingMsg == null){ op.nowloadingMsg = "Now loading..."; }
		$(contents).before('<div class="csv2table-loading"><img src="'+op.nowloadingImg+'"> '+op.nowloadingMsg+'</div>' )

		//Default error message
		if(op.errorMsg == null){ op.errorMsg = "CSV file not found."; }

		data = $.trim(document.getElementById(url).textContent);
		$(".csv2table-loading").hide();
		$(".csv2table-loading").remove();
		$(contents).css("display","none").html(mkRowsAry(id,data));
		setCSS(id);
		$(contents).fadeIn();
		if(op.use_api=='jqchart'){
		if(op.use_api_type=='jqchart:line')op.type=$.csv2table.setting[id].type='line';
		    else if(op.use_api_type=='jqchart:bar')op.type=$.csv2table.setting[id].type='bar';
			useChart(id,op,data,$.csv2table._rowsAry[id]);
		}
		if($.csv2table.setting[id].onload)$.csv2table.setting[id].onload(id,op,data,$.csv2table._rowsAry[id]);

		$.csv2table.wrtTable=function(colIndex,id,callback){
			$("#"+id).html(mkRowsAry(id,$.csv2table._rowsAry[id],op['th'+colIndex],colIndex));
			setCSS(id);
			if(op.use_api=='jqchart'){
				if(op.use_api_type=='jqchart:line')op.type=$.csv2table.setting[id].type='line';
				else if(op.use_api_type=='jqchart:bar')op.type=$.csv2table.setting[id].type='bar';
				useChart(id,op,$.csv2table.data[id],$.csv2table._rowsAry[id]);
			}
			if($.csv2table.setting[id].onload)$.csv2table.setting[id].onload(id,op,$.csv2table.data[id],$.csv2table._rowsAry[id]);
			if(callback)callback(op['th'+colIndex],colIndex,id);
		}

		$.csv2table.reset=function(id){
			rowsAry=$.csv2table._rowsAry[id]=escapeStrComma(op.col_sep,op.row_sep,$.csv2table.data[id],op.removeDoubleQuote);
			$("#"+id).html( mkTable(id,rowsAry));
			if(op.sortable)$('#'+id+' table th .sortimg').attr('src',op.sortNImg )
			setCSS(id);
			if(op.use_api=='jqchart'){
				if(op.use_api_type=='jqchart:line')op.type=$.csv2table.setting[id].type='line';
				else if(op.use_api_type=='jqchart:bar')op.type=$.csv2table.setting[id].type='bar';
				useChart(id,op,$.csv2table.data[id],$.csv2table._rowsAry[id]);
			}
		}

		function orderWk(ary,sortType,colIndex){
			ary.head=ary.slice(0,op.col_midasi+1)
			var rowsAry=ary.slice(op.col_midasi+1,ary.length)
			rowsAry=sortwk(rowsAry,sortType,colIndex);
			rowsAry=ary=ary.head.concat(rowsAry)
			return rowsAry
		}

		function mkRowsAry(id,data,sortType,colIndex){

			var rowsAry=null,rewrite=true,//zanntei
				ofs,len

			if(sortType && rewrite){
				rowsAry=$.csv2table._rowsAry[id]=orderWk(data,sortType,colIndex);
			} else {
				rowsAry=$.csv2table._rowsAry[id]=escapeStrComma(op.col_sep,op.row_sep,data,op.removeDoubleQuote);

				if(op.where){
					var _rowsAry = rowsAry,
						rowsAry  = [],
						wlen     = op.where.length-1,
						colNamesArry =_rowsAry[0] ;
					for(var i=_rowsAry.length-1 ;i> 0;i--){

						var sikis='',siki='',colValue='',value='',colNo=null;
						for(var j=0,ok=false;j<=wlen;j++){
							if(op.where[j]=='&&' || op.where[j]=='||'){
								siki =op.where[j];
								sikis += " " +siki;ok=true;
							} else {

								if(typeof op.where[j].length=='number'){
									colNo=op.where[j][0]; value=$.trim(op.where[j][1]);
								} else if(typeof op.where[j]=='object'){
									for(var k in op.where[j]){
										var colName=$.trim(k);value=$.trim(op.where[j][k]);break;
									}
									colNo= $.inArray(colName, colNamesArry);

								} else ok=errLog('op.where operetor');

									if(value.match(/^==(.*)/g)){
										siki = '"'+_rowsAry[i][colNo]+'"=="'+RegExp.$1+'"';
										sikis += " " +siki;ok=true;

								} else if(value.match(/^like\s*(.*)/g)){

									var reg= RegExp.$1;
										reg= reg.split('\\_').join('###adrsr###') ; //escape _
										reg= reg.replace(/_/g,'.') ;
										reg= reg.split('###adrsr###').join('_') ;
										reg= reg.split('\\%').join('###parst###') ; //escape %
										reg= reg.replace(/%/g,'.*') ;
										reg= reg.split('###parst###').join('%') ;
										reg= '^'+reg+'$' ;
									siki=(_rowsAry[i][colNo].match(new RegExp(reg,'g')))?true:false;
									sikis += " " +siki;ok=true;

								} else if(chkThreeComma(_rowsAry[i][colNo])){
									colValue=_rowsAry[i][colNo].split(',').join('');
									siki = colValue+value.split(',').join('');
									if(chkSiki(siki) != null){
										sikis += " " +siki;ok=true;
									} else ok=errLog('op.where operetor');

								} else {
									colValue= _rowsAry[i][colNo] ;
									siki = colValue+value;
									if(chkSiki(siki) != null){
										sikis += " " +siki;ok=true;
									} else ok=errLog('op.where operetor');
								}
							}
						}

						if(eval(sikis) && ok)rowsAry.unshift(_rowsAry[i]);
					}
					rowsAry.unshift(_rowsAry[0]);
					$.csv2table._rowsAry[id]=rowsAry;
				}

				resetSortImg(id);
				if(op.orderBy){
					var cv,orderlen = op.orderBy.length-1;
					for(var i=orderlen ;i>=0;i--){
						var cv=getColNoAndValue(op.orderBy[i],rowsAry[0]);
						rowsAry=$.csv2table._rowsAry[id]=orderWk(
							rowsAry,cv.val,cv.cln
						)
					}
				}

				if(op.limit){
					var lmt=op.limit,lmlen=lmt.length,_rowsAry=[],zan,end;
					if(lmlen==1)ofs=1,len=lmt[0];
					else if(lmlen==2)ofs=lmt[0]+1,len=lmt[1];
					else ofs=1,len=rowsAry.length;
					zan=rowsAry.length-ofs;
					if(len>zan)len=zan;
					end=ofs+len;
					for(var i=rowsAry.length;i>0;i--){
						if(ofs<=i && i<end)_rowsAry.unshift(rowsAry[i]);
					}
					_rowsAry.unshift(rowsAry[0]);
					rowsAry=$.csv2table._rowsAry[id]=_rowsAry;
				}
			}

			var tableHtm=mkTable(id,rowsAry);

			return tableHtm;
		}

		function errLog(msg){
			$.csv2table.err.unshift('[Err] '+msg) ;
			return false;
		}

		function getColNoAndValue(opr,colNamesArry){
			var colNo=null,value=null;
			if(typeof opr[0]=='number')colNo=opr[0];
			else if(typeof opr[0]=='string')
				colNo= $.inArray($.trim(opr[0]),colNamesArry);
			value=$.trim(opr[1]);
			return {cln:colNo,val:value}
		}

		function chkCompOpr(siki){
			return siki.match(/^&&|\|\|$/g) && siki.length==2
		}

		function chkSiki(siki){
			return siki.match(/^[0-9]*[<>\!=][=]{0,}[0-9]*$/g)
		}

		function  mkTable(id,rowsAry){
			if(!rowsAry)return
			var row=rowsAry.length,col=rowsAry[0].length,
				s=op.col_midasi+1
			var htm="";

			htm+= "<tr class='topWinnerHead gold'>";
			for (var k=0; k<col; k++) {

				var si=$('#'+id+'-sortimg-'+k)[0],
					sortimgsrc=(si)?$('#'+id+'-sortimg-'+k)[0].src:op.sortNImg;
				if(op['th'+k]!=null)
					 if(op['th'+k]=='D')sortimgsrc=op.sortDImg;
				else if(op['th'+k]=='A')sortimgsrc=op.sortAImg;
				else if(op['th'+k]=='N')sortimgsrc=op.sortNImg;

				htm+= "<th id='"+id+"-th-"+k+"'>"
				   + rowsAry[op.col_midasi][k];

				if(op.sortable)
				htm+= "<img id='"+id+"-sortimg-"+k+"' class='sortimg' src='"+sortimgsrc+"' border='0'>"
				htm+= "</th>";

				if(!op['th'+k])op['th'+k]=null;//memo of sortType
			}
			htm+= "</tr>";

			for (var i=s; i<row; i++) {
					htm+= "<tr class='"+(i%2?"toWinnerItem":"toWinnerAltItem")+"'>";
					for (var j=0; j<col; j++) {
						htm+= "<td class='"+(j>0?"t_center":"bold")+"'>"
                           + ((j>0&&i>0)?"":"<span style='color:#196D00;'>"+i+".</span>")
						   + rowsAry[i][j]
						   + "</td>";
					}
					htm+= "</tr>";
			}

			var tableHtm=$.csv2table._doc.getElementById(id)
				.innerHTML="<table border='0' cellspacing='1' style='background-color: #1B7600;' width='100%'>"+htm+"</table>";
			return tableHtm;
		}

		function sortwk(dataAry,sortType,colIndex){

			if(!dataAry)return ;

			sortType=sortType.toUpperCase();
			if(sortType=="D")op['th'+colIndex]='D';
			else op['th'+colIndex]='A';

			var ci=colIndex,
				are3comma=chkThreeComma(dataAry[0][ci]),
				mved3comma=are3comma.split(",").join("");
			    if(!isNaN(dataAry[0][ci]) || !isNaN(mved3comma)){
				var rowlen=dataAry.length;
				if(are3comma != 'null'){
					for(var j=0;j<rowlen;j++){
						var d=chkThreeComma(dataAry[j][ci]).split(",").join("") ;
						dataAry[j].unshift((isNaN(d))?0:d);
					}
					ci=0;
				}

				(sortType=="D")?
				dataAry.sort(function (a,b){
						return (b[ci] - a[ci]) ;
				}):
				dataAry.sort(function (a,b){
						return (a[ci] - b[ci]);
				})

				if(are3comma != 'null'){
					for(var j=0;j<rowlen;j++)dataAry[j].shift();
				}

			} else {
				dataAry.sort(
					function(a,b){

						if(!a[ci]) {
							if(!b[ci])return 0;
							else     return 1;
						} else if(!b[ci]) {
							return -1;
						}

						if(""+a[ci] === ""+b[ci])return 0;
						return (sortType=="D")?
							((""+a[ci] > ""+b[ci])?-1:1):
							((""+a[ci] > ""+b[ci])?1:-1);
					}
				)
			}
			return dataAry;
		}

		function escapeStrComma(col_sep,row_sep,oj,removeDoubleQuote){
			var rdq=(removeDoubleQuote)?'':'"';

			//mk dmy for comma in "
			var dmy =['-###','###-'],cnt=0,r;
			cnt=(function mkdmy(cnt){
				if(!(
					oj.indexOf((dmy[0]+'comma'+cnt+dmy[1]))==-1 ||
					oj.indexOf((dmy[0]+'rn'+cnt+dmy[1]))==-1 ||
					oj.indexOf((dmy[0]+'wDquote'+cnt+dmy[1]))==-1
				))mkdmy( ++cnt )
				else void(0)
				return cnt;
			})(cnt)

			var reg='(["](.|(\r\n))*?(["]$|["][,('+op.row_sep_reg+')]))',
				dmystr_comma=''+(dmy[0]+'comma'+cnt+dmy[1]) ,
				dmystr_rn=''+(dmy[0]+'rn'+cnt+dmy[1]) ,
				dmystr_wDquote=''+(dmy[0]+'wDquote'+cnt+dmy[1]) ;

			escape= oj.replace('""',dmystr_wDquote);
			escape= escape.replace(
				new RegExp(reg,"g"),
				function (after,before,index) {
					after= after
							.replace(/(\r\n)(?!$)/g,dmystr_rn)
							.replace(/,(?!$)/g,dmystr_comma)
					return after

				}
			)

			if(op.select == '*'||op.select == ['*'])
					r=$.csv2table._rowsAry[id]=mkArray(escape,op.col_sep,op.row_sep);
			else	r=$.csv2table._rowsAry[id]=mkSelectedArray(escape,op.col_sep,op.row_sep,op.select)

			var b=[],rowlen=r.length,collen=r[0].length;
			for(var i=0;i<rowlen;i++){
				if(r[i]=='')continue;
				b[i]=r[i];
				for(var j=0;j<collen;j++){
					try{
						b[i][j]=$.trim(r[i][j])
							.replace(/^"|"$/g,rdq)
							.replace(new RegExp(dmystr_comma,"g"),",")
							.replace(new RegExp(dmystr_rn,"g"),"\r\n")
							.replace(new RegExp(dmystr_wDquote,'g'),'""');
					} catch(e){}
				}
			}
			return b
		}

		function mkSelectedArray(data,col_sep,row_sep,select){
				var rows=data.split(row_sep),rc=[],c=[],
				    rowlen=rows.length ;
				for(var i=0;i<rowlen;i++){
					if($.trim(rows[i])=='') continue;
					try{
						rc[i]=rows[i].split(col_sep);
						c[i]=[];
						for(var j=0;j<select.length;j++){
							c[i].push(rc[i][select[j]])
						}
					} catch(e){ }
				}
				return c||rc
		}


		function mkArray(data,col_sep,row_sep){
				var rows=data.split(row_sep),rc=[]
				    rowlen=rows.length ;
				for(var i=0;i<rowlen;i++){
					if($.trim(rows[i])=='') continue;
					try{
						rc[i]=rows[i].split(col_sep);
					} catch(e){ }
				}
				return rc
		}

		function setDefault(settingName,val){
			var prop = (setting[settingName]=='undefined'||
				 setting[settingName]==null)?val:setting[settingName]
			return prop
		}

		function chkThreeComma(data){
			return data.replace(" ","")
						.split(".")[0]
						.match(/^[0-9]{1,3}(,[0-9]{3})*,[0-9]{3}$/g)+""
		}


		function setCSS(id){
			var numTD=$('#'+id+' table td:_csv2table_hoboNum')
				.addClass(op.className_hoboNum)
			if(op.numArignRight)numTD.css({
				textAlign        : 'right'
			})

			if(op.sortable){
				$('#'+id+' table th')
					.addClass(op.className_sortMark)
					.each(function (i,el) {
						var i =$('#'+id+' table th').index(this);
						$(this).click(function (e) {
							resetSortImg(id,i);
							if(op['th'+i]=='D') op['th'+i]='A';
							else op['th'+i]='D';
							$.csv2table.wrtTable( i,""+id+"",function(sortType,colIndex,id){});
						});
					});
			}
		}

		function resetSortImg(id,index){
			var thlen=$.csv2table._rowsAry[id][0].length;
			for(var i=0;i<thlen;i++)if(i!=index){ op['th'+i]='N'}
			$('#'+id+' table th img.sortimg').each(function(){
				$(this).attr('src',$.csv2table.setting[id].sortNImg );
			})
		}

		function useChart (id,op,data,ary){
			var head= ary[0],dataBody=ary.slice(1) ;
			$("#"+op.use_api_box).jQchart({
				config : $.extend(op,{
					width    : $('#'+id+' table').width()+10,
					paddingL : $('#'+id+' table th:nth-child(1)').width()+14,
					labelX   : (op.labelX=='useChart')?head.slice(1):op.labelX,
					onload   : ($.csv2table.setting[id].onload)?$.csv2table.setting[id].onload(id,op,data,ary):null
				}),
				data : (function(){
					var d = [];
					for(var i=0,len=dataBody.length;i<len;i++){
						d.push(dataBody[i].slice(1))
					}
					return d;
				})()
			})

			var dl= dataBody.length,lc=$("#"+op.use_api_box).jQchart.op.line_strokeStyle;
			$('tr:even','#'+id).css('background','#eee');
			if(op.col0color)
			$.each(dataBody,function(i){
				$('tr:nth-child('+dl+'n'+(dl+i+2)%dl+') td:first','#'+id)
					.css('color',lc[i])
			})
		}
		return this
	}

})(jQuery);
