
/* 

------------------------------------------------------------------------------------------------------------------

  Craig A McKercher
  Portfolio
  (c) 2009

  JavaScript

------------------------------------------------------------------------------------------------------------------


  1. SWF Object v2.2
     - Flash_Object (tag_id , file_name , width , height);

  2. XML Control
     - Load_XMLdoc (url);
     - Get_NodeValueA (xmlDoc , i , Tag_Name);
     - Get_NodeValueB (Category , Btn_Number , Tag_Name); 

  3. Clock Control 
     - Clock_Control ();

  4. CountDown
     - Calc_Seconds (Secs , Num1 , Num2);
     - CountDown (i , Info , Secs);
     - Start_CountDown (i , Target_Date);

  5. Alarm
     - Start_Alarm ();
     - Alarm_Update (Msg , Color , Sound_Name);
     - Check_Alarm (Time_Stamp , Stage);
     - Check_Cookie ();
     - Shake_Start (Count);
     - Get_Hex (Color);
     - Set_Hex (Hex_Array);
     - Change_Hex (Hex_Array_1 , Hex_Array_2); 
     - Color_Control (Color);

  6. Object Animation
     - Open_Curtain (xMove , yMove);
     - Curtain_Start (yMove);
     - Light_Drop (yMove);

  7. Player Control
     - Play_Music (Song_Name , Random_Play , Lock_Song);
     - Player_Right_Click (Event);
     - Player_Control ();
     - Player_Stop (); 
     - Random_Btn (Select);

  8. Navigation Sound
     - Nav_Sound (Sound_Num);

  9. Image Gallery
     - Show_Image (Show , i);
     - Fade_1 (i , Element_Id);
     - Fade_2 (DirN , Element_Id);
     - Show_Image (i);
     - Swap_Image (i);
     - Update_Info (info , num);
     - Image_Info (info , i);

  10. Projects
     - Id_Number (Object);
     - Category_Number (Object);
     - Play_Song (Object);
     - Play_Flash (Object);
     - Show_Info (Object);
     - Save_File (Object , type);
     - Open_Link (Object , type);
     - Flash_Link (Object);
     - Effect_1 (count , x , i);
     - Effect_2 (count , x , i);

  11. Blogs
     - Load_Frame (i);
     - Hover_Anchor (i);
     - Hover_Blog ();
     - Download_Resume ();

  12. Links
     - View_Info (Type , i , h1 , h2);

  13. Contact Form
     - Fade_Element (Fade_Value , DirN , Rate , Element_Id , Pause);
     - Validate_Form ();

  14. Copyright
     - Right_Click (Event);
     - Copyright ();

  15. Navigation Effect
     - Style_Start (Type) 
     - Style_Effect (Count , Type);


*/



/* 
------------------------------------------------------------------------------------------------------------------

  1. SWF Object v2.2 :

------------------------------------------------------------------------------------------------------------------
*/


  Flash_Object = function (tag_id , file_name , width , height) 
  {
    var flashvars = false;
    var params = 
    {
      menu: "false", 
      quality: "high",
      wmode: "transparent",
      swLiveConnect: "true",
      allowScriptAccess: "sameDomain"
    }
    var attributes = 
    {  
      id: tag_id,  
      name: tag_id
    }
    swfobject.embedSWF(file_name , tag_id , width , height , "10.0.0" , "swf/express_install.swf" , flashvars , params , attributes);
  }


/* 
------------------------------------------------------------------------------------------------------------------

  2. XML Control :

------------------------------------------------------------------------------------------------------------------
*/


  Load_XMLdoc = function (url)
  {
    if (window.ActiveXObject)
    {
      var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

      xmlDoc.async = false;
      xmlDoc.load(url);
      return xmlDoc;
    }
      else 
    {
      if (document.implementation.createDocument)
      {
        var xmlDoc = document.implementation.createDocument("" , "" , null);

        xmlDoc.async = false;
        xmlDoc.load(url);
        return xmlDoc;
      }
        else
      {
        alert("Error Loading XML");
        return null;
      }
    }
  }

  Get_NodeValueA = function (xmlDoc , i , Tag_Name) 
  {
    var X1 = xmlDoc.getElementsByTagName(Tag_Name);

    return X1[i].childNodes[0].nodeValue;
  }

  Get_NodeValueB = function (Category , i , Tag_Name) 
  {
    var X1 = xmlDoc.getElementsByTagName(Category)[0];
    var X2 = X1.getElementsByTagName(Tag_Name);

    return X2[i].childNodes[0].nodeValue;
  }


