Извадих част от сорс кода на Skype !
Публикувано на: 29 Апр 2007 19:00
Мисля ,че ще ви бъде интересно ! Скайп е писан на С++.
function fireSingleClick(elementid) {
if(closeLong) { closeLong = false; return true; }
var elements = getSkypecastDivs();
for(var i = 0; i < elements.length; i++) {
var element = document.getElementById(elements);
myClassname = element.className;
myClassname = myClassname.replace(/open/,"");
element.className = myClassname;
var elementrow = document.getElementById(elements+"-longdesc");
elementrow.style.display = "none";
}
currentElement = document.getElementById(elementid);
if(currentElement) {
var elementrow = document.getElementById(elementid+"-longdesc");
var emptyP = new RegExp("<p><\/p>", "i")
if(!elementrow.innerHTML.match(emptyP)) {
myClassname = currentElement.className;
myClassname = myClassname.replace(/hover/,"");
currentElement.className = myClassname + " open";
elementrow.style.display = "block";
}
}
}
var closeLong = false;
function closeLongdesc(element) {
closeLong = true;
var longdescElement = document.getElementById(element);
myClassname = longdescElement.className;
myClassname = myClassname.replace(/open/,"");
longdescElement.className = myClassname;
var elementrow = document.getElementById(element+"-longdesc");
elementrow.style.display = "none";
return false;
}
function fireDoubleClick(elementid){
document.selection.empty();
if(elementid.substring(10, 11) == 0) return false;
self.location = 'skype:' + elementid.substring(12);
}
var c;
function detectSingleClick(elementid) {
c = setTimeout('fireSingleClick("'+elementid+'")', 100);
}
function detectDoubleClick(elementid) {
clearTimeout(c);
fireDoubleClick(elementid);
}
function getSkypecastDivs() {
var i;
var objlist = [];
var v = document.getElementsByTagName("DIV");
for(i=0; i<v.length; i++){
var myid = v.id;
if(v.className.match(/skypecast-single/)){
objlist.push(myid);
}
}
return(objlist);
}
function attacheMouseEvents() {
var elements = getSkypecastDivs();
for(var i = 0; i < elements.length; i++) {
var element = document.getElementById(elements);
if(!element) {
} else {
element.onmouseover = function () {
if(this.className.match(/open/)) {
} else {
myClassname = this.className;
this.className = myClassname + " hover";
}
}
element.onmouseout = function () {
myClassname = this.className;
myClassname = myClassname.replace(/hover/,"")
this.className = myClassname;
}
element.onclick = function() {
detectSingleClick(this.id);
}
element.ondblclick = function() {
detectDoubleClick(this.id);
}
}
}
}
function fixHeight() {
var headElement = document.getElementById('head');
var headElementHeight = 0;
if (headElement) {
headElementHeight = headElement.offsetHeight;
}
if (document.documentElement.clientHeight > headElementHeight) {
var newHeight = document.documentElement.clientHeight - headElementHeight;
if(document.getElementById('livetab-promo') && document.getElementById('livetab-promo').offsetHeight) {
var bannerElement = document.getElementById('livetab-promo');
newHeight = newHeight - bannerElement.offsetHeight;
}
if(document.getElementById('livetab-promo-pro') && document.getElementById('livetab-promo-pro').offsetHeight) {
var bannerElement = document.getElementById('livetab-promo-pro');
newHeight = newHeight - bannerElement.offsetHeight;
}
scrollElement = document.getElementById("scroll-content");
scrollElement.style.height = newHeight + "px";
}
}
var needReload = false;
var isBlured = false;
window.onload = function(){
attacheMouseEvents();
fixHeight();
InitializeTimer();
}
window.onresize = function() {
fixHeight();
}
function showhideAbout(state) {
var descText = document.getElementById("about-text");
var descLink = document.getElementById("about-link");
switch(state) {
case "show":
descText.style.display = "block";
descLink.style.display = "none";
break;
case "hide":
var descText = document.getElementById("about-text");
descText.style.display = "none";
descLink.style.display = "block";
break;
default:
var descText = document.getElementById("about-text");
descText.style.display = "block";
}
fixHeight();
}
window.onblur = function(){
isBlured = true;
}
window.onfocus = function(){
isBlured = false;
if (needReload){
ReloadPage();
}
}
function InitializeTimer()
{
delay = 300000;
myTimer = self.setTimeout("ReloadPage()", delay)
ReloadAds();
}
function ReloadPage()
{
if(!isBlured){
window.location.reload();
} else {
needReload = true;
}
}
var rotate_count = 0;
function ReloadAds(){
adRotateDelay = 5000;
adTimer = self.setTimeout("ReloadAds()", adRotateDelay);
document.getElementById("ad-label").innerHTML = adLabels[rotate_count % 3];
rotate_count++;
function fireSingleClick(elementid) {
if(closeLong) { closeLong = false; return true; }
var elements = getSkypecastDivs();
for(var i = 0; i < elements.length; i++) {
var element = document.getElementById(elements);
myClassname = element.className;
myClassname = myClassname.replace(/open/,"");
element.className = myClassname;
var elementrow = document.getElementById(elements+"-longdesc");
elementrow.style.display = "none";
}
currentElement = document.getElementById(elementid);
if(currentElement) {
var elementrow = document.getElementById(elementid+"-longdesc");
var emptyP = new RegExp("<p><\/p>", "i")
if(!elementrow.innerHTML.match(emptyP)) {
myClassname = currentElement.className;
myClassname = myClassname.replace(/hover/,"");
currentElement.className = myClassname + " open";
elementrow.style.display = "block";
}
}
}
var closeLong = false;
function closeLongdesc(element) {
closeLong = true;
var longdescElement = document.getElementById(element);
myClassname = longdescElement.className;
myClassname = myClassname.replace(/open/,"");
longdescElement.className = myClassname;
var elementrow = document.getElementById(element+"-longdesc");
elementrow.style.display = "none";
return false;
}
function fireDoubleClick(elementid){
document.selection.empty();
if(elementid.substring(10, 11) == 0) return false;
self.location = 'skype:' + elementid.substring(12);
}
var c;
function detectSingleClick(elementid) {
c = setTimeout('fireSingleClick("'+elementid+'")', 100);
}
function detectDoubleClick(elementid) {
clearTimeout(c);
fireDoubleClick(elementid);
}
function getSkypecastDivs() {
var i;
var objlist = [];
var v = document.getElementsByTagName("DIV");
for(i=0; i<v.length; i++){
var myid = v.id;
if(v.className.match(/skypecast-single/)){
objlist.push(myid);
}
}
return(objlist);
}
function attacheMouseEvents() {
var elements = getSkypecastDivs();
for(var i = 0; i < elements.length; i++) {
var element = document.getElementById(elements);
if(!element) {
} else {
element.onmouseover = function () {
if(this.className.match(/open/)) {
} else {
myClassname = this.className;
this.className = myClassname + " hover";
}
}
element.onmouseout = function () {
myClassname = this.className;
myClassname = myClassname.replace(/hover/,"")
this.className = myClassname;
}
element.onclick = function() {
detectSingleClick(this.id);
}
element.ondblclick = function() {
detectDoubleClick(this.id);
}
}
}
}
function fixHeight() {
var headElement = document.getElementById('head');
var headElementHeight = 0;
if (headElement) {
headElementHeight = headElement.offsetHeight;
}
if (document.documentElement.clientHeight > headElementHeight) {
var newHeight = document.documentElement.clientHeight - headElementHeight;
if(document.getElementById('livetab-promo') && document.getElementById('livetab-promo').offsetHeight) {
var bannerElement = document.getElementById('livetab-promo');
newHeight = newHeight - bannerElement.offsetHeight;
}
if(document.getElementById('livetab-promo-pro') && document.getElementById('livetab-promo-pro').offsetHeight) {
var bannerElement = document.getElementById('livetab-promo-pro');
newHeight = newHeight - bannerElement.offsetHeight;
}
scrollElement = document.getElementById("scroll-content");
scrollElement.style.height = newHeight + "px";
}
}
var needReload = false;
var isBlured = false;
window.onload = function(){
attacheMouseEvents();
fixHeight();
InitializeTimer();
}
window.onresize = function() {
fixHeight();
}
function showhideAbout(state) {
var descText = document.getElementById("about-text");
var descLink = document.getElementById("about-link");
switch(state) {
case "show":
descText.style.display = "block";
descLink.style.display = "none";
break;
case "hide":
var descText = document.getElementById("about-text");
descText.style.display = "none";
descLink.style.display = "block";
break;
default:
var descText = document.getElementById("about-text");
descText.style.display = "block";
}
fixHeight();
}
window.onblur = function(){
isBlured = true;
}
window.onfocus = function(){
isBlured = false;
if (needReload){
ReloadPage();
}
}
function InitializeTimer()
{
delay = 300000;
myTimer = self.setTimeout("ReloadPage()", delay)
ReloadAds();
}
function ReloadPage()
{
if(!isBlured){
window.location.reload();
} else {
needReload = true;
}
}
var rotate_count = 0;
function ReloadAds(){
adRotateDelay = 5000;
adTimer = self.setTimeout("ReloadAds()", adRotateDelay);
document.getElementById("ad-label").innerHTML = adLabels[rotate_count % 3];
rotate_count++;