function loadjktkScripts()
{
	var scripts = document.getElementsByTagName("script");
	for(var s = 0; s < scripts.length; s++)
	{
		var relPath
		var idx = scripts[s].src.indexOf("jktk.js");
		if(idx > -1 && scripts[s].src.indexOf("jkHtml.js") == -1)
		{
			relPath = scripts[s].src.substring(0, idx);
			document.write('<link type="text/css" rel="StyleSheet" href="' + relPath + 'jkStyle.css" />');
			document.write('<script type="text/javascript" src="' + relPath + 'jkHtml.js"></script>');
			document.write('<script type="text/javascript" src="' + relPath + 'jkAjax.js"></script>');
			document.write('<script type="text/javascript" src="' + relPath + 'jkForm.js"></script>');
			document.write('<script type="text/javascript" src="' + relPath + 'jkDraw.js"></script>');
			document.write('<script type="text/javascript" src="' + relPath + 'jkBox.js"></script>');
			s = scripts.length;
		}
		
	}
}
loadjktkScripts();

if(!_isIE)
    var _isIE = navigator.appName == "Microsoft Internet Explorer";

if(!Array.indexOf)
{
    Array.prototype.indexOf = function(obj)
	{
        for(var i=0; i < this.length; i++)
            if(this[i] == obj)
                return i;
        return -1;
    }
}



if(!Array.setStyle)
	Array.prototype.setStyle = function(nameArr, valueArr)
	{
		if(nameArr.length == valueArr.length)
		{
		    var valString;
			for(var e = 0; e < this.length; e++)
				for(var i = 0; i < nameArr.length; i++)
				{
				    valString = valueArr[i];
				    if(typeof(valString) == "string")
				        valString = '"' + valString + '"';
					eval('this[' + e + '].style.' + nameArr[i] + '=' + valString + ';');
			    }
		}
}

function setEvent(ele, eventName, fnc) {
    if (_isIE) {
        ele.attachEvent("on" + eventName, fnc);
        //eval("ele.on" + eventName + "=fnc");
        //alert(ele.onfocus);
    }
    else
        ele.addEventListener(eventName, fnc, true);
}
	
/*Object.prototype.getInnerHTML = function()
{
	var di = document.createElement("DIV");
	di.appendChild(this);
	return di.innerHTML;
}*/

function jktk()
{
	this._isIE = navigator.appName == "Microsoft Internet Explorer";
	//this.jkBox = new jkBox();
	this.jkDraw = new jkDraw();
	this.jkForm = new jkForm();
	//this._corner = new jktkCorner();
	this._boxCount = 0;
	document.createAttribute("jktkValidation");
	document.createAttribute("jktkRequired");
	document.createAttribute("jktkSubmitGroup");
	
	this.winH = function() { return this._isIE ? document.documentElement.clientHeight : window.innerHeight; };
	this.winW = function() { return this._isIE ? document.documentElement.clientWidth : window.innerWidth; };
	this.scrollH = function() { return !this._isIE ? window.scrollY : document.documentElement.scrollTop; };
	this.scrollW = function() { return !this._isIE ? window.scrollX : document.documentElement.scrollLeft; };
	this.curH = function() { this.winH + this.scrollH; };
	this.curW = function() { this.winW + this.scrollW; };

	this.setDefaultedInputs = function(d) {
	    var def = null;
	    for (var i = 0; i < d.length; i++) {
	        def = d[i].getAttribute("jkDefaultText");
	        if (def) {
	            if (d[i].value == "") {
	                d[i].value = def;
	                [d[i]].setStyle(["fontStyle", "color"], ["italic", "grey"]);
	            }
	            (function(defVal, ele) {
	            setEvent(d[i], "focus", function() { if (ele.value == defVal) { ele.select(); [ele].setStyle(["fontStyle", "color"], ["normal", "black"]); } });
	            })(def, d[i]);
	            (function(defVal, ele) {
	            setEvent(d[i], "blur", function() { if (ele.value == "" || ele.value == defVal) { ele.value = defVal; [ele].setStyle(["fontStyle", "color"], ["italic", "grey"]); } });
	            })(def, d[i]);
	        }
	    }
	}
	
	this.setLastScrollPos = function()
	{
        var scrollMove = 0;
        
        if(document.cookie.indexOf("curScroll") != -1 && document.cookie.substring(document.cookie.indexOf("curScroll") + 10).indexOf(";") == -1)
		    scrollMove = (document.cookie.substring(document.cookie.indexOf("curScroll") + 10));
	    else if(document.cookie.indexOf("curScroll") != -1)
		    scrollMove = (document.cookie.substring(document.cookie.indexOf("curScroll") + 10).substring(0, (document.cookie.substring(document.cookie.indexOf("curScroll") + 10).indexOf(";"))));
		/*if(this._isIE)
		    setTimeout("window.scrollBy(0, " + scrollMove + ");", 2000);
		else*/
	        window.scrollBy(0, scrollMove);
    	
	}
	
	this.saveScrollPos = function()
	{
	    var curScroll = this.scrollH();
	    var date = new Date();
	    date.setTime(date.getTime()+(100*24*60*60*1000));
	    var expires = date.toGMTString();
	    document.cookie = "curScroll=" + curScroll + "; expires=" + expires + "; path=/";
	}

	this.manageTextInputDefaults = function() {
	    var ds = document.getElementsByTagName("input");
	    var as = document.getElementsByTagName("textarea");
	    this.setDefaultedInputs(ds);
	    this.setDefaultedInputs(as);
	}

	this.clearDefaultedInputs = function(d) {
	    var def = null;
	    for (var i = 0; i < d.length; i++) {
	        def = d[i].getAttribute("jkDefaultText");
	        if (def && d[i].value == def) {
	            d[i].value = "";
	        }
	    }
	}

	this.getValueNotDefault = function(ele)
	{
	    var def = ele.getAttribute("jkDefaultText");
	    var ret = ele.value;
	    if (def && ret == def)
	        ret = "";
	    return ret;
	}

	this.clearTextInputDefaults = function() {
	    var ds = document.getElementsByTagName("input");
	    var as = document.getElementsByTagName("textarea");
	    this.clearDefaultedInputs(ds);
	    this.clearDefaultedInputs(as);	    
	}
}