/* 
------------------------------------------------------------------------------------------------------------------

  3. Clock Control :

------------------------------------------------------------------------------------------------------------------
*/


  var Days = new Array('Sunday' , 'Monday' , 'Tuesday' , 'Wednesday' , 'Thursday' , 'Friday' , 'Saturday');
  var Months = new Array('Jan' , 'Feb' , 'Mar' , 'April' , 'May' , 'June' , 'July' , 'Aug' , 'Sept' , 'Oct' , 'Nov' , 'Dec');

  Check_Num = function (Num) 
  {
    var Calc = Num.toString();

    if (Calc.length < 2)
    {
      Calc = "0" + Calc;
    }
    return Calc;
  }

  Clock_Control = function ()
  {
    var Today = new Date();

    var Hr = Today.getHours();
    var Min = Check_Num(Today.getMinutes());
    var Sec = Check_Num(Today.getSeconds());

    if (Hr <= 12) 
    {    
      Ext = "am";
    } 
      else 
    {
      Hr -= 12; 
      Ext = "pm";
    }

    var Text_1 = Days[Today.getDay()];
    var Text_2 = Today.getDate() + " " + Months[Today.getMonth()] + " " + Today.getFullYear();
    var Text_3 = Hr + ":" + Min + ":" + Sec + " " + Ext;

    document.getElementById('clock_day').innerHTML = Text_1;
    document.getElementById('clock_date').innerHTML = Text_2;
    document.getElementById('clock_time').innerHTML = Text_3;

    setTimeout("Clock_Control()" , 1000);
  }


/* 
------------------------------------------------------------------------------------------------------------------

  4. CountDown :

------------------------------------------------------------------------------------------------------------------
*/


  Calc_Seconds = function (Seconds , Num1 , Num2) 
  {
    var Calc = ((Math.floor(Seconds / Num1)) % Num2 ).toString();

    if (Calc.length < 2)
    {
      Calc = "0" + Calc;
    }
    return "<b>" + Calc + "</b>";
  }

  CountDown = function (Seconds , i) 
  {
    var Txt = "";
    var Tag_Var = document.getElementById("countdown_timer_" + i);

    if (Seconds > 86400) 
    { Txt += Calc_Seconds(Seconds , 86400 , 365)  + " Days "; }

    if (Seconds > 3600)
    { Txt += Calc_Seconds(Seconds , 3600 , 24) + " Hours "; }

    if (Seconds > 60)
    { Txt += Calc_Seconds(Seconds , 60 , 60) + " Minutes "; }

    if (Seconds > 0)
    {
      Txt += Calc_Seconds(Seconds , 1 , 60) + " Seconds";

      Tag_Var.innerHTML = Txt;
      Seconds--;
      setTimeout("CountDown(" + Seconds + "," + i + ")" , 1000);
    }
      else
    {
      Txt = "< Count Down Complete >";
      Tag_Var.innerHTML = Txt;
    }
  }

  Start_CountDown = function () 
  {
    for (var i=1;i<=3;i++)
    { 
      var Target_Date = document.getElementById("countdown_date_" + i).innerHTML;

      var DTarget = new Date(Target_Date);
      var DNow = new Date();
      var DDiff = new Date(DTarget - DNow);

      CountDown(Math.floor(DDiff.valueOf() / 1000) , i);
    }
  }


