PageSourceSearch

https://goldenrod-lyrebird-564642.hostingersite.com/wp-content/themes/acora/js/fwd/FWDShare.js?ver=1.0

js goldenrod-lyrebird-564642.hostingersite.com collected 2026-10-03 04:25:33 UTC 34,803 bytes, 1,047 lines download raw bytes

1/**
2 * Share.
3 *
4 * @package acora
5 * @since acora 1.0
6 */
7 
8 (function (window){
9	'use strict';
10	var FWDShare = function(holder, title, permalink, images_ar){
11		var self = this;
12		this.buttonsData_ar = ["copy", "facebook", "twitter", "google+", "LinkedIn", "pinterest"];
13		this.stageContainer = document.getElementsByTagName("body")[0];
14		this.buttons_ar = [];
15		this.main_do = null;
16		this.buttonW = 30;
17		this.buttonH = 29;
18		this.stageWidth = 0;
19		this.stageHeight = 0;
20		this.isMobile_bl = FWDUtils.isMobile;
21		
22		this.init = function(){
23			if(holder){
24				this.setupMainDo();
25				this.setupButtons();
26				this.addToContainer();
27			}
28			this.setupInfo();
29		}
30
31		// Setup main containers
32		this.setupMainDo = function() {
33            this.main_do = new FWDSDisplayObject("div", "absolute");
34            this.main_do.getStyle().msTouchAction = "none";
35            this.stageContainer.appendChild(this.main_do.screen);
36        }
37
38        // Setup info window.
39        this.setupInfo = function(){
40        	this.info = new FWDSDisplayObject("div");
41            this.info.screen.className = "copy-link";
42            this.info.setInnerHTML("The link has been copied to clipboard");
43            this.info.setX(-5e3);
44            document.documentElement.appendChild(this.info.screen);
45        }
46
47        // Setup buttons
48     	this.setupButtons = function() {
49            for (var i=0; i<this.buttonsData_ar.length; i++) {
50                var data = this.buttonsData_ar[i];
51                var icon;
52                if(data == 'facebook'){
53                	icon = " fwdicon fwdicon-facebook";
54                }else if(data == 'google+'){
55                	icon = " fwdicon fwdicon-google-plus";
56                }else if(data == 'twitter'){
57                	icon = " fwdicon fwdicon-twitter";
58                }else if(data == 'pinterest'){
59                	icon = " fwdicon fwdicon-pinterest";
60                }else if(data == 'LinkedIn'){
61                	icon = " fwdicon fwdicon-linkedin";
62                }else if(data == 'copy'){
63                	icon = " fwdicon fwdicon-clipboard";
64                }
65             	FWDSSimpleButton.setPrototype();
66                var button = new FWDSSimpleButton(undefined,
67                								 undefined,
68                								 undefined,
69                								 undefined,
70                								 undefined,
71                								 undefined,
72                								 undefined,
73                								 "<div class='table-fwds-button'><span class='table-cell-fwds-button" + icon + "'></span></div>",
74                								 undefined,
75                								 "FWDSButtonNormalState",
76                								 "FWDSButtonSelectedState");
77            	button.setX((this.buttonW + 2) * i)
78               	button.id = i;
79               	this.buttons_ar[i] = button;
80               	this.main_do.addChild(button)
81               	button.addListener(FWDSSimpleButton.MOUSE_UP, this.buttonCLick)
82            }
83            self.main_do.setWidth(this.buttonW * self.buttons_ar.length);
84            self.main_do.setHeight(this.buttonH);
85        }
86
87        this.buttonCLick = function(e) {
88            var id = e.target.id;
89           
90            if("facebook" == self.buttonsData_ar[id]){
91            	self.openPopup("https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(permalink), 700, 450);
92            }else if("twitter" == self.buttonsData_ar[id]){
93            	self.openPopup("https://twitter.com/home?status=" + self.title, 700, 450);
94            }else if("LinkedIn" == self.buttonsData_ar[id]){
95            	self.openPopup("https://www.linkedin.com/shareArticle?mini=true&url=" + permalink + "&title=" + self.title, 700, 450);
96            }else if("google+" == self.buttonsData_ar[id]){
97            	self.openPopup("https://plus.google.com/share?url=" + encodeURIComponent(permalink), 700, 450);
98            }else if("pinterest" == self.buttonsData_ar[id]) {
99                var n = images_ar ? "&media=" + images_ar[0] : "";
100                self.openPopup("http://pinterest.com/pin/create/link/?url=" + encodeURIComponent(permalink) + n, 700, 450)
101            }else if ("copy" == self.buttonsData_ar[id]) {
102                var el = document.createElement("textarea");
103                el.value = permalink;
104                el.style = {
105                    position: "absolute",
106                    left: "-9999px"
107                }
108                document.body.appendChild(el);
109                el.select();
110                document.execCommand("copy");
111                document.body.removeChild(el);
112                self.shareBtn = e.e.currentTarget;
113                self.showInfo(self.shareBtn, "The link has been copied to clipboard")
114            }
115        }
116
117        // Show info
118        this.showInfo = function(target, text, n, i) {
119            self.info.setInnerHTML(text);
120            self.ws = FWDUtils.getViewportSize();
121            self.scrOffset = FWDUtils.getScrollOffsets();
122            self.globalElX = target.getBoundingClientRect().left + target.offsetWidth;
123            self.globalElY = target.getBoundingClientRect().top;
124            if(n){
125            	self.globalElY = (target.getBoundingClientRect().top + target.getBoundingClientRect().height / 2 + self.info.getHeight() / 2);
126            } 
127            var x = self.globalElX - (self.info.getWidth() + target.offsetWidth) / 2;
128            if(x < 0){
129            	x = 0;
130            }else if(x + self.info.getWidth() > self.ws.w){
131            	self = self.ws.w - self.info.getWidth();
132            }
133          
134            self.info.setX(x);
135             self.info.setY(Math.round(self.globalElY + self.scrOffset.y - self.info.getHeight()));
136            var s = "#000",
137                r = "#FFF",
138                a = 1;
139            FWDAnimation.killTweensOf(self.info.screen), self.info.screen.style.opacity = 1, FWDAnimation.to(self.info.screen, .1, {
140                backgroundColor: s,
141                color: r,
142                ease: Sine.easeOut
143            }), FWDAnimation.to(self.info.screen, .1, {
144                backgroundColor: r,
145                color: s,
146                delay: .1,
147                ease: Sine.easeOut
148            }), FWDAnimation.to(self.info.screen, .1, {
149                backgroundColor: s,
150                color: r,
151                delay: .2,
152                ease: Sine.easeOut
153            }), FWDAnimation.to(self.info.screen, .1, {
154                backgroundColor: r,
155                color: s,
156                delay: .3,
157                ease: Sine.easeOut
158            }), FWDAnimation.to(self.info.screen, 2, {
159                opacity: 0,
160                delay: a,
161                onComplete: function() {
162                    self.info.setX(-5e3)
163                }
164            })
165        }
166        // Open popup
167        this.openPopup = function(e, t, n) {
168            var i = parseInt((screen.width - t) / 2),
169                o = parseInt((screen.height - n) / 2);
170            FWDUtils.isMobile ? self.popupWindow = window.open(e) : self.popupWindow = window.open(e, "", "width=" + t + ", height=" + n + ", top=" + o + ", left=" + i)
171        }
172        // Add buttons to main container
173        this.addToContainer = function() {
174            holder.appendChild(this.main_do.screen);
175            this.main_do.getStyle().position = "relative";
176            this.main_do.setX(0);
177        }
178		this.init();
179	};
180	window.FWDShare = FWDShare;
181}(window));
182
183 /* FWDSSimpleButton */
184(function (window){
185var FWDSSimpleButton = function(nImg, 
186								  sPath, 
187								  dPath, 
188								  alwaysShowSelectedPath, 
189								  useHEXColorsForSkin_bl,
190								  normalButtonsColor_str,
191								  selectedButtonsColor_str,
192								  iconCSSString, 
193								  showHDIcon, 
194								  normalCalssName,
195								  selectedCalssName
196								 ){
197		
198		var self = this;
199		var prototype = FWDSSimpleButton.prototype;
200		
201		this.iconCSSString = iconCSSString;
202		this.showHDIcon = showHDIcon;
203		
204		this.nImg = nImg;
205		this.sPath_str = sPath;
206		this.dPath_str = dPath;
207		
208		self.testButton = Boolean(String(self.iconCSSString).indexOf("download") != -1);
209	
210		this.n_do;
211		this.s_sdo;
212		this.d_sdo;
213		
214		this.toolTipLabel_str;
215		
216		if(this.nImg){
217			this.totalWidth = this.nImg.width;
218			this.totalHeight = this.nImg.height;
219			self.buttonWidth = self.totalWidth;
220			self.buttonHeight = self.totalHeight;
221		}
222		
223		
224		this.normalCalssName = normalCalssName;
225		this.selectedCalssName = selectedCalssName;
226		
227		this.useHEXColorsForSkin_bl = useHEXColorsForSkin_bl;
228		this.normalButtonsColor_str = normalButtonsColor_str;
229		this.selectedButtonsColor_str = selectedButtonsColor_str;
230		
231		this.isShowed_bl = true;
232		this.isSetToDisabledState_bl = false;
233		this.isDisabled_bl = false;
234		this.isDisabledForGood_bl = false;
235		this.isSelectedFinal_bl = false;
236		this.isActive_bl = false;
237		this.isMobile_bl = FWDUtils.isMobile;
238		this.hasPointerEvent_bl = FWDUtils.hasPointerEvent;
239		this.allowToCreateSecondButton_bl = !self.isMobile_bl || self.hasPointerEvent_bl || alwaysShowSelectedPath;
240		this.useFontAwesome_bl = Boolean(this.iconCSSString);
241		
242		//##########################################//
243		/* initialize self */
244		//##########################################//
245		self.init = function(){
246			if(self.iconCSSString) self.setOverflow('visible');
247			self.setupMainContainers();
248			self.setNormalState();
249		};
250		
251		//##########################################//
252		/* setup main containers */
253		//##########################################//
254		self.setupMainContainers = function(){
255			if(self.useFontAwesome_bl){
256				self.n_do = new FWDSDisplayObject("div");	
257				self.n_do.setInnerHTML(self.iconCSSString);
258				self.addChild(self.n_do);
259				
260				if(self.showHDIcon){
261					var hdImage = new Image();
262					hdImage.src = "http://www.webdesign-flash.ro/icons/hd.png";
263					self.hd_do = new FWDUVPDisplayObject("img");
264					self.hd_do.setScreen(hdImage);
265					self.hd_do.setWidth(7);
266					self.hd_do.setHeight(5);
267					self.setOverflow("visible");
268					self.addChild(self.hd_do);
269				};
270			
271				self.setFinalSize();
272			}else{
273				if(self.useHEXColorsForSkin_bl){
274					self.n_do = new FWDSDisplayObject("div");
275					self.n_do.setWidth(self.totalWidth);
276					self.n_do.setHeight(self.totalHeight);
277					self.n_do_canvas = FWDUtils.getCanvasWithModifiedColor(self.nImg, self.normalButtonsColor_str).canvas;
278					self.n_do.screen.appendChild(self.n_do_canvas);
279					self.addChild(self.n_do);
280				}else{
281					self.n_do = new FWDSDisplayObject("img");	
282					self.n_do.setScreen(self.nImg);
283					self.addChild(self.n_do);
284				}
285				
286				if(self.allowToCreateSecondButton_bl){
287					
288					self.img1 = new Image();
289					self.img1.src = self.sPath_str;
290					var img2 = new Image();
291					self.sImg = img2;
292					
293					if(self.useHEXColorsForSkin_bl){
294						self.s_sdo = new FWDSDisplayObject("div");
295						self.s_sdo.setWidth(self.totalWidth);
296						self.s_sdo.setHeight(self.totalHeight);
297						self.img1.onload = function(){
298							self.s_sdo_canvas = FWDUtils.getCanvasWithModifiedColor(self.img1, self.selectedButtonsColor_str).canvas;
299							self.s_sdo.screen.appendChild(self.s_sdo_canvas);
300						}
301						self.s_sdo.setAlpha(0);
302						self.addChild(self.s_sdo);
303					}else{
304						self.s_sdo = new FWDUVPDisplayObject("img");
305						self.s_sdo.setScreen(self.img1);
306						self.s_sdo.setWidth(self.totalWidth);
307						self.s_sdo.setHeight(self.totalHeight);
308						self.s_sdo.setAlpha(0);
309						self.addChild(self.s_sdo);
310					}
311					
312					if(self.dPath_str){
313						img2.src = self.dPath_str;
314						self.d_sdo = new FWDUVPDisplayObject("img");
315						self.d_sdo.setScreen(img2);
316						self.d_sdo.setWidth(self.totalWidth);
317						self.d_sdo.setHeight(self.totalHeight);
318						self.d_sdo.setX(-100);
319						self.addChild(self.d_sdo);
320					};
321					self.setWidth(self.totalWidth);
322					self.setHeight(self.totalHeight);
323				}
324			}
325			
326			self.setButtonMode(true);
327			self.screen.style.yellowOverlayPointerEvents = "none";
328			
329			if(self.hasPointerEvent_bl){
330				self.screen.addEventListener("pointerup", self.onMouseUp);
331				self.screen.addEventListener("pointerover", self.onMouseOver);
332				self.screen.addEventListener("pointerout", self.onMouseOut);
333			}else if(self.screen.addEventListener){	
334				if(!self.isMobile_bl){
335					self.screen.addEventListener("mouseover", self.onMouseOver);
336					self.screen.addEventListener("mouseout", self.onMouseOut);
337					self.screen.addEventListener("mouseup", self.onMouseUp);
338				}
339				self.screen.addEventListener("touchend", self.onMouseUp);
340			}
341		};
342		
343		self.onMouseOver = function(e){
344			self.dispatchEvent(FWDSSimpleButton.SHOW_TOOLTIP, {e:e});
345			if(self.isDisabledForGood_bl) return;
346			if(!e.pointerType || e.pointerType == e.MSPOINTER_TYPE_MOUSE || e.pointerType == "mouse"){
347				if(self.isDisabled_bl || self.isSelectedFinal_bl) return;
348				self.dispatchEvent(FWDSSimpleButton.MOUSE_OVER, {e:e});
349				self.setSelectedState(true);
350			}
351		};
352			
353		self.onMouseOut = function(e){
354			if(self.isDisabledForGood_bl) return;
355			if(!e.pointerType || e.pointerType == e.MSPOINTER_TYPE_MOUSE || e.pointerType == "mouse"){
356				if(self.isDisabled_bl || self.isSelectedFinal_bl) return;
357				self.dispatchEvent(FWDSSimpleButton.MOUSE_OUT, {e:e});
358				self.setNormalState(true);
359			}
360		};
361		
362		self.onMouseUp = function(e){
363			
364			if(self.isDisabledForGood_bl) return;
365			if(e.preventDefault) e.preventDefault();
366			if(self.isDisabled_bl || e.button == 2) return;
367		
368			self.dispatchEvent(FWDSSimpleButton.MOUSE_UP, {e:e});
369		};
370		
371		self.checkCount = 0;
372		this.setFinalSize = function(){
373			
374			clearInterval(self.checkId_int);
375			if(self.checkCount > 6) return;
376			self.lastWidth = self.n_do.screen.firstChild.offsetWidth;
377			self.checkCount +=1;
378		
379			self.checkId_int = setInterval(function(){
380				self.setFinalSize();
381			},100);
382			
383			if(self.prevWidth == self.lastWidth || self.lastWidth == 0) return;
384			self.setWidth(self.n_do.screen.firstChild.offsetWidth);
385			self.setHeight(self.n_do.screen.firstChild.offsetHeight);
386			self.n_do.setWidth(self.w);
387			self.n_do.setHeight(self.h);
388			self.buttonWidth = self.w;
389			self.buttonHeight = self.h;
390			self.totalWidth = self.w;
391			self.totalHeight = self.h;
392	
393			
394			if(self.hd_do){
395				self.hd_do.setX(self.w - self.hd_do.w + 2);
396				self.hd_do.setY( -2);	
397			}
398			
399			self.prevWidth = self.lastWidth;
400		}
401		
402		//##############################//
403		// set select / deselect final.
404		//##############################//
405		self.setSelected = function(){
406			self.isSelectedFinal_bl = true;
407			if(!self.s_sdo) return;
408			FWDAnimation.killTweensOf(self.s_sdo);
409			FWDAnimation.to(self.s_sdo, .8, {alpha:1, ease:Expo.easeOut});
410		};
411		
412		self.setUnselected = function(){
413			self.isSelectedFinal_bl = false;
414			if(!self.s_sdo) return;
415			FWDAnimation.to(self.s_sdo, .8, {alpha:0, delay:.1, ease:Expo.easeOut});
416		};
417		
418		//####################################//
419		/* Set normal / selected state */
420		//####################################//
421		this.setNormalState = function(animate){
422			if(self.doNotallowToSetNormal) return;
423			if(self.useFontAwesome_bl){
424				FWDAnimation.killTweensOf(self.n_do.screen);
425				if(animate){
426					FWDAnimation.to(self.n_do.screen, .8, {className:self.normalCalssName, ease:Expo.easeOut});	
427				}else{
428					self.n_do.screen.className = self.normalCalssName;
429				}
430			}else{
431				FWDAnimation.killTweensOf(self.s_sdo);
432				FWDAnimation.to(self.s_sdo, .5, {alpha:0, ease:Expo.easeOut});	
433			}
434		};
435		
436		this.setSelectedState = function(animate){
437			if(self.useFontAwesome_bl){
438				FWDAnimation.killTweensOf(self.n_do.screen);
439				if(animate){
440					FWDAnimation.to(self.n_do.screen, .8, {className:self.selectedCalssName, ease:Expo.easeOut});	
441				}else{
442					self.n_do.screen.className = self.selectedCalssName;
443				}
444			}else{
445				FWDAnimation.killTweensOf(self.s_sdo);
446				FWDAnimation.to(self.s_sdo, .5, {alpha:1, delay:.1, ease:Expo.easeOut});
447			}
448		};
449		
450		//####################################//
451		/* Disable / enable */
452		//####################################//
453		this.setDisabledState = function(){
454			if(self.isSetToDisabledState_bl) return;
455			self.isSetToDisabledState_bl = true;
456			if(self.d_sdo) self.d_sdo.setX(0);
457			if(self.hd_do) self.hd_do.setX(self.w - self.hd_do.w);
458		};
459		
460		this.setEnabledState = function(){
461			if(!self.isSetToDisabledState_bl) return;
462			self.isSetToDisabledState_bl = false;
463			if(self.d_sdo) self.d_sdo.setX(-100);
464			if(self.hd_do) self.hd_do.setX(-100000);
465		};
466		
467		this.disable = function(){
468			if(self.isDisabledForGood_bl  || self.isDisabled_bl) return;
469			self.isDisabled_bl = true;
470			self.setButtonMode(false);
471			FWDAnimation.killTweensOf(self);
472			FWDAnimation.to(self, .6, {alpha:.4});
473			self.setNormalState(true);
474		};
475		
476		this.enable = function(){
477			if(self.isDisabledForGood_bl || !self.isDisabled_bl) return;
478			self.isDisabled_bl = false;
479			self.setButtonMode(true);
480			FWDAnimation.killTweensOf(self);
481			FWDAnimation.to(self, .6, {alpha:1});
482		};
483		
484		this.disableForGood = function(){
485			self.isDisabledForGood_bl = true;
486			self.setButtonMode(false);
487		};
488		
489		this.showDisabledState = function(){
490			if(self.d_sdo) if(self.d_sdo.x != 0) self.d_sdo.setX(0);
491			if(self.hd_do) self.hd_do.setX(self.w - self.hd_do.w + 2);
492		};
493		
494		this.hideDisabledState = function(){
495			if(self.d_sdo) if(self.d_sdo.x != -100) self.d_sdo.setX(-100);
496			if(self.hd_do) self.hd_do.setX(-10000);
497		};
498	
499		
500		//#####################################//
501		/* show / hide */
502		//#####################################//
503		this.show = function(){
504			if(self.isShowed_bl) return;
505			self.isShowed_bl = true;
506			
507			FWDAnimation.killTweensOf(self);
508			if(!FWDUtils.isIEAndLessThen9){
509				if(FWDUtils.isIEWebKit){
510					FWDAnimation.killTweensOf(self.n_do);
511					self.n_do.setScale2(0);
512					FWDAnimation.to(self.n_do, .8, {scale:1, delay:.4, onStart:function(){self.setVisible(true);}, ease:Elastiself.easeOut});
513				}else{
514					self.setScale2(0);
515					FWDAnimation.to(self, .8, {scale:1, delay:.4, onStart:function(){self.setVisible(true);}, ease:Elastiself.easeOut});
516				}
517			}else if(FWDUtils.isIEAndLessThen9){
518				self.setVisible(true);
519			}else{
520				self.setAlpha(0);
521				FWDAnimation.to(self, .4, {alpha:1, delay:.4});
522				self.setVisible(true);
523			}
524		};	
525			
526		this.hide = function(animate){
527			if(!self.isShowed_bl) return;
528			self.isShowed_bl = false;
529			FWDAnimation.killTweensOf(self);
530			FWDAnimation.killTweensOf(self.n_do);
531			self.setVisible(false);
532		};
533		
534		//##########################################//
535		/* Update HEX color of a canvaas */
536		//##########################################//
537		self.updateHEXColors = function(normalColor_str, selectedColor_str){
538			FWDUtils.changeCanvasHEXColor(self.nImg, self.n_do_canvas, normalColor_str);
539			FWDUtils.changeCanvasHEXColor(self.img1, self.s_sdo_canvas, selectedColor_str);
540		}
541		
542		self.init();
543	};
544	
545	/* set prototype */
546	FWDSSimpleButton.setPrototype = function(){
547		FWDSSimpleButton.prototype = null;
548		FWDSSimpleButton.prototype = new FWDSDisplayObject("div");
549	};
550	
551	FWDSSimpleButton.CLICK = "onClick";
552	FWDSSimpleButton.MOUSE_OVER = "onMouseOver";
553	FWDSSimpleButton.SHOW_TOOLTIP = "showTooltip";
554	FWDSSimpleButton.MOUSE_OUT = "onMouseOut";
555	FWDSSimpleButton.MOUSE_UP = "onMouseDown";
556	
557	FWDSSimpleButton.prototype = null;
558	window.FWDSSimpleButton = FWDSSimpleButton;
559}(window));
560
561 /* Display object */
562(function (window){
563	'use strict';
564	/*
565	 * @ type values: div, img.
566	 * @ positon values: relative, absolute.
567	 * @ positon values: hidden.
568	 * @ display values: block, inline-block, self applies only if the position is relative.
569	 */
570	var FWDSDisplayObject = function(type, position, overflow, display){
571		
572		var self = this;
573		self.listeners = {events_ar:[]};
574		
575		if(type == "div" || type == "img" || type == "canvas" || "input"){
576			self.type = type;	
577		}else{
578			throw Error("Type is not valid! " + type);
579		}
580	
581		this.children_ar = [];
582		this.style;
583		this.screen;
584		this.transform;
585		this.position = position || "absolute";
586		this.overflow = overflow || "hidden";
587		this.display = display || "inline-block";
588		this.visible = true;
589		this.buttonMode;
590		this.x = 0;
591		this.y = 0;
592		this.w = 0;
593		this.h = 0;
594		this.rect;
595		this.alpha = 1;
596		this.innerHTML = "";
597		this.opacityType = "";
598		this.isHtml5_bl = false;
599		
600		this.hasTransform3d_bl =  FWDUtils.hasTransform3d;
601		this.hasTransform2d_bl =  FWDUtils.hasTransform2d;
602		if(FWDUtils.isFirefox || FWDUtils.isIE) self.hasTransform3d_bl = false;
603		if(FWDUtils.isFirefox || FWDUtils.isIE) self.hasTransform2d_bl = false;
604		this.hasBeenSetSelectable_bl = false;
605		
606		//##############################//
607		/* init */
608		//#############################//
609		self.init = function(){
610			self.setScreen();
611		};	
612		
613		//######################################//
614		/* check if it supports transforms. */
615		//######################################//
616		self.getTransform = function() {
617		    var properties = ['transform', 'msTransform', 'WebkitTransform', 'MozTransform', 'OTransform'];
618		    var p;
619		    while (p = properties.shift()) {
620		       if (typeof self.screen.style[p] !== 'undefined') {
621		            return p;
622		       }
623		    }
624		    return false;
625		};
626		
627		//######################################//
628		/* set opacity type */
629		//######################################//
630		self.getOpacityType = function(){
631			var opacityType;
632			if (typeof self.screen.style.opacity != "undefined") {//ie9+ 
633				opacityType = "opacity";
634			}else{ //ie8
635				opacityType = "filter";
636			}
637			return opacityType;
638		};
639		
640		//######################################//
641		/* setup main screen */
642		//######################################//
643		self.setScreen = function(element){
644			if(self.type == "img" && element){
645				self.screen = null;
646				self.screen = element;
647				self.setMainProperties();
648			}else{
649				self.screen = document.createElement(self.type);
650				self.setMainProperties();
651			}
652		};
653		
654		//########################################//
655		/* set main properties */
656		//########################################//
657		self.setMainProperties = function(){
658			
659			self.transform = self.getTransform();
660			self.setPosition(self.position);
661			self.setOverflow(self.overflow);
662			self.opacityType = self.getOpacityType();
663			
664			if(self.opacityType == "opacity") self.isHtml5_bl = true;
665			
666			if(self.opacityType == "filter") self.screen.style.filter = "inherit";
667			self.screen.style.left = "0px";
668			self.screen.style.top = "0px";
669			self.screen.style.margin = "0px";
670			self.screen.style.padding = "0px";
671			self.screen.style.maxWidth = "none";
672			self.screen.style.maxHeight = "none";
673			self.screen.style.border = "none";
674			self.screen.style.lineHeight = "1";
675			self.screen.style.backfaceVisibility = "hidden";
676			self.screen.style.webkitBackfaceVisibility = "hidden";
677			self.screen.style.MozBackfaceVisibility = "hidden";
678			
679			if(type == "img"){
680				self.setWidth(self.screen.width);
681				self.setHeight(self.screen.height);
682			}
683		};
684			
685		self.setBackfaceVisibility =  function(){
686			self.screen.style.backfaceVisibility = "visible";
687			self.screen.style.webkitBackfaceVisibility = "visible";
688			self.screen.style.MozBackfaceVisibility = "visible";		
689		};
690		
691		//###################################################//
692		/* set / get various peoperties.*/
693		//###################################################//
694		self.setSelectable = function(val){
695			
696			if(!val){
697				self.screen.style.userSelect = "none";
698				self.screen.style.MozUserSelect = "none";
699				self.screen.style.webkitUserSelect = "none";
700				self.screen.style.khtmlUserSelect = "none";
701				self.screen.style.oUserSelect = "none";
702				self.screen.style.msUserSelect = "none";
703				self.screen.msUserSelect = "none";
704				self.screen.ondragstart = function(e){return false;};
705				self.screen.onselectstart = function(){return false;};
706				self.screen.ontouchstart = function(){return false;};
707				self.screen.style.webkitTouchCallout='none';
708				self.hasBeenSetSelectable_bl = true;
709			}else{
710				if(FWDUtils.isFirefox || FWDUtils.isIE){
711					self.screen.style.userSelect = "element";
712					self.screen.style.MozUserSelect = "element";
713					self.screen.style.msUserSelect = "element";
714				}else if(FWDUtils.isSafari){
715					self.screen.style.userSelect = "text";
716					self.screen.style.webkitUserSelect = "text";
717				}else{
718					self.screen.style.userSelect = "auto";
719					self.screen.style.webkitUserSelect = "auto";
720				}
721				
722				self.screen.style.khtmlUserSelect = "auto";
723				self.screen.style.oUserSelect = "auto";
724				
725				if(FWDUtils.isIEAndLessThen9){
726					self.screen.ondragstart = null;
727					self.screen.onselectstart = null;
728					self.screen.ontouchstart = null;
729				}else{
730					self.screen.ondragstart = undefined;
731					self.screen.onselectstart = undefined;
732					self.screen.ontouchstart = undefined;
733				}
734				
735				self.screen.style.webkitTouchCallout='default';
736				self.hasBeenSetSelectable_bl = false;
737			}
738			
739		};
740		
741		self.getScreen = function(){
742			return self.screen;
743		};
744		
745		self.setVisible = function(val){
746			self.visible = val;
747			if(self.visible == true){
748				self.screen.style.visibility = "visible";
749			}else{
750				self.screen.style.visibility = "hidden";
751			}
752		};
753		
754		self.getVisible = function(){
755			return self.visible;
756		};
757			
758		self.setResizableSizeAfterParent = function(){
759			self.screen.style.width = "100%";
760			self.screen.style.height = "100%";
761		};
762		
763		self.getStyle = function(){
764			return self.screen.style;
765		};
766		
767		self.setOverflow = function(val){
768			self.overflow = val;
769			self.screen.style.overflow = self.overflow;
770		};
771		
772		self.setPosition = function(val){
773			self.position = val;
774			self.screen.style.position = self.position;
775		};
776		
777		self.setDisplay = function(val){
778			self.display = val;
779			self.screen.style.display = self.display;
780		};
781		
782		self.setButtonMode = function(val){
783			self.buttonMode = val;
784			if(self.buttonMode ==  true){
785				self.screen.style.cursor = "pointer";
786			}else{
787				self.screen.style.cursor = "default";
788			}
789		};
790		
791		self.setBkColor = function(val){
792			self.screen.style.backgroundColor = val;
793		};
794		
795		self.setInnerHTML = function(val){
796			self.innerHTML = val;
797			self.screen.innerHTML = self.innerHTML;
798		};
799		
800		self.getInnerHTML = function(){
801			return self.innerHTML;
802		};
803		
804		self.getRect = function(){
805			return self.screen.getBoundingClientRect();
806		};
807		
808		self.setAlpha = function(val){
809			self.alpha = val;
810			if(self.opacityType == "opacity"){
811				self.screen.style.opacity = self.alpha;
812			}else if(self.opacityType == "filter"){
813				self.screen.style.filter = "alpha(opacity=" + self.alpha * 100 + ")";
814				self.screen.style.filter = "progid:DXImageTransform.Microsoft.Alpha(Opacity=" + Math.round(self.alpha * 100) + ")";
815			}
816		};
817		
818		self.getAlpha = function(){
819			return self.alpha;
820		};
821		
822		self.getRect = function(){
823			return self.screen.getBoundingClientRect();
824		};
825		
826		self.getGlobalX = function(){
827			return self.getRect().left;
828		};
829		
830		self.getGlobalY = function(){
831			return self.getRect().top;
832		};
833		
834		self.setX = function(val){
835			self.x = val;
836			if(self.hasTransform3d_bl){
837				self.screen.style[self.transform] = 'translate3d(' + self.x + 'px,' + self.y + 'px,0)';
838			}else if(self.hasTransform2d_bl){
839				self.screen.style[self.transform] = 'translate(' + self.x + 'px,' + self.y + 'px)';
840			}else{
841				self.screen.style.left = self.x + "px";
842			}
843		};
844		
845		self.getX = function(){
846			return  self.x;
847		};
848		
849		self.setY = function(val){
850			self.y = val;
851			if(self.hasTransform3d_bl){
852				self.screen.style[self.transform] = 'translate3d(' + self.x + 'px,' + self.y + 'px,0)';	
853			}else if(self.hasTransform2d_bl){
854				self.screen.style[self.transform] = 'translate(' + self.x + 'px,' + self.y + 'px)';
855			}else{
856				self.screen.style.top = self.y + "px";
857			}
858		};
859		
860		self.getY = function(){
861			return  self.y;
862		};
863		
864		self.setWidth = function(val){
865			self.w = val;
866			if(self.type == "img"){
867				self.screen.width = self.w;
868				self.screen.style.width = self.w + "px";
869			}else{
870				self.screen.style.width = self.w + "px";
871			}
872		};
873		
874		self.getWidth = function(){
875			if(self.type == "div" || self.type == "input"){
876				if(self.screen.offsetWidth != 0) return  self.screen.offsetWidth;
877				return self.w;
878			}else if(self.type == "img"){
879				if(self.screen.offsetWidth != 0) return  self.screen.offsetWidth;
880				if(self.screen.width != 0) return  self.screen.width;
881				return self._w;
882			}else if( self.type == "canvas"){
883				if(self.screen.offsetWidth != 0) return  self.screen.offsetWidth;
884				return self.w;
885			}
886		};
887		
888		self.setHeight = function(val){
889			self.h = val;
890			if(self.type == "img"){
891				self.screen.height = self.h;
892				self.screen.style.height = self.h + "px";
893			}else{
894				self.screen.style.height = self.h + "px";
895			}
896		};
897		
898		self.getHeight = function(){
899			if(self.type == "div" || self.type == "input"){
900				if(self.screen.offsetHeight != 0) return  self.screen.offsetHeight;
901				return self.h;
902			}else if(self.type == "img"){
903				if(self.screen.offsetHeight != 0) return  self.screen.offsetHeight;
904				if(self.screen.height != 0) return  self.screen.height;
905				return self.h;
906			}else if(self.type == "canvas"){
907				if(self.screen.offsetHeight != 0) return  self.screen.offsetHeight;
908				return self.h;
909			}
910		};
911		
912		//#####################################//
913		/* DOM list */
914		//#####################################//
915		self.addChild = function(e){
916			if(self.contains(e)){	
917				self.children_ar.splice(FWDUtils.indexOfArray(self.children_ar, e), 1);
918				self.children_ar.push(e);
919				self.screen.appendChild(e.screen);
920			}else{
921				self.children_ar.push(e);
922				self.screen.appendChild(e.screen);
923			}
924		};
925		
926		self.removeChild = function(e){
927			if(self.contains(e)){
928				self.children_ar.splice(FWDUtils.indexOfArray(self.children_ar, e), 1);
929				self.screen.removeChild(e.screen);
930			}else{
931				//console.log(arguments.callee.caller.toString())
932				throw Error("##removeChild()## Child dose't exist, it can't be removed!");
933			};
934		};
935		
936		self.contains = function(e){
937			if(FWDUtils.indexOfArray(self.children_ar, e) == -1){
938				return false;
939			}else{
940				return true;
941			}
942		};
943		
944		self.addChildAt = function(e, index){
945			if(self.getNumChildren() == 0){
946				self.children_ar.push(e);
947				self.screen.appendChild(e.screen);
948			}else if(index == 1){
949				self.screen.insertBefore(e.screen, self.children_ar[0].screen);
950				self.screen.insertBefore(self.children_ar[0].screen, e.screen);	
951				if(self.contains(e)){
952					self.children_ar.splice(FWDUtils.indexOfArray(self.children_ar, e), 1, e);
953				}else{
954					self.children_ar.splice(FWDUtils.indexOfArray(self.children_ar, e), 0, e);
955				}
956			}else{
957				if(index < 0  || index > self.getNumChildren() -1) throw Error("##getChildAt()## Index out of bounds!");
958				
959				self.screen.insertBefore(e.screen, self.children_ar[index].screen);
960				if(self.contains(e)){
961					self.children_ar.splice(FWDUtils.indexOfArray(self.children_ar, e), 1, e);
962				}else{
963					self.children_ar.splice(FWDUtils.indexOfArray(self.children_ar, e), 0, e);
964				}
965			}
966		};
967		
968		self.getChildAt = function(index){
969			if(index < 0  || index > self.getNumChildren() -1) throw Error("##getChildAt()## Index out of bounds!");
970			if(self.getNumChildren() == 0) throw Error("##getChildAt## Child dose not exist!");
971			return self.children_ar[index];
972		};
973		
974		self.getChildIndex = function(child){
975			if(self.contains(child)){
976				return FWDUtils.indexOfArray(self.children_ar, child);
977			}
978			return 0;
979		};
980		
981		self.removeChildAtZero = function(){
982			self.screen.removeChild(self.children_ar[0].screen);
983			self.children_ar.shift();
984		};
985		
986		self.getNumChildren = function(){
987			return self.children_ar.length;
988		};
989		
990		
991		//################################//
992		/* event dispatcher */
993		//#################################//
994		self.addListener = function (type, listener){
995	    	
996	    	if(type == undefined) throw Error("type is required.");
997	    	if(typeof type === "object") throw Error("type must be of type String.");
998	    	if(typeof listener != "function") throw Error("listener must be of type Function.");
999	    	
1000	    	
1001	        var event = {};
1002	        event.type = type;
1003	        event.listener = listener;
1004	        event.target = this;
1005	        this.listeners.events_ar.push(event);
1006	    };
1007	    
1008	    self.dispatchEvent = function(type, props){
1009	    	if(this.listeners == null) return;
1010	    	if(type == undefined) throw Error("type is required.");
1011	    	if(typeof type === "object") throw Error("type must be of type String.");
1012	    	
1013	        for (var i=0, len=this.listeners.events_ar.length; i < len; i++){
1014	        	if(this.listeners.events_ar[i].target === this && this.listeners.events_ar[i].type === type){		
1015	    	        if(props){
1016	    	        	for(var prop in props){
1017	    	        		this.listeners.events_ar[i][prop] = props[prop];
1018	    	        	}
1019	    	        }
1020	        		this.listeners.events_ar[i].listener.call(this, this.listeners.events_ar[i]);
1021	        	}
1022	        }
1023	    };
1024	    
1025	    self.removeListener = function(type, listener){
1026	    	
1027	    	if(type == undefined) throw Error("type is required.");
1028	    	if(typeof type === "object") throw Error("type must be of type String.");
1029	    	if(typeof listener != "function") throw Error("listener must be of type Function." + type);
1030	    	
1031	        for (var i=0, len=this.listeners.events_ar.length; i < len; i++){
1032	        	if(this.listeners.events_ar[i].target === this 
1033	        			&& this.listeners.events_ar[i].type === type
1034	        			&& this.listeners.events_ar[i].listener ===  listener
1035	        	){
1036	        		this.listeners.events_ar.splice(i,1);
1037	        		break;
1038	        	}
1039	        }  
1040	    };
1041	
1042	    /* init */
1043		self.init();
1044	};
1045	
1046	window.FWDSDisplayObject = FWDSDisplayObject;
1047}(window));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.