
ask = function(t,destination){
	var val,ty = typeof(t);
	if(ty == "string"||ty == "boolean"||ty == "number"||ty == "undefined"){
		val = "type = "+ty+", value = \""+t+"\"";
	}else{
		val = "type = \""+ty+"\";\nvalues = {";
		for(var attr in t){
			var sty = typeof(t[attr]),num=0;
			val +="\n  "+attr+" : ";
			for(var attrr in t[attr]) num++; 
			if(sty=="function"||sty=="object"){
				if(num==1&&ask.isGecko) num--;
				if(num==1){
					val += "type = \""+sty+"\""+", has "+num+" child";
				}else if(num>1){
					val += "type = \""+sty+"\""+", has "+num+" children";
				}else{
					val += "type = \""+sty+"\""+", has no child";
				}
			}else{
				val +=t[attr];
			};
		}
		val+="\n};";
	}
	if(destination){
		val = val.replaceAll("<","&lt;");
		val = val.replaceAll(">","&gt;");
		$(destination).innerHTML = "<pre>"+val+"<pre>";
	}else{
		alert(val);
	}
}

ask.$ = function(el){
	if(typeof(el)=="object") return el;
	if(typeof(el)=="string"){return document.getElementById(el);}
	return null;
}

ask.$C = function(className,parent){
	var i, j, eltClass,pa=parent||window.document;
	var objAll = pa.getElementsByTagName ? pa.getElementsByTagName("*") : pa.all;
	var objCN = new Array();
	for (i = 0; i < objAll.length; i++) {
		eltClass = objAll[i].className.split(/\s+/);
		for (j = 0; j < eltClass.length; j++) {
			if (eltClass[j] == className) {
				objCN.push(objAll[i]);
				break;
			}
		}
	}
	return objCN;
};

ask.$H = function(element){
	var a={};
	a.refer = ask.$(element); 
	ask.extend(a,ask.extensionObject);
	return a;
}
ask.extend = function(obj,source){
  for (var pro in source)
    obj[pro] = source[pro];
  return obj;
}

ask.extend(Function.prototype,{
	bind: function() {
    var func = this,
    	arg = ask.toArray(arguments),
    	object = arg.shift();
    return function(event) {return func.apply(object, [event || window.event].concat(arg));}
  }
});

ask.extend(Array.prototype,{
	compact : function(){
		var val=[]; 
		for(var i=0;i<this.length;i++){
			if(this[i]) val.push(this[i]);
		}
		return val;
	},
	find : function(value){//a
		for(var i = 0;i<this.length;i++){
			if(this[i]==value) return i;
		}
		return -1;
	},

	exchange : function(sub1,sub2){//a
		var _sub1 = this[sub1],_sub2=this[sub2];
		this[sub1]=_sub2;
		this[sub2]=_sub1;
		return this;
	}
});

ask.extend(Math,{
	arch :	function(posi,width,area){
		var _half = width/2,posi = posi-_half,
		maxHeight =(area*2)/Math.PI/_half;
		return Math.sqrt((1-Math.pow(posi,2)/Math.pow(_half,2))*Math.pow(maxHeight,2));
	},
	reverse : function(number){
		return (number >= 0 ? (number-(number)*2):Math.abs(number));
	}
});

