var __$__ = true;
var __NOTE__ = true;
var __WARNING__ = true;
var __ERROR__ = true;
var __SHOW_JS_LOAD__ = 0;

//-----------------------------------------------------------------------------------
function $() {
	var results = [], element;
	
	for (var i = 0; i < arguments.length; i++) {
		element = arguments[i];
		if( typeof element == 'string' )
			element = document.getElementById(element);
			
		if( !isObj(element) ){
			if( __$__ ) alert(element + ' => ' + typeof element);
			element = {};
		}

		results.push(element);
	}
	
	return results.length < 2 ? results[0] : results;
} // $()


document.getElementsByClassName = function(className, parentElement, tagName) {
	var children = ($(parentElement) || document.body).getElementsByTagName((tagName || '*'));
	var elements = [];
	
	for(var i = 0; i < children.length; i++){
		if( children[i].className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")) )
			elements.push(children[i]);
	}
	
	return elements;
} // document.getElementsByClassName();


document.getElementsByInputType = function(type, parentElement){
	var children = ($(parentElement) || document.body).getElementsByTagName('input');
	var elements = [];
	
	for(var i = 0; i < children.length; i++){
		if( children[i].type == type )
			elements.push(children[i]);
	}
	
	return elements;
} // document.getElementsByInputType();


document.getElementsByInputName = function(name, parentElement){
	var children = ($(parentElement) || document.body).getElementsByTagName('input');
	var elements = [];
	
	for(var i = 0; i < children.length; i++){
		if( children[i].name == name )
			elements.push(children[i]);
	}
	
	return elements;
} // document.getElementsByInputName();

//-----------------------------------------------------------------------------------


function is_undefined(xvar){
	return typeof xvar == 'undefined' ? true : false;
} // is_undefined();


function Note(text){
	if( __NOTE__ ) alert(text);
} // Note();


function Warning(text){
	if( __WARNING__ ) alert(text);
} // Note();


function Error(text){
	if( __ERROR__ ) alert(text);
} // Note();


function js_isLoaded(file){
	if( __SHOW_JS_LOAD__ ) alert(file);
} // js_isLoaded();


function isObj(obj){
	return (typeof obj == 'object') && obj;
} // isObj();


function IDNumber(strID){
	NID = '';
	for(var i = 0; i < strID.length; i++){
		NID += strID.charCodeAt(i);
	}
	return NID;
} // IDNumber();


function ColorToHex(R, G, B){
	return ('#'+parseInt(R, 10).toString()+parseInt(G, 10).toString()+parseInt(B, 10).toString());
} // HexToRGB();


function StringToCode(str, s){
	if( isDefined(str) ){
		str = ''+str;
		var code = '';
		for(var i = 0; i < str.length; i++){
			d = (str.charCodeAt(i) > 500 ? 848 : 0);
			code += s + '' + (str.charCodeAt(i) - d);
		}
	}
	return code.substring(1);
} // StringToCode();


function addListener(obj, Event, callback){
	var x = arguments.length == 4 ? arguments[4] : false;
	Event = Event.toLowerCase();
	
	if( !isObj(obj) ) return false;
	
	if( obj.attachEvent )
		obj.attachEvent(Event, callback);
	else
		obj.addEventListener(Event.substr(2), callback, x);
		
} // addListener();



function removeListener(obj, Event, callback){
	var x = arguments.length == 4 ? arguments[3] : false;
	Event = Event.toLowerCase();
	
	if( !isObj(obj) ) return false;
	
	if( obj.detachEvent )
		obj.detachEvent(Event, callback);
	else
		obj.removeEventListener(Event.substr(2), callback, x);
		
} // removeListener();


function setCookie(name, value, time, path){
	var time = is_undefined(time) ? 0 : time;
	var path = is_undefined(path) ? '/' : path;
	var expires = new Date();
	time = expires.getTime()+(time*1000);

	expires.setTime(time);
	document.cookie = name+'='+value+'; expires='+expires.toGMTString() +"; path="+path;
} // setCookie();


function getCookie(name) {
	var regExp = name+"=([^;=]*)";
	var ret = document.cookie.match(regExp);

	return (ret == null) ? null : unescape(ret[1]);
} // GetCookie();


var Element = {
	
	visible: function(element) {
		return $(element).style.display != 'none';
	}, // visible();

	
	toggle: function() {
		for (var i = 0; i < arguments.length; i++) {
			var element = $(arguments[i]);
			Element[Element.visible(element) ? 'hide' : 'show'](element);
		}
	}, // toggle();

	
	hide: function() {
		for (var i = 0; i < arguments.length; i++) {
			var element = $(arguments[i]);
			element.style.display = 'none';
		}
	}, // hide();

	
	show: function() {
		for (var i = 0; i < arguments.length; i++) {
			var element = $(arguments[i]);
			element.style.display = '';
		}
	}, // show();
	
	
	addClassName: function(className, obj){
		var classes = obj.className.split(' ');
			classes.push(className);
		obj.className = classes.join(' ');
	}, // addClassName();
	
	
	removeClassName: function(className, obj){
		obj.className = obj.className.replace(new RegExp("(^|\\s)" + className + "(\\s|$)"), '');
	}, // removeClassName();
	
	hasClassName: function(className, obj){
		return obj.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")) != null;
	}, // hasClassName();

	
	getWidth: function(element) {
		element = $(element);
		return element.offsetWidth;
	}, // getHeight();

	getHeight: function(element) {
		element = $(element);
		return element.offsetHeight;
	}, // getHeight();
	
	
	create: function(tagName, attrs){
		var elmObj = document.createElement(tagName);
		var attr, newAttr;

		if( attrs ){
			for( attr in attrs ){
				if( !isObj(attrs[attr]) ){
					newAttr = document.createAttribute(attr);
					newAttr.nodeValue = attrs[attr];
						
					elmObj.setAttributeNode(newAttr);
				}
			}
		}
		
		return elmObj;
	}, // create();
	
	
	remove: function(element) {
		element = $(element);
		element.parentNode.removeChild(element);
	}, // remove();

	
	removeChilds: function(node){
		while( node.childNodes.length != 0 ){
			node.removeChild(node.childNodes[0]);
		}
	},
	
	
	ParentNodeByTagName: function(node, TagName){
		if( isObj(node.parentNode) ){
			if( node.parentNode.nodeName == TagName.toUpperCase() )
				return node.parentNode;
			else
				return this.ParentNodeByTagName(node.parentNode, TagName);
		}
		
		return false;
	},  // ParentNodeByTagName();
	
	
	ParentNodeByID: function(node, id){
		if( isObj(node.parentNode) ){
			if( node.parentNode.id == id )
				return node.parentNode;
			else
				return this.ParentNodeByID(node.parentNode, id);
		}
		
		return false;	
	}, // ParentNodeByID();
	
	
	ParentNodeByAttr: function(node, attr){
		var found = true;
		if( isObj(node.parentNode) ){
			for( var a in attr ){
				if( node[a] == attr[a] )
					found = false;
			}
			
			if( found )
				return node.parentNode;
			else
				return this.ParentNodeByAttr(node.parentNode, attr);
		}
		
		return false;		
	} // ParentNodeByAttr();

} // Element();


var Basic = {
	mouse: {
				X: 0,
				Y: 0,
				downX: 0,
				downY: 0,
				upX: 0,
				upY: 0,
				obj: false,
				downObj: false,
				upObj: false
			},
	DragObj: false,
	
	OnMouseMove: function(e){
		if( e.srcElement ){
			Basic.mouse.X = e.x;
			Basic.mouse.Y = e.y;
			Basic.mouse.obj = e.srcElement;
		} else {
			Basic.mouse.X = e.clientX;
			Basic.mouse.Y = e.clientY;
			Basic.mouse.obj = e.target;
		}
		
		if( isObj(Basic.DragObj) ){
			Basic.DragObj.Move();
		}
	}, // OnMouseUp();
			
			
	OnMouseDown: function(){
		Basic.mouse.downX = Basic.mouse.X;
		Basic.mouse.downY = Basic.mouse.Y;
		Basic.mouse.downObj = Basic.mouse.obj;
	}, // OnMouseDown();
	

	OnMouseUp: function(){
		Basic.mouse.upX = Basic.mouse.X;
		Basic.mouse.upY = Basic.mouse.Y;
		Basic.mouse.upObj = Basic.mouse.obj;

		if( isObj(Basic.DragObj) ){
			Basic.DragObj.Stop();
		}
	}, // OnMouseDown();
	
	MoveRow: function(idTable, fromIndex, toIndex){
		var Table = $(idTable);
		if( !isObj(Table) ) return false;
		
		if( Table.moveRow ){
			if( toIndex > fromIndex ) toIndex--;
			Table.moveRow(fromIndex, toIndex);
		} else {
			if( toIndex < fromIndex ) fromIndex++;
			Table.insertRow(toIndex);
			
			Table.rows[toIndex].className = Table.rows[fromIndex].className;
			Table.rows[toIndex].innerHTML = Table.rows[fromIndex].innerHTML;
			
			Table.deleteRow(fromIndex);
			if( toIndex > fromIndex ) toIndex--;
		}
		
		return toIndex;
	}, // MoveRow();
	
	
	Init: function(){
		
		addListener(document, 'onMouseMove', this.OnMouseMove);
		addListener(document, 'onMouseDown', this.OnMouseDown);
		addListener(document, 'onMouseUp', this.OnMouseUp);
		
	} // Init()

	
} // END Basic();


function Debug(){
	var argumentsStr = ''
	for(var i = 0; i < arguments.length; i++){
		if( arguments[i] != 'DEBUG_STR_MODE' && arguments[i] != 'DEBUG_DIV_MODE' )
			argumentsStr += arguments[i]+', ';
	}
	
	argumentsStr = argumentsStr.substr(0, argumentsStr.length-2);
	
	if( arguments[arguments.length-1] == 'DEBUG_STR_MODE' )
		return argumentsStr;
	else if( arguments[arguments.length-1] == 'DEBUG_DIV_MODE' )
		$('Debug').innerHTML = (argumentsStr + '<br />' + $('Debug').innerHTML);
	else
		alert(argumentsStr);
} // Debug();


function LocalRedirect(url){
	document.location.href = url;
} // LocalRedirect();


Object.prototype.merge = function(arr){
	for(var i = 0; i < arr.length; i++)
		this.push(arr[i])
		
	return this;
} // Object.prototype.merge();



String.prototype.toObject = function(){
	var obj = {}, match = this.split(';');
	
	if( match != null ){
		for(var j = 0; j < match.length; j++){
			attr = match[j].replace(/[\s|\t|\r|\n]+/, '').split(/:\s?/);
			if( attr.length == 2 )
				obj[attr[0]] = attr[1];
		}
	}
	
	return obj;
} // String.prototype.toObject();


cloneImage = function(parentImage){
	var newImage = Element.create('img');
	
	newImage.src = parentImage.src;
	newImage.alt = parentImage.alt;
	newImage.width = parentImage.width;
	newImage.height = parentImage.height;
	newImage.vspace = parentImage.vspace;
	newImage.hspace = parentImage.hspace;
	newImage.border = parentImage.border;
	newImage.align = parentImage.align;
	
	return newImage;
}

function ShowImagePopup(img_src, img_popup_src,popup_alt,header,footer,scrol,param)
{
	var h=0;
	var w=0;  
	var popup= new Image();
	popup.src=img_popup_src;
	//alert(popup.src);
	h=popup.height;
	w=popup.width
	//alert(h+'-----'+w);
	var src_popup="/popuptmp.php?src="+img_popup_src+"&alt="+popup_alt+"&popup=Y";
	if(header)
	{
		src_popup=src_popup+"&header=Y";
		h=h+162;
		w=w+40;	
	}
	if(footer)
	{
		src_popup=src_popup+"&footer=Y"; 
		h=h+26;
	}			
	document.write('<a href="javascript: void(0)" onclick="window.open(\''+src_popup+'\',\'\',\'width='+w+',height='+h+',toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,scrollbars='+scrol+'\');"><img src='+img_src+' '+param+'></a>');
	
}

Basic.Init();

js_isLoaded('default.js');
