﻿/*
 * PerpetuumMobile JavaScript Library v0.1
 * http://www.perpetuum.hr/
 *
 * Copyright (c) 2009 Perpetuum Mobile
 *
 * Author: Tomislav Mesic
 * Date: 2009-12-08 10:08
 * Revision: 2
 */

//	define perpetuum mobile pm namespace
var pm = {};

pm.utils = {};

pm.iSite = {};
pm.iSite.article = {};
pm.iSite.sectionTree = {};
pm.iSite.sectionFirstLevel = {};
pm.iSite.link = {};
pm.iSite.calendar = {};
pm.iSite.search = {};

pm.page = {};

/*************************************/
/********** utils functions **********/
/*************************************/
pm.utils.regexp = function (regex, string) {
	var myregexp = regex;
	var match = myregexp.exec(string);
	
	if (match != null) {
		result = match[1];
	} else {
		result = "";
	};

	return result;
};

/*
function loc(url) {
	return {
		search : function() {
			return url.match(/\?(.+)/i)[1];
		},
		hash : function() {
			return url.match(/#(.+)/i)[1];
		},
		protocol : function() {
			return url.match(/(ht|f)tps?:/)[0];
		},
		href : function() {
			return url.match(/(.+\.[a-z]{2,4})/ig);
		}
	}
}

var l = loc('http://www.net.tutsplus.edu?key=value#hash');

alert(l.hash()); // http://www.net.tutsplus.com
alert(l.protocol()); // http:
*/


/**************************************/
/********** common functions **********/
/**************************************/
pm.openWindow = function () {
	var args = arguments[0];
	
	if (args !== undefined) {
		
		//	code goes here
		
	};
};

//	return current section id
pm.pmCurrentSectionId = function () {
    if (pmCurrentSectionId !== undefined) {
		return pmCurrentSectionId;
	} else {
		return pm.utils.regexp(/sec=(\d{1,4})/, navigator.location);
	};
};

/********************************************/
/********** common iSite functions **********/
/********************************************/
//	sample: pm.iSite.initialize("#search");
pm.iSite.search.initialize = function () {
	var args = (arguments.length > 0) ? arguments[0] : null;
	
	var selector = (args && args.selector) ? args.selector : "#search, #search-results";
	
	var $search = $(selector);
	var $searchField = $search.find("input:text");
	var $searchButton = $search.find("a.search-button, input:button, input:submit, input:image");
	
	//	Handle if pmSearchDefaultSectionId is not empty
	if (pmSearchDefaultSectionId && pmSearchDefaultSectionId.length > 0) {
		$search.find("input[name$='SearchDefaultSectionID']").val(pmSearchDefaultSectionId);
	}
	
	//	Do search on press enter key
	$searchField
		.removeAttr("onkeypress")
		.keypress(function(e) {
			if (e.which == 13) {
				doSearch();
			};
		});
	
	//	Do search on press link or button
	$searchButton
		.removeAttr("onclick")
		.click(function(event) {
			event.preventDefault();
			doSearch();
		});	

	doSearch = function () {
		if ($searchField.val().length > 0) {
			var strSearchFieldLocatorValue = $("input:hidden[name$='SearchFormLocator']").val();
				
			if (strSearchFieldLocatorValue !== "") {
				MarkForm("6", "1", strSearchFieldLocatorValue,"");
				window.iSite_SetCacheTrigger(null);
				document.forms[0].submit();
			};
		}
	};
	
};

//	sample: pm.iSite.search.showResultsNumbers();
pm.iSite.search.showResultsNumbers = function () {
	if (document.getElementById("search-results")) {
		$("#search-results-list").addClass("results-list-numeric");
				
		var currentPage = $("span.search-results-pager-current").text()-1;
		var itemsPerPage = $("#search-results dt").length;
		
		$("#search-results dt").each(function(i){
			var $number = $("<span/>").addClass("search-item-number");
			
			$(this).prepend($number.html(currentPage*itemsPerPage+i+1));
		});
	}
}

//	sample: pm.iSite.search.pagerEfects();
pm.iSite.search.pagerEfects = function () {
	if (document.getElementById("search-results-pager")) {	
		var $pager = $("#search-results-pager");
		var $current = $pager.find("span.search-results-pager-current");
		
		$pager.find("a.search-results-pager-prev").hover(function(){
			$current.prev().toggleClass("page-hover");														  
		}, 
		function(){
			$current.prev().toggleClass("page-hover");
		});
		
		$pager.find("a.search-results-pager-next").hover(function(){
			$current.next().toggleClass("page-hover");														  
		}, 
		function(){
			$current.next().toggleClass("page-hover");
		});
	}
}

//	sample: pm.isite.article.handlePrintButton(".article-print");
pm.iSite.article.handlePrintButton = function () {
	
	var $printButtons = (arguments.length > 0) ? $(arguments[0]) : $(".article-print");
	
	$printButtons.each(function(){
		var $printButton = $(this);
		
		$printButton.attr("title", $printButton.text());
	});
};