//-----------------------------------------------------------DRAG AND DROP-----------------------------------------------------------------------//
var dragObj = null;
var tmpNodeArr = new Array();
jktk.prototype.dragStart = function(event, id, keepElementId)
{
	var divid = id;
	dragObj = new Object();
	dragObj.elNode = document.getElementById(divid);
	if(dragObj.elNode != null)
	{
	    var x = this._isIE ? (window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft) : (event.clientX + window.scrollX);
	    var y = this._isIE ? (window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop) : (event.clientY + window.scrollY);
	
	    //hide the contents and set a border for faster dragging
	    var idx = 0;
	    var tmpNode = document.getElementById(keepElementId).cloneNode(true);
	    while(dragObj.elNode.childNodes.length > 0)
	    {
		    tmpNodeArr[tmpNodeArr.length] = dragObj.elNode.childNodes[idx];
		    dragObj.elNode.removeChild(dragObj.elNode.childNodes[idx]);
	    }
	    dragObj.elNode.appendChild(tmpNode);
    	
	    //dragObj.elNode.style.border = "solid 1px black";
	    dragObj.cid = id;
	    dragObj.cursorStartX = x;
	    dragObj.cursorStartY = y;
	    dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
	    dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10); 
	    if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
	    if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;
	    var self = this;
	    if (this._isIE) 
	    {
		    document.attachEvent("onmousemove", self.dragGo);
		    document.attachEvent("onmouseup",  self.dragStop);
		    window.event.cancelBubble = true;
		    window.event.returnValue = false;
	    }
	    else 
	    {
		    document.addEventListener("mousemove", self.dragGo, true);
		    document.addEventListener("mouseup",   self.dragStop, true);
		    event.preventDefault();
	    }
	}
}
    
jktk.prototype.dragGo = function(event)
{
	if(dragObj != null)
	{
		this._isIE = navigator.appName == "Microsoft Internet Explorer";
		var x = this._isIE ? (window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft) : (event.clientX + window.scrollX);
		var y = this._isIE ? (window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop) : (event.clientY + window.scrollY);
		//dragObj = null;
		dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
		dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";
		if (this._isIE) 
		{
			window.event.cancelBubble = true;
			window.event.returnValue = false;
		}
		else
			event.preventDefault();
	}
}

jktk.prototype.dragStop = function(event)
{
	if(dragObj != null)
	{
		this._isIE = navigator.appName == "Microsoft Internet Explorer";
		var x = this._isIE ? (event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft - dragObj.cursorStartX) : (event.clientX + window.scrollX - dragObj.cursorStartX);
		var y = this._isIE ? (event.clientY + document.documentElement.scrollTop + document.body.scrollTop - dragObj.cursorStartY) : (event.clientY + window.scrollY - dragObj.cursorStartY);
		//show the elements again
		dragObj.elNode.removeChild(dragObj.elNode.childNodes[0]);
		dragObj.elNode.style.border = "";
		for(var i = 0; i < tmpNodeArr.length; i++)
		{
			dragObj.elNode.appendChild(tmpNodeArr[i]);
		}
		tmpNodeArr = new Array();
		dragObj = null;
		var dgo = document.onmousemove;
		var dst = document.onmouseup;
		if (this._isIE) 
		{
		  document.detachEvent("onmousemove", dgo);
		  document.detachEvent("onmouseup", dst);
		}
		else
		{
		  document.removeEventListener("mousemove", dgo, true);
		  document.removeEventListener("mouseup", dst, true);  
		}
	}
}