/*
------------------------------------------------------------------------------------------------------------------

  5. Alarm :

------------------------------------------------------------------------------------------------------------------ 
*/


  var Alarm_Timer = 0;
  var Shake_Timer = 0;
  var Color_Timer = 0;

  var Alarm_Pause = 60;
  var Pause_Step = 10;

  var Hex_Index = "0123456789abcdef";

  Start_Alarm = function ()
  { 
    document.body.style.background = "#000000";

    var DNow = new Date();
    var DTarget = new Date(Check_Cookie());
    var DDiff = new Date(DNow - DTarget);
    var DDiff_Secs = (DDiff.valueOf() / 1000);

    var Check = Math.floor((DDiff_Secs - Alarm_Pause) / Pause_Step);

    setTimeout("Check_Alarm('" + Check_Cookie() + "'," + Check + ")" , 1000);
  }

  Alarm_Update = function (Msg , Color , Sound_Name) 
  {
    document.getElementById("alarm_info").innerHTML = Msg; 

    Fade_Element(1 , -1 , 0.05 , "alarm_info" , 35);
    Shake_Start(50);
    Color_Control(Color);
    
    try {
      var Flash_Var = document.getElementById("flash_player");

      Flash_Var.SetVariable("File_Name" , Sound_Name);
      Flash_Var.SetVariable("Play_Sound" , "true");
    }
    catch(err) {}
  }

  Check_Alarm = function (Time_Stamp , Stage) 
  {
    var Complete = false;

    var DNow = new Date();
    var DTarget = new Date(Time_Stamp);
    var DDiff = new Date(DNow - DTarget);
    var DDiff_Secs = (DDiff.valueOf() / 1000);

    if (Alarm_Pause < DDiff_Secs)
    {
      var Check = Math.floor((DDiff_Secs - Alarm_Pause) / Pause_Step);

      switch(Check)
      {
        case 0 :

          if (Stage != Check) 
          {
            Stage = Check;
            Alarm_Update("Welcome" , "#000000" , "mp3s/Stamp_1.mp3");
          }
          break;

        case 1 :

          if (Stage != Check) 
          {
            Stage = Check;
            Alarm_Update((Check*Pause_Step) + " Second Warning" ,"#100000" , "mp3s/Stamp_2.mp3");
          }
          break;

        case 2 :

          if (Stage != Check) 
          {
            Stage = Check;
            Alarm_Update((Check*Pause_Step) + " Second Warning" , "#200000" , "mp3s/Stamp_2.mp3");
          }
          break;

        case 3 :
  
          if (Stage != Check) 
          {
            Stage = Check;
            Alarm_Update((Check*Pause_Step) + " Second Warning" , "#300000" , "mp3s/Stamp_2.mp3");
          }
          break;

        case 4 :
  
          if (Stage != Check) 
          {
            Stage = Check;
            Alarm_Update("Don't Panic ,..." , "#400000" , "mp3s/Stamp_2.mp3");
          }
          break;

        case 5 :

          if (Stage != Check) 
          {
            Stage = Check;
            Alarm_Update("Normality Restored" , "#000000" , "mp3s/Stamp_3.mp3");
          }
          break;

        default :

          Complete = true;

          document.cookie = "";
      }
    }

    if (!Complete)
    {
      clearTimeout(Alarm_Timer);
      Alarm_Timer = setTimeout("Check_Alarm('" + Time_Stamp + "'," + Stage + ")" , 1000);
    }
  }

  Check_Cookie = function ()
  {
    if (document.cookie)
    {
      var Cookies = document.cookie.split(";");
      var Time_Stamp = (Cookies[0].split("=")[1]);
    }
      else
    {
      var Time_Stamp = new Date();
      var Expire_Date = new Date();
    
      Expire_Date.setTime(Expire_Date.getTime() + (60*60*1000));

      document.cookie = "Time_Stamp=" + Time_Stamp.toGMTString() + ";Expires=" + Expire_Date.toGMTString() + ";path=/";
    } 
    return Time_Stamp;
  }

  Shake_Start = function (Count)
  {
    Count--;

    this.moveBy(0,2);
    this.moveBy(0,-2);
    this.moveBy(2,0);
    this.moveBy(-2,0);

    if (Count >0)
    {
      clearTimeout(Shake_Timer);
      Shake_Timer = setTimeout("Shake_Start(" + Count + ")" , 10);
    }
  }

  Get_Hex = function (Color) 
  {
    var Hex_Array = new Array(0 , 0 , 0 , 0 , 0 , 0 , 0);

    if (Color == undefined) 
    {
      var x1 = document.body.style.background.split("#");
      var x2 = x1[1];
    }
      else
    {
      var x1 = Color.split("#");
      var x2 = x1[1];
    }
  
    for (var i=1;i<=6;i++)
    {
      Hex_Array[i] = Hex_Index.indexOf(x2.substring((i - 1), i)); 
    }
    return Hex_Array;
  }

  Set_Hex = function (Hex_Array) 
  {
    var Hex = "#";

    for (var i=1;i<=6;i++)
    {
      Hex += Hex_Index.substring(Hex_Array[i] , Hex_Array[i]+1); 
    }
    document.body.style.background = Hex;
  }

  Change_Hex = function (Hex_Array_1 , Hex_Array_2) 
  {
    var Count = 0;

    for (var i=1;i<=3;i++)
    {
      var x1 = 16 * Hex_Array_1[(i*2) - 1] + Hex_Array_1[(i*2)];
      var x2 = 16 * Hex_Array_2[(i*2) - 1] + Hex_Array_2[(i*2)];

      if (x1 < x2) 
      {
        if (Hex_Array_1[(i * 2)] < 15) 
        {
        Hex_Array_1[(i * 2)]++;
        } 
          else 
        {
          if (Hex_Array_1[((i * 2) - 1)] < 15) 
          {
	    Hex_Array_1[(i * 2)] = 0;
	    Hex_Array_1[((i * 2) - 1)]++;
          }
        }
      }
        else
      {
        if (x1 > x2)
        {
          if (Hex_Array_1[(i * 2)] > 0) 
          {
	    Hex_Array_1[(i * 2)]--;
          } 
            else 
          {		
            if (Hex_Array_1[((i * 2) - 1)] > 0) 
            {
	      Hex_Array_1[(i * 2)] = 15;
	      Hex_Array_1[((i * 2) - 1)]--;
            }
          }
        }  
          else
        {
          Count++;
        }
      }
    } 

    Set_Hex(Hex_Array_1);

    if (Count == 3)
    {
      return false;
    }
      else
    {
      return true; 
    }
  }

  Color_Control = function (Color)
  {
    var x1 = Get_Hex();
    var x2 = Get_Hex(Color);

    if (Change_Hex(x1 , x2))
    { 
      clearTimeout(Color_Timer);
      Color_Timer = setTimeout("Color_Control('" + Color + "')" , 33);
    }
  }