//	sample: pm.isite.article.handleSendMailButton(".article-send-to-mail");
pm.iSite.article.handleSendMailButton = function () {
	
	var $mailButtons = (arguments.length > 0) ? $(arguments[0]) : $(".article-send-to-mail");
	
	$mailButtons.each(function(){
		var $mailButton = $(this);
		
		var subject = document.title + " - " + $mailButton.parents(".article").find(".article-title:first").text(); 
		
		$mailButton.attr("href", "mailto:?subject=" + subject + "&body=" + escape(window.location.href));
	});
};

/*	sample:	
*	pm.iSite.sectionTree.makeSelected({
*		navigationElement: '.navigation-tree',	//navigation element selector 
*		bubbleUp: true,	//select only current element or all element from bottom to top
*		markerClass: 'selected'
*	});
*/
pm.iSite.sectionTree.makeSelected = function () {	
	var args = (arguments.length > 0) ? arguments[0] : null;
	
	var $navigationObjects = (args && args.navigationElement) ? $(args.navigationElement) : $(".navigation-tree");
	var bubbleUp = (args && (args.bubbleUp == true || args.bubbleUp == false)) ? args.bubbleUp : true;
	var markerClass = (args && args.markerClass) ? args.markerClass : "selected";
		
	$navigationObjects.each(function(){
		var $navigationObject = $(this);
	
		$navigationObject.find("a").each(function(){
			var oLink = $(this);
			var linkSectionId = pm.utils.regexp(/sec=(\d{1,4})/, oLink.attr("href"));
			
			var linkSelect = false;
			
			if (linkSectionId.length > 0) {
				if (linkSectionId == pm.pmCurrentSectionId()) {
					linkSelect = true;
				}
			}
			else {
//Tihomir ispravio
//				if ($.trim(oLink.text()).indexOf(pmCurrentSectionName) > -1) {
				if ($.trim(oLink.text())==pmCurrentSectionName) {
					linkSelect = true;
				}
			}
			
			if (linkSelect) {
				if (bubbleUp) {
					oLink.parents('li').addClass(markerClass);
				}
				else {
					oLink.parent('li').addClass(markerClass);		
				}	
			}
		});
	});
};

/*	sample:	
*	pm.iSite.sectionTree.makeSelected({
*		navigationElement: '.first-level-navigation',	//first level navigation element selector 
*		markerClass: 'selected'
*	});
*/
pm.iSite.sectionFirstLevel.makeSelected = function () {	
	var args = (arguments.length > 0) ? arguments[0] : null;
	
	var $navigationObjects = (args && args.navigationElement) ? $(args.navigationElement) : $(".first-level-navigation");
	var markerClass = (args && args.markerClass) ? args.markerClass : "selected";
		
	$navigationObjects.each(function(){
		var $navigationObject = $(this);
	
		$navigationObject.find("a").each(function(){
			var oLink = $(this);
			var linkSectionId = pm.utils.regexp(/sec=(\d{1,4})/, oLink.attr("href"));
			
			if (linkSectionId.length > 0) {
				if (linkSectionId == pmTopSectionId) {
					oLink.addClass(markerClass);
				}
			}
			else {
				if ($.trim(oLink.text()).indexOf(pmTopSectionName) > -1) {
					oLink.addClass(markerClass);
				}
			}
			
		});
	});
}; 

/*	sample:	
*	pm.iSite.link.handleLinkTarget({
*		selector: "a.new-window, .new-window a",
*		target: "_blank"
*	});
*
*	pm.iSite.link.handleLinkTarget();
*/
pm.iSite.link.handleLinkTarget = function(){
	var args = (arguments.length > 0) ? arguments[0] : null;
	
	var target = (args && args.target) ? args.target : "_blank";
	var selector = (args && args.selector) ? args.selector : ".new-window, .new-window a";
	
	$(selector).attr("target", target);
}


/*	sample:	
*	pm.iSite.calendar.initialize({
*		selector: ".calendar"
*	});
*
*	pm.iSite.calendar.initialize();
*/
pm.iSite.calendar.initialize = function(){
	var args = (arguments.length > 0) ? arguments[0] : null;
	
	var selector = (args && args.selector) ? args.selector : "div.calendar";
	
	$(selector).find("table, tr, td, a").each(function(){
		$(this).removeAttr("style");
		
		if ($(this).attr("align") != "") {
			$(this).css("text-align", $(this).attr("align"));
		};

	});

	$(selector).find("td.CalendarSelectedDate").removeClass("CalendarSelectedDate").addClass("calendar-day-selected");
	$(selector).find("td.CalendarActiveDate").removeClass("CalendarActiveDate").addClass("calendar-day-active");
}


/********************************************/
/********** current page functions **********/
/********************************************/
//	sample: pm.page.init(homePageInitailization);
pm.page.init = function(opt) {
	return (opt) ? opt.apply() : null;
};

