var PlayataBrowser = {};
PlayataBrowser.ie 			= (navigator.appName.indexOf("Microsoft")!=-1);
PlayataBrowser.ie6			= (PlayataBrowser.ie && navigator.appVersion.indexOf("MSIE 6")!=-1);
PlayataBrowser.ie7			= (PlayataBrowser.ie && navigator.appVersion.indexOf("MSIE 7")!=-1);
PlayataBrowser.opera 		= !!window.opera;
PlayataBrowser.safari 		= (navigator.userAgent.search(/Safari/)!=-1);
PlayataBrowser.gecko 		= (!PlayataBrowser.safari && navigator.appName=="Netscape");
PlayataBrowser.chrome 		= (navigator.appVersion.indexOf("Chrome")!=-1);

function pge(id) {
	return document.getElementById(id);
}

// create element
function pce(tag, styles) {
	var el = document.createElement(tag), s, i;
	if(styles) {
		for(s in styles) {
			if(s.charCodeAt(0) == 95) {
				el[s.substring(1)] = styles[s];
			} else {
				el.style[s] = styles[s];
			}
		}
	}
	if(arguments.length > 2) {
		for(i=2; i<arguments.length; i++) {
			if(arguments[i] && typeof(arguments[i]) == 'object') {
				el.appendChild(arguments[i]);
			} else {
				el.appendChild(document.createTextNode(arguments[i]));
			}
		}
	}
	return el;	
}

// no data
function pnd() {
	return pce('span');
}

// create text
function pct(txt) {
	if(txt === '') {
		return pnd();
	}

	return document.createTextNode(txt);
}

// append child
function pac(element) {
	if(arguments.length > 1) {
		for(var i=1; i<arguments.length; i++) {
			if(typeof(arguments[i]) == 'object') {
				element.appendChild(arguments[i]);
			} else {
				element.appendChild(document.createTextNode(arguments[i]));
			}
		}
	}
}

//clear childs
function pcl(el) {
	while(el.firstChild) {
		el.removeChild(el.firstChild);
	}
}

//remove child
function prmc(element) {
	if(arguments.length > 1) {
		for(var i=1; i<arguments.length; i++) {
			element.removeChild(arguments[i]);
		}
	}
}

// replace child
function prc(el,ch) {
	pcl(el);
	if(arguments.length > 1) {
		for(var i=1; i<arguments.length; i++) {
			if(typeof(arguments[i]) == 'object') {
				el.appendChild(arguments[i]);
			} else {
				el.appendChild(document.createTextNode(arguments[i]));
			}
		}
	}
}

//add event
function pae(el,ev,f) {
	if(el.attachEvent){
		el.attachEvent("on"+ev,f);
	}else{
		el.addEventListener(ev,f,false);
	}
}

Function.prototype.pbind=function(){
	var func, args, obj, i, l;
	func = this;
	args = [];
	for(i=0,l=arguments.length; i<l; i++) {
		args.push(arguments[i]);
	}
	obj = args.shift();
	return function(){
		for(i=0,l=arguments.length; i<l; i++) {
			args.push(arguments[i]);
		}
		return func.apply(obj,args);
	};
};

// import object
function pimport(a,b) {
	for(var i in b){
		if(true) {
			a[i]=b[i];
		}
	}
}

function pcmp_string(a,b){
	if(a==b){
		return 0;
	}
	if(a===null){
		return -1;
	}
	if(b===null){
		return 1;
	}
	return a<b?-1:1;
}

function pcmp_number(a,b,f){
	return a[f]-b[f];
}

String.prototype.p_startsWith = function(str) 
{
	return (this.match("^"+str)==str);
};

String.prototype.p_endsWith = function(str) 
{
	return (this.match(str+"$")==str);
};

Array.prototype.p_contains = function (element) 
{
	for (var i = 0; i < this.length; i++) {
		if (this[i] == element) {
			return true;
		}
	}
	
	return false;
};