/* 
------------------------------------------------------------------------------------------------------------------

  6. Object Animation :

------------------------------------------------------------------------------------------------------------------
*/


  if ((screen.height / screen.width) < 0.75) 
  {
    var xMax = 90;
    var yMax = 35;

    var xLampMax = 40;
  }
    else
  { 
    var xMax = 215;
    var yMax = 35;

    var xLampMax = -22;
  }

  Open_Curtain = function (xMove , yMove) 
  {
    if (xMove < xMax) 
    {
      document.getElementById("l_side").style.left = -xMove + "px";
      document.getElementById("r_side").style.right = -xMove + "px";

      xMove *= 1.05;
    }

    if (yMove < yMax)
    {
      document.getElementById("t_side").style.top = -yMove + "px";

      yMove *= 1.05;
    }

    if (yMove < yMax || xMove < xMax) 
    {
      Timer = setTimeout("Open_Curtain(" + xMove + "," + yMove + ")" , 10);
    }
  }

  Curtain_Start = function (yMove) 
  {
    document.getElementById("f_side").style.top = -yMove + "px";

    yMove *= 1.105;

    if (yMove < 600) 
    {
      Timer = setTimeout("Curtain_Start(" + yMove + ")" , 10);
    }
  }

  Light_Drop = function (yPos) 
  {
    document.getElementById("l_light").style.top = yPos + "px";
    document.getElementById("r_light").style.top = yPos + "px";

    yPos += 1;

    if (yPos < 10) 
    {
      Timer = setTimeout("Light_Drop(" + yPos + ")" , 10);
    } 
      else 
    {
      document.getElementById("l_light").style.top = "10px";
      document.getElementById("r_light").style.top = "10px";
    }
  }

  Lamp_Move = function (xPos , xMove) 
  {
    document.getElementById("l_lamp").style.left = xPos + "px";
    document.getElementById("r_lamp").style.right = xPos + "px";

    xMove *= 1.05;
    xPos += xMove;

    if (xPos <= xLampMax) 
    {
      Timer = setTimeout("Lamp_Move(" + xPos + "," + xMove + ")" , 10);
    } 
      else
    {
      document.getElementById("l_lamp").style.left = xLampMax + "px";
      document.getElementById("r_lamp").style.right = xLampMax + "px";
    }
  }


/* 
------------------------------------------------------------------------------------------------------------------

  7. Player Control :

------------------------------------------------------------------------------------------------------------------
*/


  Play_Music = function (Song_Name , Random_Play , Lock_Song) 
  {
    var Player_Var = document.getElementById("flash_player");

    Player_Var.SetVariable("File_Name" , Song_Name);
    Player_Var.SetVariable("Play_Song" , "true");
    Player_Var.SetVariable("Random_Play" , Random_Play);
    Player_Var.SetVariable("Lock_Song" , Lock_Song);
  }

  Player_Right_Click = function (Event) 
  {  
    var Msg = "Music Stopped";

    if ((navigator.appName == 'Microsoft Internet Explorer' && event.button == 2) || (navigator.appName == 'Netscape' && Event.which == 3)) 
    {
      document.getElementById("flash_player").SetVariable("Stop_Song" , "true");

      alert(Msg);
      return false;
    }  
    return true; 
  }

  Player_Stop = function ()
  {
    document.getElementById("flash_player").onmousedown = Player_Right_Click;
  }

  Random_Btn = function (Select) 
  {
    var Tag_Var = document.getElementById("rnd_btn");
    var Player_Var = document.getElementById("flash_player");

    if (Select)
    {
      Player_Var.SetVariable("Random_Play" , "true");
      Tag_Var.innerHTML = "Random";
      Tag_Var.style.textDecoration = "underline";
    }
      else
    {
      Player_Var.SetVariable("Random_Play" , "false");
      Tag_Var.innerHTML = "Continuous";
      Tag_Var.style.textDecoration = "none";
    }
  }


/* 
------------------------------------------------------------------------------------------------------------------

  8. Navigation Sound :

------------------------------------------------------------------------------------------------------------------
*/


  Nav_Sound = function (Sound_Num) 
  {
    switch(Sound_Num)
    {
      case 1 :

        var File_Name = "mp3s/Ping1.mp3";
        break;

      case 1 :

        var File_Name = "mp3s/Ping2.mp3";
    }

    document.getElementById("flash_player").SetVariable("File_Name" , File_Name);
    document.getElementById("flash_player").SetVariable("Play_Sound" , "true");
}


