/* core.js
*  (c) EP Visual Design Inc 2010
*-------------------------------------*/

window.Core = window.Core || {};

var $i;

(function() {

	$i = this;

	$i.utils = {
		// add simple event
		addEventSimple: function(obj,evt,fn)
		{
			if(obj.addEventListener)
				obj.addEventListener(evt,fn,false);
			else if (obj.attachEvent)
				obj.attachEvent('on'+evt,fn);
		},

		// remove simple event
		removeEventSimple: function(obj,evt,fn)
		{
			if(obj.removeEventListener)
				obj.removeEventListener(evt,fn,false);
			else if(obj.detachEvent)
				obj.detachEvent('on'+evt,fn);
		},

		// add advanced event listener
		AddEventListener: function(element, eventType, handler, capture)
		{
			if (element.addEventListener)
				element.addEventListener(eventType, handler, capture);
			else if (element.attachEvent)
				element.attachEvent("on" + eventType, handler);
		},

		// find browser inner width
		getWidth: function()
		{
			if (this.webkit419) return this.innerWidth;
			if (this.opera) return document.body.clientWidth;
			return document.documentElement.clientWidth;
		},

		// find browser inner height
		getHeight: function()
		{
			if (this.webkit419) return this.innerHeight;
			if (this.opera) return document.body.clientHeight;
			return document.documentElement.clientHeight;
		},

		// center window at 1024 x 768
		maximizeWin: function()
		{
			if (top.window.screen) {
				var aw = top.window.screen.availWidth;
				var ah = top.window.screen.availHeight;
					var at = 0;
					var al = 0;
					if(aw>1024)
					{
						al = ((aw-1024)/2);
						aw = 1024;
					}
					if(ah>800)
					{
						at = ((ah-800)/2);
						ah = 800;
					}
				top.window.moveTo(al, at);
				top.window.resizeTo(aw, ah);
			}
		},

		// find element by ID
		gid: function(el)
		{
			element = document.getElementById(el)
			//if(!element) alert('can not find element: ' + el);
			return element;
		},

		// add class name to element
		addClass: function(element,elClass)
		{
			var curr = element.className;
			if (!new RegExp(("(^|\\s)" + elClass + "(\\s|$)"), "i").test(curr)) {
				element.className = curr + ((curr.length > 0) ? " " : "") + elClass;
			}
			return element;
		},

		// remove class name from element
		removeClass: function(element,elClass)
		{
			if(elClass) {
				element.className = element.className.replace(elClass,'');
			} else {
				element.className = '';
				element.removeAttribute('class');
			}
			return element;
		},

		// get URL Parameter
		getURLParameter: function(name)
		{
			name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
			var regexS = "[\\?&]"+name+"=([^&#]*)";
			var regex = new RegExp(regexS);
			var results = regex.exec(window.location.href);
			if(results==null)
				return '';
			else
				return results[1];
		},

		pageName: function(  )
		{
			thePage = unescape(location.href);
			if(thePage.indexOf('?') !== -1)
				thePage = thePage.substring(0,thePage.indexOf('?'));
			thePage = thePage.substr(thePage.lastIndexOf('/') + 1);
			thePage = thePage.substr(0,thePage.lastIndexOf('.'));
			return thePage;
		},

		// Attatch CSS or JavaScript
		// loadjscssfile("mystyle.css", "css");
		// loadjscssfile("javascript.php", "js");
		loadjscssfile: function(filename,filetype)
		{
			 if (filetype=='js')
			 {
			 	//if filename is a external JavaScript file
			 	var fileref=document.createElement('script')
			  	fileref.setAttribute('type','text/javascript')
			  	fileref.setAttribute('src', filename)
			 }
			 else if (filetype=='css')
			 {
				//if filename is an external CSS file
				var fileref=document.createElement('link')
				fileref.setAttribute('rel', 'stylesheet')
				fileref.setAttribute('type', 'text/css')
			 	fileref.setAttribute('href', filename)
			 }

			 if (typeof fileref!='undefined')
			  document.getElementsByTagName('head')[0].appendChild(fileref)
		},

		getIEVersionNumber: function(  )
		{
			var ua = navigator.userAgent;
			var MSIEOffset = ua.indexOf('MSIE ');

			if ( MSIEOffset == -1 )
				return 0;
			else
				return parseFloat(ua.substring(MSIEOffset + 5, ua.indexOf(';', MSIEOffset)));

		},

		// hide iphone load bar
		hideURLBar: function()
		{
			setTimeout(function() {
				window.scrollTo(0,1);
			}, 0);
		}
	},

	$i.storage = {

		testStorage: function(  )
		{
			if ( localStorage )
				return 'Local Storage: Suppored';
			else
				return 'Local Storage: Unsupported';
		},

		restoreValue: function(item)
		{
			return localStorage.getItem(item);
		},

		setValue: function(item, value)
		{
			this.clearValue(item);
			localStorage.setItem(item, value);
		},

		clearValue: function(value)
		{
			localStorage.removeItem(value);
		},

		clearAll: function()
		{
			localStorage.clear();
		},

		sessionSetItem: function( item, value )
		{
			sessionStorage.setItem(item, value);
		},

		sessionGetItem: function( item )
		{
			return sessionStorage.getItem( item );
		},

		sessionRemoveItem: function( item )
		{
			sessionStorage.removeItem(item);
		},

		createCookie: function(name,value,days)
		{
			if (days) {
				var date = new Date();
				date.setTime(date.getTime()+(days*24*60*60*1000));
				var expires = "; expires="+date.toGMTString();
			}
			else var expires = "";
			document.cookie = name+"="+value+expires+"; path=/";
		},

		readCookie: function(name)
		{
			var nameEQ = name + "=";
			var ca = document.cookie.split(';');
			for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1,c.length);
				if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
			}
			return null;
		},

		eraseCookie: function(name)
		{
			createCookie(name,'',-1);
		}

	},

	$i.listeners = {

	},

	$i.init = function()
	{

	}

 	//window.addEventListener('load', $i.init, false);

}).call(window.Core);