Array.prototype.p_remove = function(from, to) {
	  var rest = this.slice((to || from) + 1 || this.length);
	  this.length = from < 0 ? this.length + from : from;
	  return this.push.apply(this, rest);
};

function p_getMousePosX(event)
{
	if(PlayataBrowser.ie) {
		if (window.event) {
			return window.event.clientX;
		} else {
			return 0;
		}
	} else {
		return event.pageX;
	}
}

function p_getMousePosY(event)
{
	if(PlayataBrowser.ie) {
		if (window.event) {
			return window.event.clientY;
		} else {
			return 0;
		}
	} else {
		return event.pageY;
	}
}

function p_getScrollX() {

	if(PlayataBrowser.gecko || PlayataBrowser.opera) {
		return window.pageXOffset;
	} else if(document.documentElement && document.documentElement.scrollLeft) {
		return document.documentElement.scrollLeft;
	} else if(document.body && document.body.scrollLeft) {
		return document.body.scrollLeft;
	} else {
		return 0;
	}
}

function p_getScrollY() {

	if(PlayataBrowser.gecko || PlayataBrowser.opera) {
		return window.pageYOffset;
	} else if(document.documentElement && document.documentElement.scrollTop) {
		return document.documentElement.scrollTop;
	} else if(document.body && document.body.scrollTop) {
		return document.body.scrollTop;
	} else {
		return 0;
	}
}

function p_getWindowWidth() {

  	if(window.innerWidth) {
	    return window.innerWidth;
  	} else if(document.documentElement && document.documentElement.clientWidth) {
    	return document.documentElement.clientWidth;
	} else if(document.body && document.body.clientWidth) {
		return document.body.clientWidth;
	} else {
    	return 0;
	}
}

function p_getWindowHeight() {

  	if(window.innerHeight) {
   		return window.innerHeight;
  	} else if(document.documentElement && document.documentElement.clientHeight) {
    	return document.documentElement.clientHeight;
	} else if(document.body && document.body.clientHeight) {
		return document.body.clientHeight;
  	} else {
    	return 0;
  	}
}

function p_getElementLeftOffset(element)
{
	var result=element.offsetLeft;
	
	while((element=element.offsetParent) !== null) {
		result+=element.offsetLeft;
	}
		
	return result;
}

function p_getElementTopOffset(element)
{
	var result=element.offsetTop;
	
	while((element=element.offsetParent) !== null) {
		result+=element.offsetTop;
	}
	
	return result;
}

function p_getClientSize()
{
    var width=0,height=0;
    
    if(typeof window.innerWidth=="number")
    {
        width=window.innerWidth;
        height=window.innerHeight;
    }
    else
    {
        if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight))
        {
            width=document.documentElement.clientWidth;
            height=document.documentElement.clientHeight;
        }
        else
        {
            if(document.body&&(document.body.clientWidth||document.body.clientHeight))
            {
                width=document.body.clientWidth;
                height=document.body.clientHeight;
            }
        }
    }

    return {x:width,y:height};
}

function p_addListener(element,eventName,eventCallback,useCapture) {
	var addListener;
	
	if(window.addEventListener)
	{
		addListener=function(F,G,H,E)
		{
			E = E || false;
			F.addEventListener(G,H,E);
			return true;
		};
		
		return addListener(element,eventName,eventCallback,useCapture);
	}
	else
	{
		if(window.attachEvent)
		{
			addListener=function(F,G,H,E)
			{
				F.attachEvent("on"+G,H);
				return true;
			};
			
			return addListener(element,eventName,eventCallback,useCapture);
		}
		else
		{
			addListener=function(F,G,H,E)
			{
				return false;
			};
			
			return addListener(element,eventName,eventCallback,useCapture);
		}
	}
}

function p_redirect(url) {
	window.location.href=url;	
}

function p_refresh() {
	window.location.reload(true);	
}