/* 
------------------------------------------------------------------------------------------------------------------

  9. Image Gallery :

------------------------------------------------------------------------------------------------------------------
*/


  var DirN = 1;
  var Current = 1;

  var Timer_1 = 0;
  var Timer_2 = 0;
  var Fade_Value_1 = 1;
  var Fade_Value_2 = 1;

  Show_Image = function (Show , i)
  {    
    if (Show) 
    {
      document.getElementById("gallery_info").innerHTML = "Image<br/><br/>" + document.getElementById("Img_" + i).title;

      if (Current != i)
      {  
        Current = i;
        DirN = -1; 
        clearTimeout(Timer_1);
        Fade_1(i , "image_container");
      }
        
      clearTimeout(Timer_2);
      Fade_2(-1 , "video");
    }
      else
    {
      document.getElementById("gallery_info").innerHTML = "YouTube Video";

      clearTimeout(Timer_2);
      Fade_2(1 , "video");
    }
  }

  Fade_1 = function (i , Element_Id)
  { 
    var Element = document.getElementById(Element_Id);
 
    if (Fade_Value_1 >= 0 && Fade_Value_1 <= 1) 
    {
      Fade_Value_1 += 0.1*DirN;
      Element.style.opacity = Fade_Value_1;
      Element.style.filter = 'alpha(opacity = ' + ( Fade_Value_1*100 ) + ')';
      Timer_1 = setTimeout("Fade_1(" + i + ",'" + Element_Id + "')" , 33);
    }
      else 
    {
      if (DirN == -1) 
      {
        DirN = 1;
        Fade_Value_1 = 0;
   
        Swap_Image(i , "Img_0");
  
        Timer_1 = setTimeout("Fade_1(" + i + ",'" + Element_Id + "')" , 33);
      }
        else
      {
        DirN = -1;
        Fade_Value_1 = 1;
      }
    }
  }
    
  Fade_2 = function (DirN , Element_Id)
  {  
    var Element = document.getElementById(Element_Id);

    if (Fade_Value_2 >= 0 && Fade_Value_2 <= 1)  
    {
      Fade_Value_2 += 0.1*DirN;
      Element.style.opacity = Fade_Value_2;
      Element.style.filter = 'alpha(opacity = ' + ( Fade_Value_2*100 ) + ')';

      Timer_2 = setTimeout("Fade_2(" + DirN + ",'" + Element_Id + "')" , 33);
    }
      else
    {
      if (DirN == -1) 
      {
        Fade_Value_2 = 0;
      } 
        else
      {
        Fade_Value_2 = 1;
      }
    }
  }

  Scale_Image = function (i)
  {
    var Image_Var = document.getElementById("Img_" + i);
    var Image_Factor = Image_Var.height / Image_Var.width;
  
    if (Image_Factor < 1) 
    {
      Image_Var.width = 125;
      Image_Var.height = Image_Var.width * Image_Factor;
    } 
      else 
    {
      Image_Var.height = 125;
      Image_Var.width = Image_Var.height / Image_Factor;
    }
    Image_Var.vspace = (( 125 - Image_Var.height ) / 2 );
  }

  Swap_Image = function (i)
  {
    var Image_Select_Var = document.getElementById("Img_0");

    Image_Select_Var.src = "http://" + Get_NodeValueA(xmlDoc , i , "file_name");
    Image_Select_Var.i = i;
    Image_Select_Var.onload = function () {

      var Image_Var = document.getElementById("Img_" + this.i);
      var Image_Factor = Image_Var.height / Image_Var.width;
  
      if (Image_Factor < 1) 
      {
        this.width = 340;
        this.height = this.width * Image_Factor;
      } 
        else 
      {
        this.height = 305;
        this.width = this.height / Image_Factor;
      }
      this.vspace = Math.max(0 , (( 305 - this.height ) / 2 ));
    }
  }

  Update_Info = function (info , num)
  {
    for (var i=1;i<=3;i++)
    {
      var Image_Num = 3 * Math.floor((num-1)/3) + i; 
      var Object = document.getElementById("Info_" + Image_Num);

      Object.innerHTML = info;
    }
  }

  Image_Info = function (info , i)
  {     
    var Object = document.getElementById("Info_" + i);

    if (Object.innerHTML == "")
    {
      Update_Info(info , i)
    }
      else
    {
      Update_Info("" , i)
    }      
  }   