ask.initialize =function(){
var $ = ask.$;

ask.extend(ask,{
	emptyFunction : function(){},
	
	isIE : (document.documentElement.getAttribute("style") ==document.documentElement.style),
	
	isOpera : !!window.opera,
		
	isGecko : navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
	
	isSafari : navigator.userAgent.indexOf('AppleWebKit/') > -1,
		
	isNumber : function(val){
		return typeof val === "number";
	},
		
	isNumberString : function(val){
		if(ask.isNumber(val)) return true;
		return (!val.match(/[^0-9]/)) ?true:false;
	},
			  
	isInteger : function(val){
		if(!ask.isNumberString(val)) return false;
		if(Math.floor(val) != val) return false;
		return true;
	},
	
	isElement: function(object) {
   	return object && object.nodeType == 1;
	},
	  
	isBoolean : function(val){
		return typeof val === "boolean";
	},
		
	isArray : function(val){
		return ask.isObject(val) && "splice" in val && "join" in val ;
	},
		
	isString : function(val){
		return typeof val === "string";
	},
	
	isFunction : function(val){
		return typeof val === "function";
	},
		
	isObject : function(val){
		return typeof val ==="object";
	},
	
	isNull :function(val){
		return typeof val === "null";
	},
	
	isUndefined: function(val) {
   	return typeof val === 'undefined';
   },
	
	isInRange : function(val,r1,r2){
		if(ask.isNumber(r1)&&ask.isNumber(r2)&&ask.isNumber(val)){
			if(r1 <= r2){ 
				return (r1<=val&&r2>=val);
			}else{
				return (r2<=val&&r1>=val);
			}
		}else{
			return false;
		}
	},
		
	isLocalURL : function(urlStr){
		if(urlStr.indexOf("http")==0){
			if(urlStr.split("/")[2].indexOf(window.location.host) == -1){
				return false;
			}
		}
		return true;
	}
});

ask.extend(String.prototype,{
	unitEscape : function(){
		return parseInt(this);
	},
	
	trim : function(){
		this.replace(/^\s+|\s+$/g,"");
	},
	escapeTags : function(){
		return this.replace(/<[^>]+>/img,"");
	},
	escapeComment : function(){
		var esc = ["<!--","//-->","-->"],t=this;
		for(var i=0;i<esc.length;i++)
			t = t.replace(esc[i],"");
		return t;		
	},
	escapeScript : function(){
		if(ask.isUndefined(this)) return;
		return this.replace(new RegExp("<script[^>]*>([\\S\\s]*?)</s"+"cript>","img"),"");
	},
	evalScript : function(){
		var text=this,k = text.match(new RegExp("<script[^>]*>([\\S\\s]*?)</sc"+"ript>","img")),
			j = new RegExp("src\b*?=\b*?\"","img"),scr;
		if(k){
			for(var i=0;i<k.length;i++){
				if(k[i].match(j)){
					RegExp.rightContext.match(/\"/);
					ask.appendScript(RegExp.leftContext)
				}
				scr = k[i].replace(/<script[^>]*>/,"");
				scr = scr.replace(/<\/script>/,"");
				eval(scr.escapeComment());
			}
		}
	}
	
});

ask.extend(ask,{

	imagePath :"./images/",
	
	fill : function(){
		var arg = ask.toArray(arguments),r = ask.extend({},arg.shift());
		for(var i=0;i<arg.length;i++)
			for(var key in arg[i])
				if(ask.isUndefined(r[key])) r[key] = arg[i][key];
		return r; 
	},
	
	setAppointed : function(destination,source,picker){//ob
		for(var attr in picker){
			destination[attr] = source[picker[attr]];
		}
		return destination;
	},
	
	openWindow : function(url, target, width, height){
 		var win = window.open(url, target, "width=" + width + ",height=" + height + ",status=no, scrollbars=yes, resizable=yes")
 		win.focus()
	},
	
	appendScript : function(source){
		var s = document.createElement("script");s.type = "text/javascript";s.src = source;
		document.getElementsByTagName("head")[0].appendChild(s);
	},
		
	replaceHTML : function(destination,source){
		$(destination).innerHTML = source.escapeScript();
		source.evalScript();
	},
	
	toArray : function(iterable) {
	  if (!iterable) return [];
	  if (iterable.toArray) return iterable.toArray();
	  var length = iterable.length || 0, results = new Array(length);
	  while (length--) results[length] = iterable[length];
	  return results;
	},
	
	removeWithout : function(collection,type){
		var newVal=[];
		if(type.toLowerCase() == "element"){
			for(var attr in collection)
				if(ask.isElement(collection[attr])) newVal.push(collection[attr]);
		}else if(type.toLowerCase() == "number"){
			for(var attr in collection)
				if(ask.isNumber(collection[attr])) newVal.push(collection[attr]);
		}
		return newVal;
	},
	
	css : {
		ruleCollection : {},
		
		appended : (function(){
			try{
				return document.styleSheets[document.styleSheets.length-1];
			}catch(c){
				return null;
			}
		})(),
				
		addRule : function(selector,declarations){
			if(ask.css.appended){
				var tSheet=ask.css.appended;
				if(document.all){
					tSheet.addRule(selector,declarations);
					ask.css.ruleCollection[selector] = tSheet.rules[tSheet.rules.length-1].selectorText;
			  }else{
					tSheet.insertRule(selector+"{"+declarations+"}",tSheet.cssRules.length);
					ask.css.ruleCollection[selector] = tSheet.cssRules[tSheet.cssRules.length-1].selectorText;
				}
			}
		},
		
		addRules : function(cssSet){
			for(var sel in cssSet)
				if(ask.isString(cssSet[sel])) ask.css.addRule(sel,cssSet[sel]);
		},
		
		removeRule : function(selector){
			if(ask.css.appended){
			  var dSheet=ask.css.appended;
				if(document.all){
					for(var i = dSheet.rules.length-1;i>=0;i--)
						if(dSheet.rules[i].selectorText == ask.css.ruleCollection[selector])
							dSheet.removeRule(i); 
				}else{
					for(var i = dSheet.cssRules.length-1;i>=0;i--)
						if(dSheet.cssRules[i].selectorText == ask.css.ruleCollection[selector])
							dSheet.deleteRule(i); 
				}
			}
		},
		
		getStyle : function(element){
			return style = element.currentStyle || document.defaultView.getComputedStyle(element, '')
		},
		
		setStyle : function(element,style){
			for(var attr in style){
				try{
					element.style[attr] = style[attr];
				}catch(e){}
			}
			return element;
		},
		
		floating : function(element,lr){
			if(ask.isIE){element.style.styleFloat = lr;}else{element.style.cssFloat = lr;}
		},
		
		positionAbsolute : function(element){
			var p = ask.dom.getXY(element);
			ask.css.setStyle(element,{"position":"absolute","left":p.x+"px","top":p.y+"px"})
		},
		
		getCSSDimension : function(element){
			var s = ask.css.getStyle(element),h,w;
			if(!isNaN(s.height.unitEscape())){
				h = s.height.unitEscape();
			}else{
				h = element.offsetHeight;
				if(!isNaN(s.borderTopWidth.unitEscape())) h-=s.borderTopWidth.unitEscape();
				if(!isNaN(s.borderBottomWidth.unitEscape())) h-=s.borderBottomWidth.unitEscape();	
			}
			if(!isNaN(s.width.unitEscape())){
				w = s.width.unitEscape();
			}else{
				w = element.offsetWidth;
				if(!isNaN(s.borderRightWidth.unitEscape())) w-=s.borderRightWidth.unitEscape();
				if(!isNaN(s.borderLeftWidth.unitEscape())) w-=s.borderLeftWidth.unitEscape();	
			}
			return {height:h,width:w};
		},
		
		setTransparency : function(element,transparency){
			if(ask.isIE){element.style.filter="alpha(opacity=\""+transparency+"\")";
			}else	if(ask.isGecko){element.style.MozOpacity = transparency/100;
			}else if(ask.isSafari){element.style.opacity = transparency/100;};
		},
		
		getTransparency : function(element){
			if(ask.isIE){return element.style.filter ? element.style.filter.replace(/[^0-9]/img,"").unitEscape():100;
			}else	if(ask.isGecko){return element.style.MozOpacity ? element.style.MozOpacity*100:100;
			}else if(ask.isSafari){return element.style.opacity ?  element.style.opacity*100:100;};
		},
		
		locate : function(el,position){
			var	styles = el.style;
			if(position.x>=0) styles.left = position.x + "px";
			if(position.y>=0) styles.top = position.y + "px";
			styles.position = "absolute";
		}
	},
	
	event : {
		windowEvent : function(){
			if(window.event) return window.event;
			var caller = arguments.callee.caller;
			while(caller){
				var ob = caller.arguments[0];
				if(ob && ob.constructor == MouseEvent) return ob;
				caller = caller.caller;
			}
			return null;
		},
		getMouseXY : function(e){
			var cx,cy,e=window.event||e;
			if(e.x){
				cx=e.x+document.body.scrollLeft;
				cy=e.y+document.body.scrollTop;
			}else{
				cx=e.pageX;
				cy=e.pageY;
			}
			return {x:cx,y:cy};
		},
		
		preventDefault : function(e){
			if(e.preventDefault) return e.preventDefault();
			e.returnValue = false;
		},
		
		stopPropagation : function(e){
			if(e.stopPropagation) return e.stopPropagation();
			e.cancelBubble = true;
		},
		
		stopEvent : function(e){
			var e = window.event||e;
			ask.event.stopPropagation(e);
			ask.event.preventDefault(e);
		},
		
		mouseTrace : function(e){
			ask.properties.mouseXYHistory = ask.properties.mouseXYMemory; 
			ask.properties.mouseXYMemory = ask.event.getMouseXY(e);
			ask.event.stopEvent(e);
		},
		
		setMouseTrace : function(){
			ask.dom.addEventListener(window.document,"mousemove",ask.event.mouseTrace);
		},
		
		removeMouseTrace : function(){
			ask.dom.removeEventListener(window.document,"mousemove",ask.event.mouseTrace);
		},
		
		sourceElement : function(e){
			var e = window.event||e;
			return e.srcElement||e.target;
		}
		
	},
	
	screen : {
		mode : function(){
			if(!ask.isSafari)
				return document.documentElement.clientHeight > document.body.clientHeight ? true:false;
			return true;
		},
		
		scrollXY : function(){
			return {
				x: window.document.body.scrollLeft || window.document.documentElement.scrollLeft,
				y: window.document.body.scrollTop  || window.document.documentElement.scrollTop
			};
		},
		dimension : function(){
			if(ask.isSafari){
				return {height:window.innerHeight,width:window.innerWidth};
			}else if(ask.isOpera){
				return {height:document.body.clientHeight,width:document.body.clientWidth};
			}else{
				if(ask.screen.mode()){
					return {height:document.documentElement.clientHeight,width:document.documentElement.clientWidth};
				}else{
					return {height:document.body.clientHeight,width:document.body.clientWidth};
				}
			}
		},
		
		getClientCenter : function(){
			var d = ask.screen.dimension(),s=ask.screen.scrollXY();
			return {y:s.y+d.height/2,x:s.x+d.width/2}
		}
	},
	
	dom :{
		askElement : function(ele){
			if(!ele.ask)
				ele.ask = {dragdrop:{},ajax:{},accordion:{},sorttable:{},tab:{},popWindow:{},resize:{action:""}};
			return ele;
		},
		
		getAskElement : function(e){
			var element = window.event||e;
			element = element.srcElement||element.target;
			while(element&&!element.ask) element = element.parentNode;
			return element;
		},
		
		move : function(element,direction){
			var a = ask.dom.getXY(element),h = ask.properties.mouseXYHistory, m = ask.properties.mouseXYMemory;
			if(!direction) return ask.css.setStyle(element,{left:(m.x-h.x)+a.x+"px",top:(m.y-h.y)+a.y+"px",position:"absolute"})
			if(direction.toLowerCase() == "x")return ask.css.setStyle(element,{left:(m.x-h.x)+a.x+"px",position:"absolute"});
			return ask.css.setStyle(element,{top:(m.y-h.y)+a.y+"px",position:"absolute"});
		},
		
		getElementsByTagNames : function(tags,parent){
			var rv = [],
				parent = $(parent)||document.body;
			if(ask.isString(tags)) return parent.getElementsByTagName(tags);
			for(var i=0;i<tags.length;i++){
				var tEl=parent.getElementsByTagName(tags[i]);
				for(var ii=0;ii<tEl.length;ii++)
					if(ask.isElement(tEl[ii])) rv.push(tEl[ii]);
			};
			return rv;
		},
				
		addEventListener : function(ele,act,fnc){
			if(ele.addEventListener){
				ele.addEventListener(act,fnc,false);
			}else if(ele.attachEvent){
				ele.attachEvent("on"+act,fnc);
			}
		},
		
		removeEventListener : function(ele,act,fnc){
			if(ele.removeEventListener){
				ele.removeEventListener(act,fnc,false);
			}else{
				ele.detachEvent("on"+act,fnc);
			}
		},
		
		addClass : function(element,className){
			var element = $(element);
			element.className = element.className+(element.className ? " ":"")+className;
			return element;
		},
		
		setId : function(element,id){
			var element = $(element);element.id = id;
			return element;
		},
		
		createElementHasClass : function(tag,className){
			return ask.dom.addClass(document.createElement(tag),className);
		},
		
		createElementHasId : function(tag,id){
			return ask.dom.setId(document.createElement(tag),id);
		},
		
		hide : function(element){
			$(element).style.display = "none";
		},

		show :	function(element){
			$(element).style.display = "block";
		},
		
		getXY : function(element) {
			var offsetTrail = element, offsetLeft = 0, offsetTop = 0;
			while (offsetTrail) {
				offsetLeft += offsetTrail.offsetLeft;
				offsetTop  += offsetTrail.offsetTop;
				offsetTrail = offsetTrail.offsetParent;
			}
			if (navigator.userAgent.indexOf('Mac') != -1 && typeof document.body.leftMargin != "undefined") {
				offsetLeft += document.body.leftMargin;
				offsetTop  += document.body.topMargin;
			}
			return ({x:offsetLeft, y: offsetTop});
		},
			
		isChild : function(child,parent){//el
			if(!ask.isElement($(parent))||!ask.isElement($(child))) return false;
			var tr = child;
			while(tr){
				if(tr==parent) return true;
				tr = tr.parentNode;
			}
			return false;
		},
		
		getRealChildren : function(childs,parent){
			var par = $(parent),k=[];
			for(var l=0;l<childs.length;l++){
				if(childs[l].parentNode == par) k.push(childs[l]);
			}
			return k;
		},
	
		insertAfter : function(parent,newChild,refChild){
		  if(parent.lastChild==refChild){
				return parent.appendChild(newChild);
			}else{
				return parent.insertBefore(newChild,refChild.nextSibling);
			};
		},
		
		appendNodes : function(parent,children){
			if(!ask.isElement(parent)) return;
			for(var i=0;i<children.length;i++) 
				if(ask.isElement(children[i])) parent.appendChild(children[i]);
		},
		
		reverseDisplay : function(element){
			if(ask.css.getStyle(element).display == "none"){
				element.style.display = "block";
			}else{
				element.style.display = "none";
			}
		},
		
		remove : function(el){
			if(ask.isElement($(el))) document.body.removeChild(el);
		},
		
		clear : function(){
			if(!ask.css.ruleCollection["div.askElementClearForMoz"])
				ask.css.addRule("div.askElementClearForMoz","clear:both;paddingBottom:1px;marginBottom:-1px");
			var c = ask.dom.createElementHasClass("div","askElementClearForMoz");
			return c;
		},
		
		clone : function(base,quantity){
			var elements=[],quantity=quantity||1;
			for(var i = 0; i<quantity;i++)
				elements.push(base.cloneNode(true));
			return elements;
		},
		
		createTable : function(c,r){
			var t = document.createElement("table"),tBody = document.createElement("tbody"),
			tr = ask.dom.clone(document.createElement("tr"),r),
			td = ask.dom.clone(document.createElement("td"),c*r),
			iii = 0;
			for(var i = 0;i < tr.length;i++){
				for(var ii=0;ii < c;ii++,iii++)
					tr[i].appendChild(td[iii]);
				tBody.appendChild(tr[i]);
			}
			t.appendChild(tBody);
			return t;
		}
	},
	form : function(element){
		return (!ask.isUndefined(element.elements));
	},
			
	struct : {
		corner : function(position,style,className,flag){
			var klass = className||"corner"+Math.floor(Math.random()*100000),
			cssText = "font-size:0px;border-width:1px;position:static;background-color:"+style.backgroundColor+";border-color:"+style.borderColor+";",
			bh = style.height||20,
			fc = flag ? 0:1,
			word = position.indexOf("l",0) != -1 ? ["borderLeftStyle","marginLeft"]:["borderRightStyle","marginRight"],
			mar = [0,1,1,2,3,5];
						
			ask.css.addRule("div."+klass+" div",cssText);
			
			var b = document.createElement("div"),
			r = b.cloneNode(false);
			
			ask.css.setStyle(r,{width:"6px"});
			r.className = klass;
				
			b.style[word[0]] = "solid";
			b.style.height = "1px";
			var c = ask.dom.clone(b,6);
			
			c[0].style.height = bh-5+"px";
			c[4].style["borderWidth"] = "2px";
			for(var i=1;i<c.length;i++) c[i].style[word[1]] = mar[i]+"px";
			
			if(position == "tr"||position == "tl"){
				for(var i=5;i>=fc;i--) r.appendChild(c[i]);
			}else{
				for(var i=fc;i<c.length;i++) r.appendChild(c[i]);
			}
			
			return r;
		},
		
		packageHeader : function(bg,br,className){
			var b = ask.dom.clone(document.createElement("div"),2);
			ask.css.setStyle(b[0],{width:"100%"});
			ask.css.setStyle(b[1],{margin:"0px 6px",borderTopWidth:"1px",borderTopStyle:"solid",height:"5px",borderTopColor:br,backgroundColor:bg})
			
			b[0]["center"] = b[1];
			b[0]["left"] = ask.struct.corner("tl",{backgroundColor:bg,borderColor:br},className);
			b[0]["right"] = ask.struct.corner("tr",{backgroundColor:bg,borderColor:br},className); 
			
			ask.css.floating(b[0]["left"],"left");
			ask.css.floating(b[0]["right"],"right");
			
			ask.dom.appendNodes(b[0],[b[0].left,b[0].right,b[1]])
			
			return b[0];
		},
		
		packageFooter : function(bg,br,className){
			var b = ask.dom.clone(document.createElement("div"),2);
			ask.css.setStyle(b[0],{width:"100%"});
			ask.css.setStyle(b[1],{margin:"0px 6px",borderBottomWidth:"1px",borderBottomStyle:"solid",height:"5px",borderBottomColor:br,backgroundColor:bg})
			
			b[0]["center"] = b[1];
			b[0]["left"] = ask.struct.corner("bl",{backgroundColor:bg,borderColor:br},className);
			b[0]["right"] = ask.struct.corner("br",{backgroundColor:bg,borderColor:br},className); 
			
			ask.css.floating(b[0]["left"],"left");
			ask.css.floating(b[0]["right"],"right");
			
			ask.dom.appendNodes(b[0],[b[0].left,b[0].right,b[1]])
			
			return b[0];
		}
	},
	
	layer : {
		floatUp : function(e){
			if((ask.layer.collection.length-1) == ask.layer.collection.find(this)) return;
			$el.counter++;
			this.style.zIndex = $el.counter;
			ask.layer.collection.exchange(ask.layer.collection.find(this),ask.layer.collection.length-1);
			if(ask.layer.counter >= 95) ask.layer.resetCounter();
		},
		
		floatUpEntry : function(element,plusHandle){
			var element =$(element);
			
			if(ask.layer.collection.find(element) == -1){
				ask.layer.collection.push(element);
				ask.dom.addEventListener(element,"mousedown",function(){ask.layer.floatUp.call(element)});
				for(var i=0;i<plusHandle.length;i++)
					if(ask.isElement(plusHandle[i])){
						ask.dom.addEventListener(plusHandle[i],"mousedown",function(){ask.layer.floatUp.call(element)})
					};
			}
		},
			
		resetCounter: function(){
			ask.layer.counter = 20;
			for(var i = 0;i < ask.layer.collection.length;i++,ask.layer.counter++)
				ask.layer.cllection[i].style.zIndex = ask.layer.counter;
		},
		
		counter : 20,
		
		collection : []
	},
	
	properties : {
		distanceX:0,
		distanceY:0,
		mouseXYMemory : {x:0,y:0},
		mouseXYHistory : {x:0,y:0},
		dragdrop:{},
		sorttable : {}, 
		tabs : {entries : []},
		popWindow :{},
		resize :{}
	}
});

ask.extend(ask.form,{
	getValues : function(formEl){
		if(!formEl) return;
		var r={},element;
		r.val ={};
		r.valNew="";
		r.elements = formEl.elements;
		for(var i=0;i<r.elements.length;i++){
			element = r.elements[i];
			if(element.tagName.toLowerCase()=="input"){
				switch(element.type.toLowerCase()){
					case "text":
					case "hidden":
					case "password":
						r.val[element.name] = element.value;
						break;
			
					case "radio":
						if(element.checked){
							r.val[element.name] = 1;
						}
						break;
					case "checkbox":
						r.val[element.name] = element.checked?1:0;
						break;
					case "submit":
					case "button":
					case "image":
					case "file":
						break;
				};
			}else if(element.tagName.toLowerCase()=="textarea"||element.tagName.toLowerCase()=="select"){
				r.val[element.name] = element.value;
			};
		}		
		return r.val;
	},
	
	cancelSubmit : function(className){
		var elements = ask.toArray(ask.$C(className));
		for(var i=0;i<elements.length;i++) ask.dom.addEventListener(elements[i],"submit",ask.event.preventDefault.bind(""));
	}
});

if (ask.isSafari) {
  ask.toArray = function(iterable) {
    if (!iterable) return [];
    if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && iterable.toArray) return iterable.toArray();
    var length = iterable.length || 0, results = new Array(length);
    while (length--) results[length] = iterable[length];
    return results;
  };
}

var $C=ask.css,
$D=ask.dom,
$E=ask.event,
$F=ask.form,
$P=ask.properties,
$L=ask.layer;

ask.visual = {
	corner : function(o){
		var o = ask.fill(o,{backgroundColor : "#CCCCCC",borderColor : "#AAAAAA",position : "tl",className : "askCornerClass" + Math.floor(Math.random()*1000000)}),
		w = o.position.indexOf("l") >-1 ? ["borderLeftStyle","marginLeft"]:["borderRightStyle","marginRight"],
		m = [0,1,1,2,3,5],
		r = $C.setStyle(document.createElement("div"),{width:"6px;position:static;"}),
		d = $D.createElementHasClass("div",o.className);d.style[w[0]] = "solid";d = $D.clone(d,6);
		$C.addRule("."+o.className,"border-width:1px;position:static;background-color:"+o.backgroundColor+";border-color:"+o.borderColor+";height:1px;font-size:0px;");
		 
		d[4].style["borderWidth"] = "2px";
		for(var i=1;i<d.length;i++) d[i].style[w[1]] = m[i]+"px";
		
		if(o.position == "tr"||o.position == "tl"){
			for(var i=5;i>=0;i--) r.appendChild(d[i]);
		}else{
			for(var i=0;i<6;i++) r.appendChild(d[i]);
		}
		return r;
	}
}
ask.selection = {
	getSelection : function(winObj){
		var win = winObj||window;
		if(ask.isIE) return win.document.selection.createRange();
		return win.getSelection();
	},
	getSelectedText : function(){
		return ask.selection.getSelection().text||ask.selection.getSelection();
	}

};

ask.extensionObject = (function(){
	return {
		setStyle : function(style){
			$C.setStyle(this.refer,style);
			return this;
		},
		getStyle : function(){
			return $C.getStyle(this.refer);
		},
		setTransparency : function(n){
			$C.setTransparency(this.refer,n)
			return this;
		},
		addEventListener : function(act,fuc){
			$D.addEventListener(this.refer,act,fuc)
			return this;
		},
		removeEventListener : function(act,fuc){
			$D.removeEventListener(this.refer,act,fuc)
			return this;
		},
		getXY : function(){
			return $D.getXY(this.refer);
		},
		getHW : function(){
			return {height:this.refer.offsetHeight,width:this.refer.offsetHeight};
		}
	}
})()

}

ask.initialize();