function p_getRequestParam(parameterName) {
	var queryString = window.top.location.search;
	var parameterName = parameterName + "=";
	
	if (queryString.length > 0) {
		begin = queryString.indexOf("?"+parameterName);
		
		if (begin == -1) {
			begin = queryString.indexOf("&"+parameterName);
		}
		
		parameterName.substring(1);

		if (begin != -1) {
			begin += parameterName.length + 1;
			end = queryString.indexOf("&", begin);
	
			if (end == -1) {
				end = queryString.length;
			}

			return unescape(queryString.substring(begin, end));
		}
	}

	return null;
}

function p_writeCookie(name, value) {
	var d = new Date();
	d = new Date(d.getTime() +1000*60*60*24*365); // 1 year
	document.cookie = name + '=' + value + '; expires='+d.toGMTString()+'; path=/';
};

function p_readCookie(name) {
	var nameEQ, ca, i, c;
	nameEQ = name + "=";
	ca = document.cookie.split(';');
	for(i=0;i < ca.length;i++) {
		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;
};

function p_preventLink(element)
{
	element.removeAttributeNode(element.getAttributeNode("href"));
	return false;
};

function p_createShadowText(text, width, align, foreColor, shadowColor)
{
	var s, x, y, div;

	if (!foreColor) {
		foreColor = 'white';
	}

	if (!shadowColor) {
		shadowColor = 'black';
	}
	
	s = pce('span',{bottom:'0px',right:'0px',margin:'1px 3px'});
	for(x =-1;x<=1;x++) {
		for(y =-1;y<=1;y++) {
			if (width && align) {
				div = pce('div',{width:width, align:align, position:'absolute',whiteSpace:'nowrap',top:y+'px',left:x+'px'},text);
			} else {
				div = pce('div',{position:'absolute',whiteSpace:'nowrap',top:y+'px',left:x+'px'},text); 	
			}
			if(x===0 && y===0) {
				div.style.zIndex= 10;
				div.style.color = foreColor;
			} else {
				div.style.color = shadowColor;
			}
			pac(s,div);
		}
	}
	return s;
};

// number_format(number, decimals, comma, formatSeparator)
function p_NumberFormat(a, b, c, d) {
	var e, f, g, h, i, j, k;
	a = a.toString();
	k = '';
	
	if(a.indexOf('-') == 0) {
		k = '-';
		a = a * -1;
	}
	 
	a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
	e = a + '';
	f = e.split('.');
	
	if(!f[0]) {
		f[0] = '0';
	}
	
	if(!f[1]) {
		f[1] = '';
	}
	
	if(f[1].length < b) {
		g = f[1];
		for(i = f[1].length + 1; i <= b; i++) {
			g += '0';
		}
		f[1] = g;
	}
	
	if(d != '' && f[0].length > 3) {
		h = f[0];
		f[0] = '';
		for(j = 3; j < h.length; j += 3) {
			i = h.slice(h.length - j, h.length - j + 3);
			f[0] = d + i +  f[0] + '';
		}
	
		j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
		f[0] = j + f[0];
	}
	
	c = (b <= 0) ? '': c;
	return k + f[0] + c + f[1];
};

function p_getClientDateTime(offset) {
	var arday = new Array(p_('Sunday'),p_('Monday'),p_('Tuesday'),p_('Wednesday'),p_('Thursday'),p_('Friday'),p_('Saturday'));
	var armonth = new Array(p_('January'),p_('February'),p_('March'),p_('April'),p_('May'),p_('June'),p_('July'),p_('August'),p_('September'), p_('October'),p_('November'),p_('December'));
	var d = new Date();
	
	if (offset) {
		var t = d.getTime()+(offset);
		d.setTime(t);
	}

	var day = d.getDay();
	var date = d.getDate();
	var month = d.getMonth();
	var year = 1900 + d.getYear();
	var hour = d.getHours();
	
	if (hour < 10) {
		hour = "0" + hour;
	}
	
	var minute	= d.getMinutes();
	
	if (minute < 10) {
		minute = "0" + minute; 
	}
	
	return {datetime:d, day:arday[day], month:armonth[month], date:date, year:year, hour:hour, minute:minute};
}