/* 
------------------------------------------------------------------------------------------------------------------

  10. Projects :

------------------------------------------------------------------------------------------------------------------
*/


  Id_Number = function (Object) 
  {
    var Object_Id = Object.id;
    var Text_Id = Object_Id.split("_");

    return Text_Id[Text_Id.length - 1];   
  }

  Category_Number = function (Object) 
  {
    var Object_Id = Object.id;
    var Text_Id = Object_Id.split("_");

    return Text_Id[Text_Id.length - 2];   
  }

  Play_Song = function (Object)
  {
    var Btn_Number = Id_Number(Object);
    var Category = "music";
    var File_Name = Get_NodeValueB(Category , Btn_Number , "file_name");
 
    Change_Image(Playing , Btn_Number);

    document.getElementById("flash_player").SetVariable("File_Name" , File_Name);
    document.getElementById("flash_player").SetVariable("Play_Song" , "true");
  }

  Play_Flash = function (Object)
  {
    var Btn_Number = Id_Number(Object);
    var x = Category_Number(Object);
    var Category = Categories[x];
    var File_Name = Get_NodeValueB(Category , Btn_Number , "file_name");

    var Flash_Id = "Flash_" + x + "_" + Btn_Number;
    var Flash_Tag = document.getElementById(Flash_Id);

    if (Flash_Tag.style.display == "none") 
    {
      var Node = Flash_Tag.parentNode;
      Node.style.display = "block";

      Flash_Tag.style.display = "block";
      Flash_Object(Flash_Id , "http://www.gooism.com/swf/" + File_Name , "425" , "260");

      document.getElementById("Img_" + x + "_" + Btn_Number).src = "images/Btn_Press.gif";
      document.getElementById("Name_" + x + "_" + Btn_Number).style.color = "#ff9900";
    } 
      else 
    {  
      var Node = Flash_Tag.parentNode;
      Node.style.display = "none";

      Node.innerHTML = "<div id='" + Flash_Id + "'></div>";

      document.getElementById(Flash_Id).style.display = "none";

      document.getElementById("Img_" + x + "_" + Btn_Number).src = "images/Btn_Normal.gif";
      document.getElementById("Name_" + x + "_" + Btn_Number).style.color = "#ffe3b9";

      document.getElementById("Img_" + x + "_" + Btn_Number).Pressed = false;
    }
  }
   
  Show_Info = function (Object)
  {     
    var Object = document.getElementById("Info_" + Category_Number(Object) + "_" + Id_Number(Object));

    if (Object.style.display == "none")
    {
      Object.style.display = "block";
      Object.parentNode.innerHTML = '<td colSpan="6" id="Info_' + Category_Number(Object) + '_' + Id_Number(Object) + '" class="Info Type_2">' + Object.innerHTML + '</td>';
    }
      else
    {
      Object.style.display = "none";
    }      
  }  

  Save_File = function (Object , type)
  {
    var Btn_Number = Id_Number(Object);
    var Category = Categories[Category_Number(Object)];
    var File_Name = Get_NodeValueB(Category , Btn_Number , "file_name");

    window.open("http://www.gooism.com/"+type+"/forcedownload.Php?file="+File_Name+"&exit","php","width=0,height=0,top=300,left=500");
  }

  Open_Link = function (Object , type)
  {
    var Btn_Number = Id_Number(Object);
    var Category = Categories[Category_Number(Object)];

    switch (type) 
    {
      case "text" :

        var File_Name = Get_NodeValueB(Category , Btn_Number , "as_code");

        window.open(File_Name , "" , "height=" + screen.height + ",width=" + screen.width+"status=1,toolbar=1,location=1,menubar=1,directories=1,resizable=1,scrollbars=1 ,titlebar=1");

        break;
 
      case "html" :

        var File_Name = Get_NodeValueB(Category , Btn_Number , "file_name");

        Object.href = File_Name;
        Object.target = "_blank";

        break;
 
      case "link" :

        var File_Name = Get_NodeValueB(Category , Btn_Number , "newgrounds");

        window.open(File_Name , "" , "height=" + screen.height + ",width=" + screen.width+"status=1,toolbar=1,location=1,menubar=1,directories=1,resizable=1,scrollbars=1 ,titlebar=1");

        break;
    }
  }

  Flash_Link = function (Object)
  {
    var Btn_Number = Id_Number(Object);
    var Category = Categories[Category_Number(Object)];
    var File_Name = Get_NodeValueB(Category , Btn_Number , "file_name");

    HTML_String  = '<html>\n';
    HTML_String += '<head>\n';
    HTML_String += '<title>Flash Page</title>\n';
    HTML_String += '<link rel="stylesheet" href="css/portfolio.css" type="text/css" />\n';

    HTML_String += '<script'+' type="text/javascript" src="js/portfolio.js"></script'+'>\n';
    HTML_String += '<script'+' type="text/javascript" src="js/swfobject.js"></script'+'>\n';
    HTML_String += '<script'+' type="text/javascript">\n';
    HTML_String += 'function Initialize_Page()\n';
    HTML_String += '{\n';
    HTML_String += 'Flash_Object("flash_page" , "http://www.gooism.com/swf/' + File_Name + '" , "100%" , "100%");\n';
    HTML_String += '}\n';
    HTML_String += '</script'+'>\n';

    HTML_String += '</head>\n';
    HTML_String += '<body onload="Initialize_Page()">\n';
    HTML_String += '<div id="flash_page"></div>\n';
    HTML_String += '</body>\n';
    HTML_String += '</html>';
  
    Flash_Window = window.open("swf/" + File_Name);
    Flash_Window = Flash_Window.document;
    Flash_Window.write(HTML_String);
    Flash_Window.close();
  }

  Effect_1 = function (count , x , i)
  {
    count--;

    var Tag_Var = document.getElementById("Img_" + x + "_" + i);
 
    if (count > 0)
    {
      if ((!Tag_Var.Hover) && (!Tag_Var.Pressed))
      {
        Tag_Var.src = "images/Btn_Normal.gif";
      }

      if (i > (Category_Size[x] - 1))
      {
        x += 1;
        i = 1;
      }
        else
      {
        i++;
      }

      var Tag_Var = document.getElementById("Img_" + x + "_" + i);

      if ((!Tag_Var.Hover) && (!Tag_Var.Pressed))
      {
        Tag_Var.src = "images/Btn_Effect.gif";
      }

      Timer_1 = setTimeout("Effect_1(" + count + "," +  x  + "," + i + ")" , 100);
    } 
      else
    {
      if ((!Tag_Var.Hover) && (!Tag_Var.Pressed))
      {
        Tag_Var.src = "images/Btn_Normal.gif";
      }
    }
  }

  Effect_2 = function (count , x , i)
  {
    count--;

    var Tag_Var = document.getElementById("Img_" + x + "_" + i);

    if (count > 0)
    {
      if ((!Tag_Var.Hover) && (!Tag_Var.Pressed))
      {
        Tag_Var.src = "images/Btn_Normal.gif";
      }

      if (i < 2)
      {
        x -= 1;
        i = Category_Size[x];
      }
        else
      {
        i--;
      }

      var Tag_Var = document.getElementById("Img_" + x + "_" + i);

      if ((!Tag_Var.Hover) && (!Tag_Var.Pressed))
      {
        Tag_Var.src = "images/Btn_Effect.gif";
      }

      Timer_2 = setTimeout("Effect_2(" + count + "," +  x  + "," + i + ")" , 100);
    }
      else
    {
      if ((!Tag_Var.Hover) && (!Tag_Var.Pressed))
      {
        Tag_Var.src = "images/Btn_Normal.gif";
      }
    }
  }


/* 
------------------------------------------------------------------------------------------------------------------

  11. Blogs :

------------------------------------------------------------------------------------------------------------------
*/


  var Current_Page = 0;

  Load_Frame = function (i)
  { 
    var Object = document.getElementById("Blog_View");
      
    Current_Page = i;

    Object.src = "http://" + Get_NodeValueA(xmlDoc , i , "url"); 
  }

  Hover_Anchor = function (i)
  { 
    if (i == 11)
    {  
      document.getElementById("Link_Btn").style.display = "none";    
      document.getElementById("Download_Btn").style.display = "block";
    } 
      else 
    {
      document.getElementById("Link_Btn").style.display = "block";    
      document.getElementById("Download_Btn").style.display = "none";
    }   
  } 

  Hover_Blog = function ()
  { 
    var Object = document.getElementById("Blog_View");
    var Link = document.getElementById("Link_Btn");

    Link.href =  Object.src; 
    Link.title = Object.src;     
  } 

  Download_Resume = function ()
  { 
    window.open("http://www.gooism.com/docs/forcedownload.Php?file=CV2009.pdf&exit","php","width=0,height=0,top=300,left=500");   
  } 


/* 
------------------------------------------------------------------------------------------------------------------

  12. Links :

------------------------------------------------------------------------------------------------------------------
*/


  var Nav_Step = 5;

  Set_Opacity = function (Element , Fade_Value) { 

    Element.style.opacity = Fade_Value;
    Element.style.filter = 'alpha(opacity = ' + ( Fade_Value*100 ) + ')';
  }

  Get_Number = function (Value) {

    var Num = Value.split('px');

    return Number(Num[0]);
  }

  Get_ElementById = function (Id) {

    if (document.getElementById) {

      return document.getElementById(Id);

    } else {

      if (document.all) {

        return window.document.all[Id];

      } else {

        if (document.layers) {

          return window.document.layers[Id];
        }
      }
    }
  } 

  Open_Menu = function (Element_Id) {

    var Element = Get_ElementById(Element_Id);

    if (Element.Init == undefined) {
      Element.Init = true;
      Element.Height = Element.offsetHeight;
      Element.style.height = Element.offsetHeight + "px";
    }

    if (Get_Number(Element.style.height) + Nav_Step < Element.Height) {

      Element.style.height = (Get_Number(Element.style.height) + Nav_Step) + "px";
      Set_Opacity(Element,(Get_Number(Element.style.height)/Element.Height));

      clearTimeout(Element.Timer);
      Element.Timer = setTimeout("Open_Menu('" + Element_Id + "')",10);

    } else {

      clearTimeout(Element.Timer);
      Element.style.height = Element.Height + "px";
      Element.style.filter = "";
      Element.style.opacity = "";
    }
  }

  Close_Menu = function (Element_Id) {

    var Element = Get_ElementById(Element_Id);

    if (Element.Init == undefined) {

      Element.Init = true;
      Element.Height = Element.offsetHeight;
      Element.style.height = Element.offsetHeight + "px";
    }

    if (Get_Number(Element.style.height) - Nav_Step > 0) {

      if (Element.Count == 0 || Element.Count == undefined) {

        Set_Opacity(Element,(Get_Number(Element.style.height)/Element.Height));
        Element.style.height = (Get_Number(Element.style.height) - Nav_Step) + "px";

      } else {

        Element.Count--;
      }

      clearTimeout(Element.Timer);
      Element.Timer = setTimeout("Close_Menu('" + Element_Id + "')",10);

    } else {

      clearTimeout(Element.Timer);
      Set_Opacity(Element,0);
      Element.style.height = "0px";
    }   
  }


/* 
------------------------------------------------------------------------------------------------------------------

  13. Contact :

------------------------------------------------------------------------------------------------------------------
*/

  var Fade_Timer = 0;

  Fade_Element = function (Fade_Value , DirN , Rate , Element_Id , Pause)
  { 
    var Element = document.getElementById(Element_Id);
 
    if (Fade_Value >= 0 && Fade_Value <= 1) 
    {
      if (Pause == 0)
      {
        Fade_Value += Rate*DirN;
        Element.style.opacity = Fade_Value;
        Element.style.filter = 'alpha(opacity = ' + ( Fade_Value*100 ) + ')';
      }
        else
      {
        Element.style.opacity = Fade_Value;
        Element.style.filter = 'alpha(opacity = ' + ( Fade_Value*100 ) + ')';
        Pause--;
      }
      clearTimeout(Fade_Timer);
      Fade_Timer = setTimeout("Fade_Element(" + Fade_Value + "," + DirN + "," + Rate + ",'" + Element_Id + "'," + Pause + ")" , 33);
    }
  }
 
  Validate_Form = function ()
  {
    var Error_Msg = "";
    var First_Error = false;

    for (i=0;i<=2;i++) 
    {
      Tag = document.getElementById("contact_form").elements[i];
      Tag.style.background = "#000000";

      switch(Tag.name)
      {
        case "name":

          if (!Tag.value)
          {
            Error_Msg += "Please Enter A Name.<br/>"; 

            Tag.style.background = "#300000";
            if (!First_Error) 
            {
              First_Error = true;
              Tag.focus();
            }
          }

          break;

        case "email_from" :

          var Email_Filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

          if (!(Email_Filter.test(Tag.value))) 
          { 
            Error_Msg += "Please Enter A Valid Email Address.<br/>";

            Tag.style.background = "#300000";
            if (!First_Error) 
            {
              First_Error = true;
              Tag.focus();
            }
          }

          break;

        case "subject":

          if (!Tag.value)
          {
            Error_Msg += "Please Enter A Subject.<br/>"; 

            Tag.style.background = "#300000";
            if (!First_Error) 
            {
              First_Error = true;
              Tag.focus();
            }
        }
      }
    }

    if (Error_Msg != "") 
    {
      document.getElementById("processed").innerHTML = Error_Msg;
      Fade_Element(0 , 1 , 0.02 , "processed" , 50);

      return false;       
    } 
      else 
    {
      return true;
    }
  }


/*
------------------------------------------------------------------------------------------------------------------

  14. Copyright :

------------------------------------------------------------------------------------------------------------------
*/


  Right_Click = function (Event) 
  {
    var Msg = "(c) 2009 \r All Rights Reserved";

    if ((navigator.appName == 'Microsoft Internet Explorer' && event.button == 2) || (navigator.appName == 'Netscape' && Event.which == 3)) 
    {
      alert(Msg);
      return false;
    }  
    return true; 
  }

  Copyright = function () 
  {
    var Obj = document.getElementById("content");

    if (Obj != undefined) 
    {
      Obj.onmousedown = Right_Click;
    }
    document.body.oncontextmenu = function () { return false };
  }


/*
------------------------------------------------------------------------------------------------------------------

  15. Navigation Effect :

------------------------------------------------------------------------------------------------------------------
*/


  var Style_Timer = 0;

  Style_Start = function (Type) 
  { 
    var Count = 4;

    clearTimeout(Style_Timer);
    Style_Effect(Count,Type);
  } 

  var Style_Timer2 = 0;

  Style_Effect = function (Count , Type)
  {
    Count--;

    var Tag_Var1 = document.getElementById("banner");
    var Tag_Var2 = document.getElementById("content");
    if (Type == 2) 
    {
      var Tag_Var3 = document.getElementById("content_index");
    }

    if (Count % 2 < 1)
    {
      Tag_Var1.style.background = "#ffffff";
      Tag_Var2.style.background = "#ffffff";
      if (Type == 2) 
      {
        Tag_Var3.style.background = "#ffffff";
      }
    } 
      else
    {
      Tag_Var1.style.background = "#888888";
      Tag_Var2.style.background = "#888888";
      if (Type == 2) 
      {
        Tag_Var3.style.background = "#888888";
      }
    }  

    if (Count > 0)
    {
      clearTimeout(Style_Timer);
      Style_Timer = setTimeout("Style_Effect(" + Count + "," + Type + ")" , 100);
    } 
  }

  Set_Count = function (Element_Id,Value) {

    Get_ElementById(Element_Id).Count = Value;
  }

  Init_Dropdown = function () {

    var Nav_Step = 10;

    var a_Element = Get_ElementById("homenav").getElementsByTagName("a");
    a_Element[0].id = "homenavlink";
    a_Element = Get_ElementById(a_Element[0].id);

    var ul_Element = Get_ElementById("homenav").getElementsByTagName("ul");
    ul_Element[0].id = "subhomenav";
    ul_Element = Get_ElementById(ul_Element[0].id);

    a_Element.navid = ul_Element.id;

    a_Element.onmouseover = function ()  { Set_Count(this.navid,1); Open_Menu(this.navid); }
    a_Element.onmouseout = function ()  { Set_Count(this.navid,1); Close_Menu(this.navid); }

    ul_Element.style.display = "block";

    ul_Element.onmouseover= function () { Set_Count(this.id,0);  Open_Menu(this.id); }
    ul_Element.onmouseout = function () { Set_Count(this.id,10);  Close_Menu(this.id); }

    ul_Element.Init = true; 
    ul_Element.Height = ul_Element.offsetHeight;

    ul_Element.style.height = "0px";

    Set_Opacity(ul_Element,0);
  }

